@fintekkers/ledger-models 0.4.29 → 0.4.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/node/wrappers/models/position/position_matcher.d.ts +4 -2
  2. package/node/wrappers/models/position/position_matcher.js +5 -3
  3. package/node/wrappers/models/position/position_matcher.test.js +55 -5
  4. package/node/wrappers/models/position/position_matcher.test.ts +48 -1
  5. package/node/wrappers/models/position/position_matcher.ts +5 -3
  6. package/node/wrappers/models/utils/requestcontext.auth.test.js +21 -6
  7. package/node/wrappers/models/utils/requestcontext.auth.test.js.map +1 -1
  8. package/node/wrappers/models/utils/requestcontext.auth.test.ts +24 -6
  9. package/node/wrappers/models/utils/requestcontext.d.ts +18 -12
  10. package/node/wrappers/models/utils/requestcontext.js +28 -28
  11. package/node/wrappers/models/utils/requestcontext.js.map +1 -1
  12. package/node/wrappers/models/utils/requestcontext.test.js +15 -3
  13. package/node/wrappers/models/utils/requestcontext.test.js.map +1 -1
  14. package/node/wrappers/models/utils/requestcontext.test.ts +17 -3
  15. package/node/wrappers/models/utils/requestcontext.ts +31 -29
  16. package/node/wrappers/services/apikey.credentials.test.d.ts +1 -1
  17. package/node/wrappers/services/apikey.credentials.test.js +14 -12
  18. package/node/wrappers/services/apikey.credentials.test.js.map +1 -1
  19. package/node/wrappers/services/apikey.credentials.test.ts +15 -13
  20. package/node/wrappers/services/apikey.test.js +1 -1
  21. package/node/wrappers/services/apikey.test.js.map +1 -1
  22. package/node/wrappers/services/apikey.test.ts +1 -1
  23. package/node/wrappers/services/portfolio-service/PortfolioService.d.ts +2 -1
  24. package/node/wrappers/services/portfolio-service/PortfolioService.js +8 -4
  25. package/node/wrappers/services/portfolio-service/PortfolioService.js.map +1 -1
  26. package/node/wrappers/services/portfolio-service/PortfolioService.ts +8 -4
  27. package/node/wrappers/services/position-service/PositionService.js +4 -3
  28. package/node/wrappers/services/position-service/PositionService.js.map +1 -1
  29. package/node/wrappers/services/position-service/PositionService.ts +4 -3
  30. package/node/wrappers/services/price-service/PriceService.js +4 -3
  31. package/node/wrappers/services/price-service/PriceService.js.map +1 -1
  32. package/node/wrappers/services/price-service/PriceService.ts +4 -3
  33. package/node/wrappers/services/security-service/SecurityService.js +4 -3
  34. package/node/wrappers/services/security-service/SecurityService.js.map +1 -1
  35. package/node/wrappers/services/security-service/SecurityService.ts +4 -3
  36. package/node/wrappers/services/serviceaddress.clients.test.d.ts +9 -0
  37. package/node/wrappers/services/serviceaddress.clients.test.js +181 -0
  38. package/node/wrappers/services/serviceaddress.clients.test.js.map +1 -0
  39. package/node/wrappers/services/serviceaddress.clients.test.ts +176 -0
  40. package/node/wrappers/services/transaction-service/TransactionService.js +4 -3
  41. package/node/wrappers/services/transaction-service/TransactionService.js.map +1 -1
  42. package/node/wrappers/services/transaction-service/TransactionService.ts +4 -3
  43. package/node/wrappers/util/link-resolver.d.ts +1 -1
  44. package/node/wrappers/util/link-resolver.js +10 -9
  45. package/node/wrappers/util/link-resolver.js.map +1 -1
  46. package/node/wrappers/util/link-resolver.ts +11 -10
  47. package/node/wrappers/util/serviceaddress.d.ts +47 -0
  48. package/node/wrappers/util/serviceaddress.js +132 -0
  49. package/node/wrappers/util/serviceaddress.js.map +1 -0
  50. package/node/wrappers/util/serviceaddress.test.d.ts +6 -0
  51. package/node/wrappers/util/serviceaddress.test.js +76 -0
  52. package/node/wrappers/util/serviceaddress.test.js.map +1 -0
  53. package/node/wrappers/util/serviceaddress.test.ts +83 -0
  54. package/node/wrappers/util/serviceaddress.ts +141 -0
  55. package/package.json +1 -1
@@ -49,9 +49,16 @@ function setEnv(key, value) {
49
49
  env[key] = value;
50
50
  }
51
51
  }
52
+ // Variables the lookup reads before API_URL; the host may set them.
53
+ const SHADOWING = ['BROKER_HOST', 'LEDGER_SERVICE_HOST', 'LEDGER_SERVICE_PORT'];
52
54
  describe('EnvConfig.apiURL', () => {
53
55
  const original = env['API_URL'];
54
- afterEach(() => setEnv('API_URL', original));
56
+ const saved = SHADOWING.map((k) => env[k]);
57
+ beforeEach(() => SHADOWING.forEach((k) => setEnv(k, undefined)));
58
+ afterEach(() => {
59
+ setEnv('API_URL', original);
60
+ SHADOWING.forEach((k, i) => setEnv(k, saved[i]));
61
+ });
55
62
  test('appends :8082 when API_URL has no port', () => {
56
63
  setEnv('API_URL', 'myhost.example.com');
57
64
  expect(requestcontext_1.default.apiURL).toBe('myhost.example.com:8082');
@@ -60,9 +67,14 @@ describe('EnvConfig.apiURL', () => {
60
67
  setEnv('API_URL', 'localhost:8083');
61
68
  expect(requestcontext_1.default.apiURL).toBe('localhost:8083');
62
69
  });
63
- test('defaults to api.fintekkers.org:8082 when unset', () => {
70
+ test('defaults to localhost:8082 when unset', () => {
64
71
  setEnv('API_URL', undefined);
65
- expect(requestcontext_1.default.apiURL).toBe('api.fintekkers.org:8082');
72
+ expect(requestcontext_1.default.apiURL).toBe('localhost:8082');
73
+ });
74
+ test('is the broker when BROKER_HOST is set, whatever API_URL says', () => {
75
+ setEnv('API_URL', 'localhost');
76
+ setEnv('BROKER_HOST', '127.0.0.1:8085');
77
+ expect(requestcontext_1.default.apiURL).toBe('127.0.0.1:8085');
66
78
  });
67
79
  });
68
80
  describe('EnvConfig.apiKey', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"requestcontext.test.js","sourceRoot":"","sources":["requestcontext.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requestcontext.test.js","sourceRoot":"","sources":["requestcontext.test.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,17 @@ function setEnv(key: string, value: string | undefined): void {
15
15
  }
16
16
  }
17
17
 
18
+ // Variables the lookup reads before API_URL; the host may set them.
19
+ const SHADOWING = ['BROKER_HOST', 'LEDGER_SERVICE_HOST', 'LEDGER_SERVICE_PORT'];
20
+
18
21
  describe('EnvConfig.apiURL', () => {
19
22
  const original = env['API_URL'];
20
- afterEach(() => setEnv('API_URL', original));
23
+ const saved = SHADOWING.map((k) => env[k]);
24
+ beforeEach(() => SHADOWING.forEach((k) => setEnv(k, undefined)));
25
+ afterEach(() => {
26
+ setEnv('API_URL', original);
27
+ SHADOWING.forEach((k, i) => setEnv(k, saved[i]));
28
+ });
21
29
 
22
30
  test('appends :8082 when API_URL has no port', () => {
23
31
  setEnv('API_URL', 'myhost.example.com');
@@ -29,9 +37,15 @@ describe('EnvConfig.apiURL', () => {
29
37
  expect(EnvConfig.apiURL).toBe('localhost:8083');
30
38
  });
31
39
 
32
- test('defaults to api.fintekkers.org:8082 when unset', () => {
40
+ test('defaults to localhost:8082 when unset', () => {
33
41
  setEnv('API_URL', undefined);
34
- expect(EnvConfig.apiURL).toBe('api.fintekkers.org:8082');
42
+ expect(EnvConfig.apiURL).toBe('localhost:8082');
43
+ });
44
+
45
+ test('is the broker when BROKER_HOST is set, whatever API_URL says', () => {
46
+ setEnv('API_URL', 'localhost');
47
+ setEnv('BROKER_HOST', '127.0.0.1:8085');
48
+ expect(EnvConfig.apiURL).toBe('127.0.0.1:8085');
35
49
  });
36
50
  });
37
51
 
@@ -3,39 +3,40 @@ dotenv.config();
3
3
 
4
4
  import * as grpc from '@grpc/grpc-js';
5
5
 
6
- class EnvConfig {
7
- private static getEnvVar(key: string, defaultValue?: string): string {
8
- const value = process.env[key];
9
- if (value === undefined) {
10
- if (defaultValue === undefined) {
11
- throw new Error(`Environment variable ${key} is not set.`);
12
- }
13
- return defaultValue;
14
- }
15
- return value;
16
- }
6
+ import { Service, resolve, target } from '../../util/serviceaddress';
17
7
 
8
+ class EnvConfig {
18
9
  static get apiKey(): string | undefined {
19
10
  return process.env['API_KEY'];
20
11
  }
21
12
 
22
13
  /**
23
- * Returns the URL for the backend GRPC service. It will default to
24
- * api.fintekkers.org:8082 if the environment variable is not set. If
25
- * API_URL already includes a port (e.g. localhost:8083), it is used as-is;
26
- * otherwise :8082 is appended for backward compatibility.
14
+ * Returns the `host:port` of the ledger service, found the same way as
15
+ * every other service: `BROKER_HOST`, then `LEDGER_SERVICE_HOST`/`_PORT`,
16
+ * then `API_URL` (with :8082 unless it carries a port), then
17
+ * localhost:8082. Clients should prefer {@link EnvConfig.urlFor}.
27
18
  */
28
19
  static get apiURL(): string {
29
- const base = EnvConfig.getEnvVar('API_URL', 'api.fintekkers.org');
30
- return /:\d+$/.test(base) ? base : base + ':8082';
20
+ return EnvConfig.urlFor(Service.SECURITY);
31
21
  }
32
22
 
33
- private static get isLocalURL(): boolean {
34
- return /^localhost|^127\.0\.0\.1/.test(this.apiURL);
23
+ /** Returns the `host:port` a client for `service` connects to. */
24
+ static urlFor(service: Service): string {
25
+ return target(resolve(service));
35
26
  }
36
27
 
28
+ private static isPlaintext(service: Service): boolean {
29
+ return resolve(service).plaintext;
30
+ }
31
+
32
+ /** Channel credentials for {@link EnvConfig.apiURL}. */
37
33
  static get apiCredentials(): grpc.ChannelCredentials {
38
- if (this.isLocalURL) {
34
+ return EnvConfig.credentialsFor(Service.SECURITY);
35
+ }
36
+
37
+ /** Insecure credentials for a loopback address, SSL otherwise. */
38
+ static credentialsFor(service: Service): grpc.ChannelCredentials {
39
+ if (EnvConfig.isPlaintext(service)) {
39
40
  return grpc.credentials.createInsecure();
40
41
  }
41
42
  else {
@@ -56,10 +57,11 @@ class EnvConfig {
56
57
  * {@link EnvConfig.getAuthenticatedClientOptions}, which sends the key via
57
58
  * an interceptor instead.
58
59
  *
59
- * @throws {InsecureChannelAuthError} when apiURL is localhost / 127.0.0.1.
60
+ * @throws {InsecureChannelAuthError} when the address of `service` is
61
+ * localhost / 127.0.0.1.
60
62
  */
61
- static getAuthenticatedCredentials(apiKey: string): grpc.ChannelCredentials {
62
- if (this.isLocalURL) {
63
+ static getAuthenticatedCredentials(apiKey: string, service: Service = Service.SECURITY): grpc.ChannelCredentials {
64
+ if (EnvConfig.isPlaintext(service)) {
63
65
  throw new InsecureChannelAuthError();
64
66
  }
65
67
  const callCreds = grpc.credentials.createFromMetadataGenerator(
@@ -76,15 +78,15 @@ class EnvConfig {
76
78
  }
77
79
 
78
80
  /**
79
- * Returns credentials and interceptors for authenticated calls.
81
+ * Returns credentials and interceptors for authenticated calls to `service`.
80
82
  * For local (insecure) channels, injects the API key via an interceptor.
81
83
  * For remote (SSL) channels, uses {@link EnvConfig.getAuthenticatedCredentials}.
82
84
  */
83
- static getAuthenticatedClientOptions(apiKey: string): {
85
+ static getAuthenticatedClientOptions(apiKey: string, service: Service = Service.SECURITY): {
84
86
  credentials: grpc.ChannelCredentials;
85
87
  interceptors: grpc.Interceptor[];
86
88
  } {
87
- if (this.isLocalURL) {
89
+ if (EnvConfig.isPlaintext(service)) {
88
90
  const interceptor: grpc.Interceptor = (_options, nextCall) => {
89
91
  return new grpc.InterceptingCall(nextCall(_options), {
90
92
  start(metadata: grpc.Metadata, listener: grpc.Listener, next: Function) {
@@ -96,15 +98,15 @@ class EnvConfig {
96
98
  return { credentials: grpc.credentials.createInsecure(), interceptors: [interceptor] };
97
99
  }
98
100
  return {
99
- credentials: EnvConfig.getAuthenticatedCredentials(apiKey),
101
+ credentials: EnvConfig.getAuthenticatedCredentials(apiKey, service),
100
102
  interceptors: []
101
103
  };
102
104
  }
103
105
  }
104
106
 
105
107
  /**
106
- * Thrown by EnvConfig.getAuthenticatedCredentials when API_URL points at an
107
- * insecure (local) channel. The message never includes the API key.
108
+ * Thrown by EnvConfig.getAuthenticatedCredentials when the service address is
109
+ * an insecure (local) channel. The message never includes the API key.
108
110
  */
109
111
  export class InsecureChannelAuthError extends Error {
110
112
  constructor() {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Unit tests for Issue #114: each wrapper service hands the generated gRPC
3
3
  * client the authenticated credentials when given an apiKey, and
4
- * EnvConfig.apiCredentials otherwise.
4
+ * EnvConfig.credentialsFor(service) otherwise, for its own service (LM-287).
5
5
  *
6
6
  * The generated *_grpc_pb clients are mocked, so no channel is opened.
7
7
  */
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Unit tests for Issue #114: each wrapper service hands the generated gRPC
4
4
  * client the authenticated credentials when given an apiKey, and
5
- * EnvConfig.apiCredentials otherwise.
5
+ * EnvConfig.credentialsFor(service) otherwise, for its own service (LM-287).
6
6
  *
7
7
  * The generated *_grpc_pb clients are mocked, so no channel is opened.
8
8
  */
@@ -50,6 +50,7 @@ jest.mock('../../fintekkers/services/transaction-service/transaction_service_grp
50
50
  }));
51
51
  const grpc = __importStar(require("@grpc/grpc-js"));
52
52
  const requestcontext_1 = __importDefault(require("../models/utils/requestcontext"));
53
+ const serviceaddress_1 = require("../util/serviceaddress");
53
54
  const portfolio_service_grpc_pb_1 = require("../../fintekkers/services/portfolio-service/portfolio_service_grpc_pb");
54
55
  const position_service_grpc_pb_1 = require("../../fintekkers/services/position-service/position_service_grpc_pb");
55
56
  const price_service_grpc_pb_1 = require("../../fintekkers/services/price-service/price_service_grpc_pb");
@@ -61,11 +62,11 @@ const PriceService_1 = require("./price-service/PriceService");
61
62
  const SecurityService_1 = require("./security-service/SecurityService");
62
63
  const TransactionService_1 = require("./transaction-service/TransactionService");
63
64
  const cases = [
64
- ['PortfolioService', PortfolioService_1.PortfolioService, portfolio_service_grpc_pb_1.PortfolioClient],
65
- ['PositionService', PositionService_1.PositionService, position_service_grpc_pb_1.PositionClient],
66
- ['PriceService', PriceService_1.PriceService, price_service_grpc_pb_1.PriceClient],
67
- ['SecurityService', SecurityService_1.SecurityService, security_service_grpc_pb_1.SecurityClient],
68
- ['TransactionService', TransactionService_1.TransactionService, transaction_service_grpc_pb_1.TransactionClient],
65
+ ['PortfolioService', PortfolioService_1.PortfolioService, portfolio_service_grpc_pb_1.PortfolioClient, serviceaddress_1.Service.PORTFOLIO],
66
+ ['PositionService', PositionService_1.PositionService, position_service_grpc_pb_1.PositionClient, serviceaddress_1.Service.POSITION],
67
+ ['PriceService', PriceService_1.PriceService, price_service_grpc_pb_1.PriceClient, serviceaddress_1.Service.PRICE],
68
+ ['SecurityService', SecurityService_1.SecurityService, security_service_grpc_pb_1.SecurityClient, serviceaddress_1.Service.SECURITY],
69
+ ['TransactionService', TransactionService_1.TransactionService, transaction_service_grpc_pb_1.TransactionClient, serviceaddress_1.Service.TRANSACTION],
69
70
  ];
70
71
  beforeEach(() => {
71
72
  jest.clearAllMocks();
@@ -73,7 +74,7 @@ beforeEach(() => {
73
74
  afterEach(() => {
74
75
  jest.restoreAllMocks();
75
76
  });
76
- describe.each(cases)('%s', (_name, Service, Client) => {
77
+ describe.each(cases)('%s', (_name, Service, Client, service) => {
77
78
  const ClientMock = Client;
78
79
  test('with apiKey, client gets the authenticated credentials', () => {
79
80
  const sentinel = {
@@ -84,18 +85,19 @@ describe.each(cases)('%s', (_name, Service, Client) => {
84
85
  .spyOn(requestcontext_1.default, 'getAuthenticatedClientOptions')
85
86
  .mockReturnValue(sentinel);
86
87
  new Service('k');
87
- expect(authSpy).toHaveBeenCalledWith('k');
88
+ expect(authSpy).toHaveBeenCalledWith('k', service);
88
89
  expect(ClientMock).toHaveBeenCalledTimes(1);
89
- expect(ClientMock).toHaveBeenCalledWith(requestcontext_1.default.apiURL, sentinel.credentials, { interceptors: sentinel.interceptors });
90
+ expect(ClientMock).toHaveBeenCalledWith(requestcontext_1.default.urlFor(service), sentinel.credentials, { interceptors: sentinel.interceptors });
90
91
  });
91
- test('zero-arg constructor constructs with EnvConfig.apiCredentials', () => {
92
+ test('zero-arg constructor constructs with EnvConfig.credentialsFor(service)', () => {
92
93
  const plain = grpc.credentials.createInsecure();
93
- jest.spyOn(requestcontext_1.default, 'apiCredentials', 'get').mockReturnValue(plain);
94
+ const credsSpy = jest.spyOn(requestcontext_1.default, 'credentialsFor').mockReturnValue(plain);
94
95
  const authSpy = jest.spyOn(requestcontext_1.default, 'getAuthenticatedClientOptions');
95
96
  expect(new Service()).toBeDefined();
96
97
  expect(authSpy).not.toHaveBeenCalled();
98
+ expect(credsSpy).toHaveBeenCalledWith(service);
97
99
  expect(ClientMock).toHaveBeenCalledTimes(1);
98
- expect(ClientMock).toHaveBeenCalledWith(requestcontext_1.default.apiURL, plain);
100
+ expect(ClientMock).toHaveBeenCalledWith(requestcontext_1.default.urlFor(service), plain);
99
101
  });
100
102
  });
101
103
  //# sourceMappingURL=apikey.credentials.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apikey.credentials.test.js","sourceRoot":"","sources":["apikey.credentials.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apikey.credentials.test.js","sourceRoot":"","sources":["apikey.credentials.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Unit tests for Issue #114: each wrapper service hands the generated gRPC
3
3
  * client the authenticated credentials when given an apiKey, and
4
- * EnvConfig.apiCredentials otherwise.
4
+ * EnvConfig.credentialsFor(service) otherwise, for its own service (LM-287).
5
5
  *
6
6
  * The generated *_grpc_pb clients are mocked, so no channel is opened.
7
7
  */
@@ -24,6 +24,7 @@ jest.mock('../../fintekkers/services/transaction-service/transaction_service_grp
24
24
 
25
25
  import * as grpc from '@grpc/grpc-js';
26
26
  import EnvConfig from '../models/utils/requestcontext';
27
+ import { Service as ServiceName } from '../util/serviceaddress';
27
28
  import { PortfolioClient } from '../../fintekkers/services/portfolio-service/portfolio_service_grpc_pb';
28
29
  import { PositionClient } from '../../fintekkers/services/position-service/position_service_grpc_pb';
29
30
  import { PriceClient } from '../../fintekkers/services/price-service/price_service_grpc_pb';
@@ -35,12 +36,12 @@ import { PriceService } from './price-service/PriceService';
35
36
  import { SecurityService } from './security-service/SecurityService';
36
37
  import { TransactionService } from './transaction-service/TransactionService';
37
38
 
38
- const cases: Array<[string, new (apiKey?: string) => unknown, unknown]> = [
39
- ['PortfolioService', PortfolioService, PortfolioClient],
40
- ['PositionService', PositionService, PositionClient],
41
- ['PriceService', PriceService, PriceClient],
42
- ['SecurityService', SecurityService, SecurityClient],
43
- ['TransactionService', TransactionService, TransactionClient],
39
+ const cases: Array<[string, new (apiKey?: string) => unknown, unknown, ServiceName]> = [
40
+ ['PortfolioService', PortfolioService, PortfolioClient, ServiceName.PORTFOLIO],
41
+ ['PositionService', PositionService, PositionClient, ServiceName.POSITION],
42
+ ['PriceService', PriceService, PriceClient, ServiceName.PRICE],
43
+ ['SecurityService', SecurityService, SecurityClient, ServiceName.SECURITY],
44
+ ['TransactionService', TransactionService, TransactionClient, ServiceName.TRANSACTION],
44
45
  ];
45
46
 
46
47
  beforeEach(() => {
@@ -51,7 +52,7 @@ afterEach(() => {
51
52
  jest.restoreAllMocks();
52
53
  });
53
54
 
54
- describe.each(cases)('%s', (_name, Service, Client) => {
55
+ describe.each(cases)('%s', (_name, Service, Client, service) => {
55
56
  const ClientMock = Client as jest.Mock;
56
57
 
57
58
  test('with apiKey, client gets the authenticated credentials', () => {
@@ -65,24 +66,25 @@ describe.each(cases)('%s', (_name, Service, Client) => {
65
66
 
66
67
  new Service('k');
67
68
 
68
- expect(authSpy).toHaveBeenCalledWith('k');
69
+ expect(authSpy).toHaveBeenCalledWith('k', service);
69
70
  expect(ClientMock).toHaveBeenCalledTimes(1);
70
71
  expect(ClientMock).toHaveBeenCalledWith(
71
- EnvConfig.apiURL,
72
+ EnvConfig.urlFor(service),
72
73
  sentinel.credentials,
73
74
  { interceptors: sentinel.interceptors }
74
75
  );
75
76
  });
76
77
 
77
- test('zero-arg constructor constructs with EnvConfig.apiCredentials', () => {
78
+ test('zero-arg constructor constructs with EnvConfig.credentialsFor(service)', () => {
78
79
  const plain = grpc.credentials.createInsecure();
79
- jest.spyOn(EnvConfig, 'apiCredentials', 'get').mockReturnValue(plain);
80
+ const credsSpy = jest.spyOn(EnvConfig, 'credentialsFor').mockReturnValue(plain);
80
81
  const authSpy = jest.spyOn(EnvConfig, 'getAuthenticatedClientOptions');
81
82
 
82
83
  expect(new Service()).toBeDefined();
83
84
 
84
85
  expect(authSpy).not.toHaveBeenCalled();
86
+ expect(credsSpy).toHaveBeenCalledWith(service);
85
87
  expect(ClientMock).toHaveBeenCalledTimes(1);
86
- expect(ClientMock).toHaveBeenCalledWith(EnvConfig.apiURL, plain);
88
+ expect(ClientMock).toHaveBeenCalledWith(EnvConfig.urlFor(service), plain);
87
89
  });
88
90
  });
@@ -12,7 +12,7 @@ const PriceService_1 = require("./price-service/PriceService");
12
12
  const SecurityService_1 = require("./security-service/SecurityService");
13
13
  const TransactionService_1 = require("./transaction-service/TransactionService");
14
14
  // No server connection is made in constructors — gRPC connects lazily.
15
- // API_URL is not set so it defaults to api.fintekkers.org:8082.
15
+ // Addresses come from the environment (BROKER_HOST, API_URL, else localhost).
16
16
  describe('PortfolioService', () => {
17
17
  test('zero-arg constructor succeeds', () => {
18
18
  expect(() => new PortfolioService_1.PortfolioService()).not.toThrow();
@@ -1 +1 @@
1
- {"version":3,"file":"apikey.test.js","sourceRoot":"","sources":["apikey.test.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,2EAAwE;AACxE,wEAAqE;AACrE,+DAA4D;AAC5D,wEAAqE;AACrE,iFAA8E;AAE9E,uEAAuE;AACvE,gEAAgE;AAEhE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,mCAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,mCAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,2BAAY,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,2BAAY,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,uCAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,uCAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"apikey.test.js","sourceRoot":"","sources":["apikey.test.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,2EAAwE;AACxE,wEAAqE;AACrE,+DAA4D;AAC5D,wEAAqE;AACrE,iFAA8E;AAE9E,uEAAuE;AACvE,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,mCAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,mCAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,2BAAY,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,2BAAY,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,uCAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,uCAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -12,7 +12,7 @@ import { SecurityService } from './security-service/SecurityService';
12
12
  import { TransactionService } from './transaction-service/TransactionService';
13
13
 
14
14
  // No server connection is made in constructors — gRPC connects lazily.
15
- // API_URL is not set so it defaults to api.fintekkers.org:8082.
15
+ // Addresses come from the environment (BROKER_HOST, API_URL, else localhost).
16
16
 
17
17
  describe('PortfolioService', () => {
18
18
  test('zero-arg constructor succeeds', () => {
@@ -6,7 +6,8 @@ import { PositionFilter } from '../../models/position/positionfilter';
6
6
  import Portfolio from '../../models/portfolio/portfolio';
7
7
  declare class PortfolioService {
8
8
  private client;
9
- static url: string;
9
+ /** Read on every access, so a changed environment is picked up. */
10
+ static get url(): string;
10
11
  constructor(apiKey?: string);
11
12
  validateCreatePortfolio(portfolio: PortfolioProto): Promise<SummaryProto>;
12
13
  createPortfolio(portfolio: PortfolioProto): Promise<CreatePortfolioResponseProto>;
@@ -43,18 +43,23 @@ const portfolio_service_grpc_pb_1 = require("../../../fintekkers/services/portfo
43
43
  const query_portfolio_request_pb_1 = require("../../../fintekkers/requests/portfolio/query_portfolio_request_pb");
44
44
  const create_portfolio_request_pb_1 = require("../../../fintekkers/requests/portfolio/create_portfolio_request_pb");
45
45
  const requestcontext_1 = __importDefault(require("../../models/utils/requestcontext"));
46
+ const serviceaddress_1 = require("../../util/serviceaddress");
46
47
  const portfolio_1 = __importDefault(require("../../models/portfolio/portfolio"));
47
48
  const uuid_1 = require("../../models/utils/uuid");
48
49
  const datetime_1 = require("../../models/utils/datetime");
49
50
  const LinkCacheModule = __importStar(require("../../util/link-cache"));
50
51
  class PortfolioService {
52
+ /** Read on every access, so a changed environment is picked up. */
53
+ static get url() {
54
+ return requestcontext_1.default.urlFor(serviceaddress_1.Service.PORTFOLIO);
55
+ }
51
56
  constructor(apiKey) {
52
57
  if (apiKey) {
53
- const { credentials, interceptors } = requestcontext_1.default.getAuthenticatedClientOptions(apiKey);
54
- this.client = new portfolio_service_grpc_pb_1.PortfolioClient(requestcontext_1.default.apiURL, credentials, { interceptors });
58
+ const { credentials, interceptors } = requestcontext_1.default.getAuthenticatedClientOptions(apiKey, serviceaddress_1.Service.PORTFOLIO);
59
+ this.client = new portfolio_service_grpc_pb_1.PortfolioClient(requestcontext_1.default.urlFor(serviceaddress_1.Service.PORTFOLIO), credentials, { interceptors });
55
60
  }
56
61
  else {
57
- this.client = new portfolio_service_grpc_pb_1.PortfolioClient(requestcontext_1.default.apiURL, requestcontext_1.default.apiCredentials);
62
+ this.client = new portfolio_service_grpc_pb_1.PortfolioClient(requestcontext_1.default.urlFor(serviceaddress_1.Service.PORTFOLIO), requestcontext_1.default.credentialsFor(serviceaddress_1.Service.PORTFOLIO));
58
63
  }
59
64
  }
60
65
  validateCreatePortfolio(portfolio) {
@@ -121,5 +126,4 @@ class PortfolioService {
121
126
  }
122
127
  }
123
128
  exports.PortfolioService = PortfolioService;
124
- PortfolioService.url = requestcontext_1.default.apiURL;
125
129
  //# sourceMappingURL=PortfolioService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PortfolioService.js","sourceRoot":"","sources":["PortfolioService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PortfolioService.js","sourceRoot":"","sources":["PortfolioService.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { QueryPortfolioResponseProto } from '../../../fintekkers/requests/portfo
14
14
  import { CreatePortfolioRequestProto } from '../../../fintekkers/requests/portfolio/create_portfolio_request_pb';
15
15
  import { CreatePortfolioResponseProto } from '../../../fintekkers/requests/portfolio/create_portfolio_response_pb';
16
16
  import EnvConfig from '../../models/utils/requestcontext';
17
+ import { Service } from '../../util/serviceaddress';
17
18
  import { PositionFilter } from '../../models/position/positionfilter';
18
19
  import Portfolio from '../../models/portfolio/portfolio';
19
20
  import { UUID } from '../../models/utils/uuid';
@@ -23,14 +24,17 @@ import * as LinkCacheModule from '../../util/link-cache';
23
24
  class PortfolioService {
24
25
  private client: PortfolioClient;
25
26
 
26
- static url: string = EnvConfig.apiURL;
27
+ /** Read on every access, so a changed environment is picked up. */
28
+ static get url(): string {
29
+ return EnvConfig.urlFor(Service.PORTFOLIO);
30
+ }
27
31
 
28
32
  constructor(apiKey?: string) {
29
33
  if (apiKey) {
30
- const { credentials, interceptors } = EnvConfig.getAuthenticatedClientOptions(apiKey);
31
- this.client = new PortfolioClient(EnvConfig.apiURL, credentials, { interceptors });
34
+ const { credentials, interceptors } = EnvConfig.getAuthenticatedClientOptions(apiKey, Service.PORTFOLIO);
35
+ this.client = new PortfolioClient(EnvConfig.urlFor(Service.PORTFOLIO), credentials, { interceptors });
32
36
  } else {
33
- this.client = new PortfolioClient(EnvConfig.apiURL, EnvConfig.apiCredentials);
37
+ this.client = new PortfolioClient(EnvConfig.urlFor(Service.PORTFOLIO), EnvConfig.credentialsFor(Service.PORTFOLIO));
34
38
  }
35
39
  }
36
40
 
@@ -19,14 +19,15 @@ const position_1 = require("../../models/position/position");
19
19
  const position_service_grpc_pb_1 = require("../../../fintekkers/services/position-service/position_service_grpc_pb");
20
20
  //Utils
21
21
  const requestcontext_1 = __importDefault(require("../../models/utils/requestcontext"));
22
+ const serviceaddress_1 = require("../../util/serviceaddress");
22
23
  class PositionService {
23
24
  constructor(apiKey) {
24
25
  if (apiKey) {
25
- const { credentials, interceptors } = requestcontext_1.default.getAuthenticatedClientOptions(apiKey);
26
- this.client = new position_service_grpc_pb_1.PositionClient(requestcontext_1.default.apiURL, credentials, { interceptors });
26
+ const { credentials, interceptors } = requestcontext_1.default.getAuthenticatedClientOptions(apiKey, serviceaddress_1.Service.POSITION);
27
+ this.client = new position_service_grpc_pb_1.PositionClient(requestcontext_1.default.urlFor(serviceaddress_1.Service.POSITION), credentials, { interceptors });
27
28
  }
28
29
  else {
29
- this.client = new position_service_grpc_pb_1.PositionClient(requestcontext_1.default.apiURL, requestcontext_1.default.apiCredentials);
30
+ this.client = new position_service_grpc_pb_1.PositionClient(requestcontext_1.default.urlFor(serviceaddress_1.Service.POSITION), requestcontext_1.default.credentialsFor(serviceaddress_1.Service.POSITION));
30
31
  }
31
32
  }
32
33
  validateRequest(positionRequest) {
@@ -1 +1 @@
1
- {"version":3,"file":"PositionService.js","sourceRoot":"","sources":["PositionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS;AACT,6DAA0D;AAM1D,sBAAsB;AACtB,qHAAwG;AAExG,OAAO;AACP,uFAA0D;AAI1D,MAAM,eAAe;IAGnB,YAAY,MAAe;QACzB,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,wBAAS,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;YACtF,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAc,CAAC,wBAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;SACnF;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAc,CAAC,wBAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,cAAc,CAAC,CAAC;SAC9E;IACH,CAAC;IAEK,eAAe,CAAC,eAAqC;;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9B,MAAM,OAAO,GAA8B,eAAe,CAAC,OAAO,EAAE,CAAC;YAErE,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnD,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBAC1D,IAAI,KAAK,EAAE;wBACT,MAAM,CAAC,KAAK,CAAC,CAAC;qBACf;yBAAM;wBACL,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,oCAAoC;qBACxD;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,MAAM,CAAC,eAAqC;;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9B,MAAM,aAAa,GAAe,EAAE,CAAC;YACrC,MAAM,OAAO,GAA8B,eAAe,CAAC,OAAO,EAAE,CAAC;YAErE,MAAM,eAAe,GAAG,IAAI,CAAC;YAE7B,SAAe,0BAA0B;;oBACvC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAE1C,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACjD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAoC,EAAE,EAAE;4BAC1D,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gCAC/C,aAAa,CAAC,IAAI,CAAC,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAC7C,CAAC,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;wBAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;4BACrB,OAAO,CAAC,aAAa,CAAC,CAAC;wBACzB,CAAC,CAAC,CAAC;wBAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;4BAC1B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;4BAC3C,MAAM,CAAC,GAAG,CAAC,CAAC;wBACd,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC;aAAA;YAED,OAAO,MAAM,0BAA0B,EAAE,CAAC;QAC5C,CAAC;KAAA;CACF;AAEQ,0CAAe"}
1
+ {"version":3,"file":"PositionService.js","sourceRoot":"","sources":["PositionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS;AACT,6DAA0D;AAM1D,sBAAsB;AACtB,qHAAwG;AAExG,OAAO;AACP,uFAA0D;AAC1D,8DAAoD;AAIpD,MAAM,eAAe;IAGnB,YAAY,MAAe;QACzB,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,wBAAS,CAAC,6BAA6B,CAAC,MAAM,EAAE,wBAAO,CAAC,QAAQ,CAAC,CAAC;YACxG,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAc,CAAC,wBAAS,CAAC,MAAM,CAAC,wBAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;SACrG;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAc,CAAC,wBAAS,CAAC,MAAM,CAAC,wBAAO,CAAC,QAAQ,CAAC,EAAE,wBAAS,CAAC,cAAc,CAAC,wBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;SAClH;IACH,CAAC;IAEK,eAAe,CAAC,eAAqC;;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9B,MAAM,OAAO,GAA8B,eAAe,CAAC,OAAO,EAAE,CAAC;YAErE,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnD,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBAC1D,IAAI,KAAK,EAAE;wBACT,MAAM,CAAC,KAAK,CAAC,CAAC;qBACf;yBAAM;wBACL,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,oCAAoC;qBACxD;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,MAAM,CAAC,eAAqC;;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9B,MAAM,aAAa,GAAe,EAAE,CAAC;YACrC,MAAM,OAAO,GAA8B,eAAe,CAAC,OAAO,EAAE,CAAC;YAErE,MAAM,eAAe,GAAG,IAAI,CAAC;YAE7B,SAAe,0BAA0B;;oBACvC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAE1C,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACjD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAoC,EAAE,EAAE;4BAC1D,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gCAC/C,aAAa,CAAC,IAAI,CAAC,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAC7C,CAAC,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;wBAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;4BACrB,OAAO,CAAC,aAAa,CAAC,CAAC;wBACzB,CAAC,CAAC,CAAC;wBAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;4BAC1B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;4BAC3C,MAAM,CAAC,GAAG,CAAC,CAAC;wBACd,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC;aAAA;YAED,OAAO,MAAM,0BAA0B,EAAE,CAAC;QAC5C,CAAC;KAAA;CACF;AAEQ,0CAAe"}
@@ -10,6 +10,7 @@ import { PositionClient } from '../../../fintekkers/services/position-service/po
10
10
 
11
11
  //Utils
12
12
  import EnvConfig from '../../models/utils/requestcontext';
13
+ import { Service } from '../../util/serviceaddress';
13
14
  import { QueryPositionRequest } from '../../requests/position/QueryPositionRequest';
14
15
  import { SummaryProto } from '../../../fintekkers/requests/util/errors/summary_pb';
15
16
 
@@ -18,10 +19,10 @@ class PositionService {
18
19
 
19
20
  constructor(apiKey?: string) {
20
21
  if (apiKey) {
21
- const { credentials, interceptors } = EnvConfig.getAuthenticatedClientOptions(apiKey);
22
- this.client = new PositionClient(EnvConfig.apiURL, credentials, { interceptors });
22
+ const { credentials, interceptors } = EnvConfig.getAuthenticatedClientOptions(apiKey, Service.POSITION);
23
+ this.client = new PositionClient(EnvConfig.urlFor(Service.POSITION), credentials, { interceptors });
23
24
  } else {
24
- this.client = new PositionClient(EnvConfig.apiURL, EnvConfig.apiCredentials);
25
+ this.client = new PositionClient(EnvConfig.urlFor(Service.POSITION), EnvConfig.credentialsFor(Service.POSITION));
25
26
  }
26
27
  }
27
28
 
@@ -46,16 +46,17 @@ const create_price_request_pb_1 = require("../../../fintekkers/requests/price/cr
46
46
  const uuid_1 = require("../../models/utils/uuid");
47
47
  const dt = __importStar(require("../../models/utils/datetime"));
48
48
  const requestcontext_1 = __importDefault(require("../../models/utils/requestcontext"));
49
+ const serviceaddress_1 = require("../../util/serviceaddress");
49
50
  const link_resolver_1 = __importDefault(require("../../util/link-resolver"));
50
51
  const LinkCacheModule = __importStar(require("../../util/link-cache"));
51
52
  class PriceService {
52
53
  constructor(apiKey) {
53
54
  if (apiKey) {
54
- const { credentials, interceptors } = requestcontext_1.default.getAuthenticatedClientOptions(apiKey);
55
- this.client = new price_service_grpc_pb_1.PriceClient(requestcontext_1.default.apiURL, credentials, { interceptors });
55
+ const { credentials, interceptors } = requestcontext_1.default.getAuthenticatedClientOptions(apiKey, serviceaddress_1.Service.PRICE);
56
+ this.client = new price_service_grpc_pb_1.PriceClient(requestcontext_1.default.urlFor(serviceaddress_1.Service.PRICE), credentials, { interceptors });
56
57
  }
57
58
  else {
58
- this.client = new price_service_grpc_pb_1.PriceClient(requestcontext_1.default.apiURL, requestcontext_1.default.apiCredentials);
59
+ this.client = new price_service_grpc_pb_1.PriceClient(requestcontext_1.default.urlFor(serviceaddress_1.Service.PRICE), requestcontext_1.default.credentialsFor(serviceaddress_1.Service.PRICE));
59
60
  }
60
61
  }
61
62
  close() {
@@ -1 +1 @@
1
- {"version":3,"file":"PriceService.js","sourceRoot":"","sources":["PriceService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAiC;AAEjC,qEAA6C;AAC7C,yEAAsE;AACtE,2EAA0E;AAK1E,4GAA+F;AAC/F,sGAAmG;AAEnG,wGAAqG;AAGrG,kDAA+C;AAC/C,gEAAkD;AAClD,uFAA0D;AAC1D,6EAAoD;AACpD,uEAAyD;AAEzD,MAAM,YAAY;IAGhB,YAAY,MAAe;QACzB,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,wBAAS,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;YACtF,IAAI,CAAC,MAAM,GAAG,IAAI,mCAAW,CAAC,wBAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;SAChF;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,mCAAW,CAAC,wBAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,cAAc,CAAC,CAAC;SAC3E;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEK,sBAAsB,CAAC,KAAyB;;YACpD,MAAM,UAAU,GAAG,KAAK,YAAY,eAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAEhE,MAAM,aAAa,GAAG,IAAI,iDAAuB,EAAE,CAAC;YACpD,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAC7C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAClC,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAE9C,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;YACpD,OAAO,QAAwB,CAAC;QAClC,CAAC;KAAA;IAEK,cAAc,CAAC,KAAyB;;YAC5C,MAAM,UAAU,GAAG,KAAK,YAAY,eAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAEhE,MAAM,aAAa,GAAG,IAAI,iDAAuB,EAAE,CAAC;YACpD,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAC7C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAClC,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAA6B,CAAC;YAC9E,kEAAkE;YAClE,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAE;gBACvD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtC,IAAI,SAAS,IAAI,SAAS,EAAE;oBAC1B,MAAM,OAAO,GAAG,WAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACzE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;iBAChF;aACF;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAEK,kBAAkB,CAAC,cAA8B;;YACrD,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC1C,CAAC;KAAA;IAED;;OAEG;IACG,MAAM,CAAC,IAAyB,EAAE,cAA8B;;YACpE,MAAM,aAAa,GAAG,IAAI,+CAAsB,EAAE,CAAC;YACnD,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAC7C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAClC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;YAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9B,MAAM,OAAO,GAAY,EAAE,CAAC;YAE5B,SAAe,0BAA0B;;oBACvC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBAE/C,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC9C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAiC,EAAE,EAAE;4BACtD,QAAQ,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gCACrD,OAAO,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,UAAU,CAAC,CAAC,CAAC;4BACtC,CAAC,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;wBAEH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;4BACpB,OAAO,CAAC,OAAO,CAAC,CAAC;wBACnB,CAAC,CAAC,CAAC;wBAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;4BACzB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;4BACjD,MAAM,CAAC,GAAG,CAAC,CAAC;wBACd,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC;aAAA;YAED,OAAO,MAAM,0BAA0B,EAAE,CAAC;QAC5C,CAAC;KAAA;IAED;;OAEG;IACG,WAAW,CAAC,IAAyB,EAAE,cAA8B;;YACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;KAAA;IAED;;;;OAIG;IACG,kBAAkB,CAAC,UAAkB,EAAE,IAA0B;;YACrE,MAAM,aAAa,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAC/D,MAAM,YAAY,GAAG,IAAI,WAAI,CAAC,WAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,+BAAc,EAAE;iBAChC,eAAe,CAAC,qBAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAEzD,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;KAAA;IAED;;;;;;;;;;;;;;;;OAgBG;IACG,oBAAoB,CACxB,IAAyB,EACzB,cAA8B,EAC9B,YAA2B;;YAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,uBAAY,EAAE,CAAC;YACpD,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AAEQ,oCAAY"}
1
+ {"version":3,"file":"PriceService.js","sourceRoot":"","sources":["PriceService.ts"],"names":[],"mappings":"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"}