@trayio/cdk-runtime 2.6.0 → 2.8.0

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.
@@ -1,12 +1,14 @@
1
1
  import { OperationHandlerAuth, OperationHandlerContext, OperationHandlerResult } from '@trayio/cdk-dsl/connector/operation/OperationHandler';
2
2
  import { HttpOperationHandler } from '@trayio/cdk-dsl/connector/operation/HttpOperationHandler';
3
3
  import { HttpClient } from '@trayio/commons/http/HttpClient';
4
+ import { FileStorage } from '@trayio/commons/file/File';
4
5
  import { OperationExecution } from './OperationExecution';
5
6
  export declare class HttpOperationExecution<AUTH extends OperationHandlerAuth<unknown, unknown>, IN, OUT> implements OperationExecution<AUTH, IN, OUT> {
6
7
  private jsonSerialization;
7
8
  private httpClient;
8
9
  private handler;
9
- constructor(httpClient: HttpClient, handler: HttpOperationHandler<AUTH, IN, OUT>);
10
+ private fileStorage;
11
+ constructor(httpClient: HttpClient, fileStorage: FileStorage, handler: HttpOperationHandler<AUTH, IN, OUT>);
10
12
  execute(ctx: OperationHandlerContext<AUTH>, input: IN): Promise<OperationHandlerResult<OUT>>;
11
13
  private operationRequestToHttpRequest;
12
14
  private serializeAsJson;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpOperationExecution.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/HttpOperationExecution.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EAGtB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAEN,oBAAoB,EAKpB,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAc7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,sBAAsB,CAClC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EACnD,EAAE,EACF,GAAG,CACF,YAAW,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;IAE7C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAsC;gBAGpD,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;IAOvC,OAAO,CACZ,GAAG,EAAE,uBAAuB,CAAC,IAAI,CAAC,EAClC,KAAK,EAAE,EAAE,GACP,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAiDvC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,gBAAgB;CAexB"}
1
+ {"version":3,"file":"HttpOperationExecution.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/HttpOperationExecution.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EAGtB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAEN,oBAAoB,EAKpB,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAe7D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,qBAAa,sBAAsB,CAClC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EACnD,EAAE,EACF,GAAG,CACF,YAAW,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;IAE7C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,WAAW,CAAc;gBAGhC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;IAQvC,OAAO,CACZ,GAAG,EAAE,uBAAuB,CAAC,IAAI,CAAC,EAClC,KAAK,EAAE,EAAE,GACP,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAiDvC,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,gBAAgB;CAexB"}
@@ -36,16 +36,19 @@ exports.HttpOperationExecution = void 0;
36
36
  const OperationHandler_1 = require("@trayio/cdk-dsl/connector/operation/OperationHandler");
37
37
  const HttpOperationHandler_1 = require("@trayio/cdk-dsl/connector/operation/HttpOperationHandler");
38
38
  const Http_1 = require("@trayio/commons/http/Http");
39
+ const uuid_1 = require("uuid");
39
40
  const JsonSerialization_1 = require("@trayio/commons/serialization/JsonSerialization");
40
41
  const TE = __importStar(require("fp-ts/TaskEither"));
41
42
  const E = __importStar(require("fp-ts/Either"));
42
43
  const O = __importStar(require("fp-ts/Option"));
43
44
  const function_1 = require("fp-ts/function");
44
45
  const BufferExtensions_1 = require("@trayio/commons/buffer/BufferExtensions");
46
+ const mime = require('mime');
45
47
  class HttpOperationExecution {
46
- constructor(httpClient, handler) {
48
+ constructor(httpClient, fileStorage, handler) {
47
49
  this.jsonSerialization = new JsonSerialization_1.JsonSerialization();
48
50
  this.httpClient = httpClient;
51
+ this.fileStorage = fileStorage;
49
52
  this.handler = handler;
50
53
  }
51
54
  execute(ctx, input) {
@@ -145,7 +148,26 @@ class HttpOperationExecution {
145
148
  return TE.right(operationResponse.responseParser(undefined));
146
149
  }
147
150
  parseBodyAsFile(operationResponse) {
148
- return TE.right(OperationHandler_1.OperationHandlerResult.failure(OperationHandler_1.OperationHandlerError.connectorError('not implemented')));
151
+ var _a;
152
+ const contentType = (operationResponse.response.headers[Http_1.HttpHeader.ContentType.toLowerCase()]);
153
+ const fileExtension = mime.getExtension(contentType);
154
+ return (0, function_1.pipe)(this.fileStorage.write({
155
+ content: operationResponse.response.body,
156
+ key: fileExtension ? `${(0, uuid_1.v4)()}.${fileExtension}` : (0, uuid_1.v4)(),
157
+ metadata: {
158
+ name: (0, uuid_1.v4)(),
159
+ size: parseFloat((_a = (operationResponse.response.headers[Http_1.HttpHeader.ContentLength.toLowerCase()])) !== null && _a !== void 0 ? _a : undefined),
160
+ contentType,
161
+ },
162
+ }), TE.chain((file) => (0, function_1.pipe)(this.fileStorage.getSharedUrl(file.key), TE.map((sharedUrl) => {
163
+ var _a, _b;
164
+ return operationResponse.responseParser({
165
+ name: file.metadata.name,
166
+ url: sharedUrl.url,
167
+ mime_type: (_a = file.metadata.contentType) !== null && _a !== void 0 ? _a : '',
168
+ expires: (_b = sharedUrl.expires) !== null && _b !== void 0 ? _b : 0,
169
+ });
170
+ }))));
149
171
  }
150
172
  parseeBodyAsText(operationResponse) {
151
173
  const arrayBufferTE = BufferExtensions_1.BufferExtensions.readableToArrayBuffer(operationResponse.response.body);
@@ -1,10 +1,12 @@
1
1
  import { OperationHandlerAuth } from '@trayio/cdk-dsl/connector/operation/OperationHandler';
2
2
  import { HttpOperationHandler } from '@trayio/cdk-dsl/connector/operation/HttpOperationHandler';
3
3
  import { HttpClient } from '@trayio/commons/http/HttpClient';
4
+ import { FileStorage } from '@trayio/commons/dist/file/File';
4
5
  import { OperationExecution } from './OperationExecution';
5
6
  export declare class HttpOperationExecutionFactory {
6
7
  private httpClient;
7
- constructor(httpClient: HttpClient);
8
+ private fileStorage;
9
+ constructor(httpClient: HttpClient, fileStorage: FileStorage);
8
10
  executionFrom<AUTH extends OperationHandlerAuth<unknown, unknown>, IN, OUT>(handler: HttpOperationHandler<AUTH, IN, OUT>): OperationExecution<AUTH, IN, OUT>;
9
11
  }
10
12
  //# sourceMappingURL=HttpOperationExecutionFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpOperationExecutionFactory.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/HttpOperationExecutionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,6BAA6B;IAC7B,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C,aAAa,CAAC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EACzE,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAC1C,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;CAGpC"}
1
+ {"version":3,"file":"HttpOperationExecutionFactory.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/HttpOperationExecutionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,6BAA6B;IAExC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;gBADX,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW;IAGjC,aAAa,CAAC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EACzE,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAC1C,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;CAOpC"}
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HttpOperationExecutionFactory = void 0;
4
4
  const HttpOperationExecution_1 = require("./HttpOperationExecution");
5
5
  class HttpOperationExecutionFactory {
6
- constructor(httpClient) {
6
+ constructor(httpClient, fileStorage) {
7
7
  this.httpClient = httpClient;
8
+ this.fileStorage = fileStorage;
8
9
  }
9
10
  executionFrom(handler) {
10
- return new HttpOperationExecution_1.HttpOperationExecution(this.httpClient, handler);
11
+ return new HttpOperationExecution_1.HttpOperationExecution(this.httpClient, this.fileStorage, handler);
11
12
  }
12
13
  }
13
14
  exports.HttpOperationExecutionFactory = HttpOperationExecutionFactory;
@@ -1,13 +1,14 @@
1
1
  import { OperationHandler } from '@trayio/cdk-dsl/connector/operation/OperationHandlerSetup';
2
2
  import { OperationHandlerAuth } from '@trayio/cdk-dsl/connector/operation/OperationHandler';
3
3
  import { HttpClient } from '@trayio/commons/http/HttpClient';
4
+ import { FileStorage } from '@trayio/commons/file/File';
4
5
  import { OperationExecution } from './OperationExecution';
5
6
  import { OperationHandlerInvocationFactory } from './OperationHandlerInvocationFactory';
6
7
  export declare class OperationExecutionFactory {
7
8
  private operationExecutionValidationFactory;
8
9
  private httpOperationExecutionFactory;
9
10
  private compositeOperationExecutionFactory;
10
- constructor(httpClient: HttpClient, operationHandlerInvocationFactory: OperationHandlerInvocationFactory);
11
+ constructor(httpClient: HttpClient, fileStorage: FileStorage, operationHandlerInvocationFactory: OperationHandlerInvocationFactory);
11
12
  executionFrom<AUTH extends OperationHandlerAuth<unknown, unknown>, IN, OUT>(handler: OperationHandler<AUTH, IN, OUT>): OperationExecution<AUTH, IN, OUT>;
12
13
  private executionFromImplementation;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OperationExecutionFactory.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/OperationExecutionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAEhB,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAGxF,qBAAa,yBAAyB;IACrC,OAAO,CAAC,mCAAmC,CAAsC;IACjF,OAAO,CAAC,6BAA6B,CAAgC;IACrE,OAAO,CAAC,kCAAkC,CAAqC;gBAG9E,UAAU,EAAE,UAAU,EACtB,iCAAiC,EAAE,iCAAiC;IAWrE,aAAa,CAAC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EACzE,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GACtC,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;IAYpC,OAAO,CAAC,2BAA2B;CAoBnC"}
1
+ {"version":3,"file":"OperationExecutionFactory.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/OperationExecutionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAEhB,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAGxF,qBAAa,yBAAyB;IACrC,OAAO,CAAC,mCAAmC,CAAsC;IACjF,OAAO,CAAC,6BAA6B,CAAgC;IACrE,OAAO,CAAC,kCAAkC,CAAqC;gBAG9E,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,iCAAiC,EAAE,iCAAiC;IAYrE,aAAa,CAAC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EACzE,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GACtC,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC;IAYpC,OAAO,CAAC,2BAA2B;CAoBnC"}
@@ -5,10 +5,10 @@ const HttpOperationExecutionFactory_1 = require("./HttpOperationExecutionFactory
5
5
  const CompositeOperationExecutionFactory_1 = require("./CompositeOperationExecutionFactory");
6
6
  const OperationExecutionValidationFactory_1 = require("./OperationExecutionValidationFactory");
7
7
  class OperationExecutionFactory {
8
- constructor(httpClient, operationHandlerInvocationFactory) {
8
+ constructor(httpClient, fileStorage, operationHandlerInvocationFactory) {
9
9
  this.operationExecutionValidationFactory =
10
10
  new OperationExecutionValidationFactory_1.OperationExecutionValidationFactory();
11
- this.httpOperationExecutionFactory = new HttpOperationExecutionFactory_1.HttpOperationExecutionFactory(httpClient);
11
+ this.httpOperationExecutionFactory = new HttpOperationExecutionFactory_1.HttpOperationExecutionFactory(httpClient, fileStorage);
12
12
  this.compositeOperationExecutionFactory =
13
13
  new CompositeOperationExecutionFactory_1.CompositeOperationExecutionFactory(operationHandlerInvocationFactory);
14
14
  }
@@ -1,12 +1,13 @@
1
1
  import * as O from 'fp-ts/Option';
2
2
  import { OperationHandlerAuth, OperationHandlerReference } from '@trayio/cdk-dsl/connector/operation/OperationHandler';
3
3
  import { HttpClient } from '@trayio/commons/http/HttpClient';
4
+ import { FileStorage } from '@trayio/commons/file/File';
4
5
  import { OperationHandlerInvocationFactory } from './OperationHandlerInvocationFactory';
5
6
  import { OperationExecution } from './OperationExecution';
6
7
  export declare class OperationExecutionGateway {
7
8
  private executionFactory;
8
9
  operationHandlerInvocationFactory: OperationHandlerInvocationFactory;
9
- constructor(httpClient: HttpClient);
10
+ constructor(httpClient: HttpClient, fileStorage: FileStorage);
10
11
  lookup<AUTH extends OperationHandlerAuth<unknown, unknown>, IN, OUT>(handlerReference: OperationHandlerReference<AUTH, IN, OUT>, includePrivate: boolean): O.Option<OperationExecution<AUTH, IN, OUT>>;
11
12
  }
12
13
  //# sourceMappingURL=OperationExecutionGateway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OperationExecutionGateway.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/OperationExecutionGateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,OAAO,EACN,oBAAoB,EAEpB,yBAAyB,EAGzB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,yBAAyB;IACrC,OAAO,CAAC,gBAAgB,CAA4B;IACpD,iCAAiC,EAAE,iCAAiC,CAAC;gBAEzD,UAAU,EAAE,UAAU;IA6BlC,MAAM,CAAC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAClE,gBAAgB,EAAE,yBAAyB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAC1D,cAAc,EAAE,OAAO,GACrB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;CAO9C"}
1
+ {"version":3,"file":"OperationExecutionGateway.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/OperationExecutionGateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,OAAO,EACN,oBAAoB,EAEpB,yBAAyB,EAGzB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,yBAAyB;IACrC,OAAO,CAAC,gBAAgB,CAA4B;IACpD,iCAAiC,EAAE,iCAAiC,CAAC;gBAEzD,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW;IA8B5D,MAAM,CAAC,IAAI,SAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAClE,gBAAgB,EAAE,yBAAyB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAC1D,cAAc,EAAE,OAAO,GACrB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;CAO9C"}
@@ -30,13 +30,13 @@ const OperationHandler_1 = require("@trayio/cdk-dsl/connector/operation/Operatio
30
30
  const OperationHandlerSetup_1 = require("@trayio/cdk-dsl/connector/operation/OperationHandlerSetup");
31
31
  const OperationExecutionFactory_1 = require("./OperationExecutionFactory");
32
32
  class OperationExecutionGateway {
33
- constructor(httpClient) {
33
+ constructor(httpClient, fileStorage) {
34
34
  const operationHandlerInvocationFactory = (ctx) => (handlerReference) => (input) => {
35
35
  const result = (0, function_1.pipe)(this.lookup(handlerReference, true), O.map((handlerExecution) => handlerExecution.execute(ctx, input)));
36
36
  return O.getOrElse(() => Promise.resolve(OperationHandler_1.OperationHandlerResult.failure(OperationHandler_1.OperationHandlerError.connectorError(`Handler for reference ${handlerReference.name} not found`))))(result);
37
37
  };
38
38
  this.operationHandlerInvocationFactory = operationHandlerInvocationFactory;
39
- this.executionFactory = new OperationExecutionFactory_1.OperationExecutionFactory(httpClient, operationHandlerInvocationFactory);
39
+ this.executionFactory = new OperationExecutionFactory_1.OperationExecutionFactory(httpClient, fileStorage, operationHandlerInvocationFactory);
40
40
  }
41
41
  lookup(handlerReference, includePrivate) {
42
42
  return (0, function_1.pipe)(OperationHandlerSetup_1.OperationHandlerRegistry.resolve(handlerReference), O.filter((handler) => includePrivate || !handler.isPrivate), O.map((handler) => this.executionFactory.executionFrom(handler)));
@@ -1 +1 @@
1
- {"version":3,"file":"OperationExecutionGateway.unit.test.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/OperationExecutionGateway.unit.test.ts"],"names":[],"mappings":"AAIA,OAAO,8BAA8B,CAAC"}
1
+ {"version":3,"file":"OperationExecutionGateway.unit.test.d.ts","sourceRoot":"","sources":["../../../src/connector/operation/OperationExecutionGateway.unit.test.ts"],"names":[],"mappings":"AAOA,OAAO,8BAA8B,CAAC"}
@@ -176,4 +176,26 @@ describe('OperationExecutionGateway', () => {
176
176
  .finallyDoNothing())
177
177
  .nothingAfterAll());
178
178
  });
179
+ describe('download a file', () => {
180
+ const downloadFileOperation = OperationHandlerSetup_1.OperationHandlerSetup.configureHandler((handler) => handler.usingHttp((http) => http
181
+ .get('https://tray.io/favicon.ico')
182
+ .handleRequest((ctx, input, request) => request.withoutBody())
183
+ .handleResponse((ctx, input, response) => response.parseWithBodyAsFile((file) => OperationHandler_1.OperationHandlerResult.success(file)))));
184
+ OperationHandlerTest_1.OperationHandlerTestSetup.configureHandlerTest(downloadFileOperation, (handlerTest) => handlerTest
185
+ .usingHandlerContext('test')
186
+ .nothingBeforeAll()
187
+ .testCase('should download a file', (testCase) => testCase
188
+ .usingHandlerContext('test')
189
+ .givenNothing()
190
+ .when(() => ({}))
191
+ .then(({ output }) => {
192
+ const outputValue = OperationHandler_1.OperationHandlerResult.getSuccessfulValueOrFail(output);
193
+ expect(outputValue.url).toBeDefined();
194
+ expect(outputValue.name).toBeDefined();
195
+ expect(outputValue.mime_type).toBeDefined();
196
+ expect(outputValue.expires).toBeDefined();
197
+ })
198
+ .finallyDoNothing())
199
+ .nothingAfterAll());
200
+ });
179
201
  });
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const OperationHandlerTest_1 = require("@trayio/cdk-dsl/connector/operation/OperationHandlerTest");
4
4
  const AxiosHttpClient_1 = require("@trayio/axios/http/AxiosHttpClient");
5
+ const NodeFsFileStorage_1 = require("@trayio/commons/file/NodeFsFileStorage");
5
6
  const OperationExecutionGateway_1 = require("./OperationExecutionGateway");
6
7
  const OperationExecutionTestRunner_1 = require("./OperationExecutionTestRunner");
7
- const executionGateway = new OperationExecutionGateway_1.OperationExecutionGateway(new AxiosHttpClient_1.AxiosHttpClient());
8
+ const executionGateway = new OperationExecutionGateway_1.OperationExecutionGateway(new AxiosHttpClient_1.AxiosHttpClient(), new NodeFsFileStorage_1.NodeFsFileStorage());
8
9
  const testRunner = new OperationExecutionTestRunner_1.OperationExecutionTestRunner(executionGateway);
9
10
  OperationHandlerTest_1.OperationHandlerTestRegistry.onRegistration((handlerReference) => {
10
11
  testRunner.runTestFor(handlerReference);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trayio/cdk-runtime",
3
- "version": "2.6.0",
3
+ "version": "2.8.0",
4
4
  "description": "A Runtime that executes connector operations defined using the CDK DSL",
5
5
  "exports": {
6
6
  "./*": "./dist/*.js"
@@ -14,10 +14,12 @@
14
14
  "node": ">=18.x"
15
15
  },
16
16
  "dependencies": {
17
- "@trayio/axios": "2.6.0",
18
- "@trayio/cdk-dsl": "2.6.0",
19
- "@trayio/express": "2.6.0",
20
- "@trayio/winston": "2.6.0"
17
+ "@trayio/axios": "2.8.0",
18
+ "@trayio/cdk-dsl": "2.8.0",
19
+ "@trayio/express": "2.8.0",
20
+ "@trayio/winston": "2.8.0",
21
+ "mime": "3.0.0",
22
+ "uuid": "9.0.0"
21
23
  },
22
24
  "typesVersions": {
23
25
  "*": {