@fiado/api-invoker 1.0.4 → 1.0.6

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.
package/README.md CHANGED
@@ -1,43 +1,64 @@
1
1
  # fiado-api-invoker
2
2
 
3
+ `fiado-api-invoker` es una librería diseñada para facilitar la invocación de APIs privadas de AWS Lambda a través de API Gateway dentro de la misma VPC. Esta librería simplifica el proceso de configuración y llamada a servicios, permitiendo a los desarrolladores centrarse en la lógica de negocio.
3
4
 
4
5
 
5
6
  ## Configuración
6
7
 
7
8
  Antes de usar la librería, asegúrate de configurar la URL base del API Gateway privado que corresponda por ejemplo si vas a usar los servicios del Lambda `Directory` se puede hacer estableciendo la variable de entorno `DIRECTORY_LAMBDA_URL`.
8
9
 
9
- ## Uso
10
+
11
+ ## Instalación
12
+ ```bash
13
+ `npm install fiado-api-invoker @fiado/http-client`
14
+ ```
15
+
16
+ ## Configuración del Contenedor de InversifyJS
10
17
 
11
18
  ```typescript
19
+ import { Container } from "inversify";
12
20
  import { IHttpRequest, AxiosHttpRequest } from "@fiado/http-client";
13
- import { IDirectoryApi } from "ruta/a/fiado-api-invoker/interfaces/IDirectoryApi";
14
- import { DirectoryService } from "ruta/a/fiado-api-invoker/services/DirectoryService";
21
+ import { apiInvokerContainer } from '@fiado/api-invoker';
22
+
23
+ // Crea el contenedor principal de tu aplicación
24
+ const container = new Container();
25
+
26
+ // Aplica las configuraciones de vinculación de fiado-gateway-adapter al contenedor
27
+ container.load(gatewayAdapterBindings);
15
28
 
16
29
  // Registro del cliente HTTP
17
- container.bind<IHttpRequest>(IHttpRequest).to(AxiosHttpRequest);
30
+ container.bind<IHttpRequest>("IHttpRequest").to(AxiosHttpRequest);
18
31
 
19
- // Registro de DirectoryService
20
- container.bind<IDirectoryApi>(IDirectoryApi).to(DirectoryService);
32
+ // Exporta el contenedor para su uso en toda tu aplicación
33
+ export { container };
21
34
 
22
35
 
23
- //Uso de IDirectoryApi en Servicios del Proyecto
36
+ ```
24
37
 
38
+
39
+ ## Uso de IDirectoryApi en Servicios del Proyecto
40
+
41
+ Para utilizar `fiado-api-invoker`, necesitas configurar el contenedor de InversifyJS en tu aplicación. Aquí te mostramos cómo registrar las dependencias necesarias:
42
+
43
+ ```typescript
25
44
  import { inject, injectable } from "inversify";
26
- import { IDirectoryApi } from "ruta/a/fiado-api-invoker/interfaces/IDirectoryApi";
45
+ import { IDirectoryApi } from "fiado-api-invoker";
46
+ import { log } from "@fiado/logger";
27
47
 
28
48
  @injectable()
29
49
  export class SomeService {
30
- constructor(private directoryApi: IDirectoryApi) {}
50
+ constructor(@inject("IDirectoryApi") private directoryApi: IDirectoryApi) {}
31
51
 
32
52
  public async fetchDirectoryDetails(directoryIds: string[]): Promise<void> {
33
53
  try {
34
54
  const details = await this.directoryApi.getByIds(directoryIds);
35
55
  log.info(details);
36
- // Tu lógica según sea necesario...
56
+
37
57
  } catch (error) {
38
58
  log.error("Error fetching directory details:", error);
39
59
  }
40
60
  }
41
61
  }
62
+ ```
42
63
 
43
64
 
@@ -1,2 +1,2 @@
1
- import { Container } from "inversify";
2
- export declare const apiInvokerContainer: Container;
1
+ import { ContainerModule } from "inversify";
2
+ export declare const apiInvokerBindings: ContainerModule;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.apiInvokerContainer = void 0;
3
+ exports.apiInvokerBindings = void 0;
4
4
  const inversify_1 = require("inversify");
5
5
  const directory_1 = require("./directory");
6
- exports.apiInvokerContainer = new inversify_1.Container();
7
- exports.apiInvokerContainer.bind("IDirectoryApi").to(directory_1.DirectoryApi);
6
+ exports.apiInvokerBindings = new inversify_1.ContainerModule((bind) => {
7
+ bind("IDirectoryApi").to(directory_1.DirectoryApi);
8
+ });
@@ -11,9 +11,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
14
17
  Object.defineProperty(exports, "__esModule", { value: true });
15
18
  exports.DirectoryApi = void 0;
16
19
  const inversify_1 = require("inversify");
20
+ const dotenv_1 = __importDefault(require("dotenv"));
21
+ dotenv_1.default.config();
17
22
  let DirectoryApi = class DirectoryApi {
18
23
  constructor(httpRequest) {
19
24
  this.httpRequest = httpRequest;
@@ -25,7 +30,7 @@ let DirectoryApi = class DirectoryApi {
25
30
  }
26
31
  const queryParams = ids.map(id => `directoryId=${id}`).join('&');
27
32
  const operationName = "getUserInfoByIds";
28
- return await this.httpRequest.get(`${this.baseUrl}/`, { params: queryParams, headers: { 'operationName': operationName } });
33
+ return await this.httpRequest.post(`${this.baseUrl}/`, { params: queryParams, headers: { 'operationName': operationName } });
29
34
  }
30
35
  };
31
36
  exports.DirectoryApi = DirectoryApi;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/api-invoker",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Sirve como un puente entre diferentes funciones lambda, facilitando la comunicación entre ellas a traves de invocaciones http",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -12,11 +12,16 @@
12
12
  "author": "Fiado Inc",
13
13
  "license": "ISC",
14
14
  "dependencies": {
15
+ "@fiado/api-invoker": "^1.0.5",
16
+ "@fiado/gateway-adapter": "^1.0.30",
17
+ "@fiado/http-client": "^1.0.1",
15
18
  "@fiado/type-kit": "^1.0.16",
19
+ "dotenv": "^16.4.5",
16
20
  "inversify": "^6.0.2",
17
21
  "reflect-metadata": "^0.2.1",
18
22
  "typescript": "^5.4.3"
19
23
  },
20
24
  "devDependencies": {
25
+ "@types/node": "^20.12.7"
21
26
  }
22
- }
27
+ }
@@ -1,8 +1,7 @@
1
1
 
2
- import { Container } from "inversify";
2
+ import { ContainerModule, interfaces } from "inversify";
3
3
  import { DirectoryApi, IDirectoryApi } from "./directory";
4
4
 
5
-
6
- export const apiInvokerContainer = new Container();
7
-
8
- apiInvokerContainer.bind<IDirectoryApi>("IDirectoryApi").to(DirectoryApi);
5
+ export const apiInvokerBindings = new ContainerModule((bind: interfaces.Bind) => {
6
+ bind<IDirectoryApi>("IDirectoryApi").to(DirectoryApi)
7
+ });
@@ -2,6 +2,8 @@
2
2
  import { inject, injectable } from "inversify";
3
3
  import { IDirectoryApi } from "./interfaces/IDirectoryApi";
4
4
  import { IHttpRequest } from "@fiado/http-client";
5
+ import dotenv from 'dotenv';
6
+ dotenv.config();
5
7
 
6
8
  @injectable()
7
9
  export class DirectoryApi implements IDirectoryApi {
@@ -19,6 +21,6 @@ export class DirectoryApi implements IDirectoryApi {
19
21
  const queryParams = ids.map(id => `directoryId=${id}`).join('&');
20
22
  const operationName = "getUserInfoByIds";
21
23
 
22
- return await this.httpRequest.get(`${this.baseUrl}/`, { params: queryParams, headers: { 'operationName': operationName } });
24
+ return await this.httpRequest.post(`${this.baseUrl}/`, { params: queryParams, headers: { 'operationName': operationName } });
23
25
  }
24
26
  }