From cef6db81d6d4d25cc5056b406c93a9870be9d85c Mon Sep 17 00:00:00 2001 From: MishkaRogachev Date: Wed, 26 Jun 2024 18:36:29 +0200 Subject: [PATCH] chore: static-typed structure for apiConfig --- src/app_service/common/network_constants.nim | 11 ------- .../service/accounts/dto/api_config.nim | 33 +++++++++++++++++++ .../accounts/dto/create_account_request.nim | 12 +++---- .../service/accounts/dto/login_request.nim | 8 ++--- src/app_service/service/accounts/service.nim | 4 +-- 5 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 src/app_service/service/accounts/dto/api_config.nim diff --git a/src/app_service/common/network_constants.nim b/src/app_service/common/network_constants.nim index e0677c58f7..797913ffeb 100644 --- a/src/app_service/common/network_constants.nim +++ b/src/app_service/common/network_constants.nim @@ -271,14 +271,3 @@ var NODE_CONFIG* = %* { }, "OutputMessageCSVEnabled": false } - -var STATUS_NODE_API_CONFIG* = %* { - "APIModules": "connector", - "ConnectorEnabled": true, - "HTTPEnabled": true, - "HTTPHost": "0.0.0.0", - "HTTPPort": 8545, - "WSEnabled": true, - "WSHost": "0.0.0.0", - "WSPort": 8586, -} diff --git a/src/app_service/service/accounts/dto/api_config.nim b/src/app_service/service/accounts/dto/api_config.nim new file mode 100644 index 0000000000..2355ffd593 --- /dev/null +++ b/src/app_service/service/accounts/dto/api_config.nim @@ -0,0 +1,33 @@ +import json + +type APIConfig* = object + apiModules*: string + connectorEnabled*: bool + httpEnabled*: bool + httpHost*: string + httpPort*: int + wsEnabled*: bool + wsHost*: string + wsPort*: int + +proc defaultAPIConfig*(): APIConfig = + result.apiModules = "connector" + result.connectorEnabled = true + result.httpEnabled = true + result.httpHost = "0.0.0.0" + result.httpPort = 8545 + result.wsEnabled = true + result.wsHost = "0.0.0.0" + result.wsPort = 8586 + +proc toJson*(self: APIConfig): JsonNode = + return %* { + "apiModules": self.apiModules, + "connectorEnabled": self.connectorEnabled, + "httpEnabled": self.httpEnabled, + "httpHost": self.httpHost, + "httpPort": self.httpPort, + "wsEnabled": self.wsEnabled, + "wsHost": self.wsHost, + "wsPort": self.wsPort + } diff --git a/src/app_service/service/accounts/dto/create_account_request.nim b/src/app_service/service/accounts/dto/create_account_request.nim index e775eb4bb0..918223f1e5 100644 --- a/src/app_service/service/accounts/dto/create_account_request.nim +++ b/src/app_service/service/accounts/dto/create_account_request.nim @@ -1,9 +1,11 @@ import json, std/options -import ./wallet_secretes_config -import ./image_crop_rectangle +import wallet_secretes_config +import image_crop_rectangle +import api_config export wallet_secretes_config export image_crop_rectangle +export api_config type CreateAccountRequest* = object @@ -40,7 +42,7 @@ type keycardInstanceUID*: string keycardPairingDataFile*: string - apiConfig*: Option[JsonNode] + apiConfig*: APIConfig proc toJson*(self: CreateAccountRequest): JsonNode = result = %*{ @@ -60,6 +62,7 @@ proc toJson*(self: CreateAccountRequest): JsonNode = "upstreamConfig": self.upstreamConfig, "keycardInstanceUID": self.keycardInstanceUID, "keycardPairingDataFile": self.keycardPairingDataFile, + "apiConfig": self.apiConfig } if self.logLevel.isSome(): @@ -91,6 +94,3 @@ proc toJson*(self: CreateAccountRequest): JsonNode = for key, value in self.walletSecretsConfig.toJson().pairs(): result[key] = value - - if self.apiConfig.isSome(): - result["apiConfig"] = %self.apiConfig.get() diff --git a/src/app_service/service/accounts/dto/login_request.nim b/src/app_service/service/accounts/dto/login_request.nim index 61fb5a2ad2..6678eb9f4c 100644 --- a/src/app_service/service/accounts/dto/login_request.nim +++ b/src/app_service/service/accounts/dto/login_request.nim @@ -1,7 +1,9 @@ import json, std/options import wallet_secretes_config +import api_config export wallet_secretes_config +export api_config type LoginAccountRequest* = object @@ -14,7 +16,7 @@ type keycardWhisperPrivateKey*: string mnemonic*: string walletSecretsConfig*: WalletSecretsConfig - apiConfig*: Option[JsonNode] + apiConfig*: APIConfig proc toJson*(self: LoginAccountRequest): JsonNode = result = %* { @@ -26,9 +28,7 @@ proc toJson*(self: LoginAccountRequest): JsonNode = "bandwidthStatsEnabled": self.bandwidthStatsEnabled, "keycardWhisperPrivateKey": self.keycardWhisperPrivateKey, "mnemonic": self.mnemonic, + "apiConfig": self.apiConfig } for key, value in self.walletSecretsConfig.toJson().pairs(): result[key] = value - - if self.apiConfig.isSome(): - result["apiConfig"] = %self.apiConfig.get() diff --git a/src/app_service/service/accounts/service.nim b/src/app_service/service/accounts/service.nim index 004d6e7543..ef28424113 100644 --- a/src/app_service/service/accounts/service.nim +++ b/src/app_service/service/accounts/service.nim @@ -238,7 +238,7 @@ QtObject: torrentConfigPort: some(TORRENT_CONFIG_PORT), keycardPairingDataFile: main_constants.KEYCARDPAIRINGDATAFILE, walletSecretsConfig: self.buildWalletSecrets(), - apiConfig: some(STATUS_NODE_API_CONFIG) + apiConfig: defaultApiConfig() ) proc createAccountAndLogin*(self: Service, password: string, displayName: string, imagePath: string, imageCropRectangle: ImageCropRectangle): string = @@ -422,7 +422,7 @@ QtObject: mnemonic: mnemonic, walletSecretsConfig: self.buildWalletSecrets(), bandwidthStatsEnabled: true, - apiConfig: some(STATUS_NODE_API_CONFIG) + apiConfig: defaultApiConfig() ) if main_constants.runtimeLogLevelSet():