@things-factory/integration-sftp 3.8.8

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 (85) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE.md +21 -0
  3. package/client/bootstrap.js +1 -0
  4. package/client/index.js +0 -0
  5. package/client/pages/main.js +25 -0
  6. package/client/route.js +10 -0
  7. package/client/themes/app-theme.css +59 -0
  8. package/config/config.development.js +1 -0
  9. package/config/config.production.js +1 -0
  10. package/dist-server/controllers/herbalife/apis/echo.js +19 -0
  11. package/dist-server/controllers/herbalife/apis/echo.js.map +1 -0
  12. package/dist-server/controllers/herbalife/apis/get-outbound-order.js +73 -0
  13. package/dist-server/controllers/herbalife/apis/get-outbound-order.js.map +1 -0
  14. package/dist-server/controllers/herbalife/apis/index.js +15 -0
  15. package/dist-server/controllers/herbalife/apis/index.js.map +1 -0
  16. package/dist-server/controllers/herbalife/herbalife.js +20 -0
  17. package/dist-server/controllers/herbalife/herbalife.js.map +1 -0
  18. package/dist-server/controllers/herbalife/index.js +30 -0
  19. package/dist-server/controllers/herbalife/index.js.map +1 -0
  20. package/dist-server/controllers/herbalife/platform-action.js +30 -0
  21. package/dist-server/controllers/herbalife/platform-action.js.map +1 -0
  22. package/dist-server/controllers/index.js +15 -0
  23. package/dist-server/controllers/index.js.map +1 -0
  24. package/dist-server/controllers/sftp-api/decorators.js +30 -0
  25. package/dist-server/controllers/sftp-api/decorators.js.map +1 -0
  26. package/dist-server/controllers/sftp-api/index.js +50 -0
  27. package/dist-server/controllers/sftp-api/index.js.map +1 -0
  28. package/dist-server/controllers/sftp-api/types.js +1 -0
  29. package/dist-server/controllers/sftp-api/types.js.map +1 -0
  30. package/dist-server/index.js +18 -0
  31. package/dist-server/index.js.map +1 -0
  32. package/dist-server/middlewares/index.js +8 -0
  33. package/dist-server/middlewares/index.js.map +1 -0
  34. package/dist-server/routes.js +25 -0
  35. package/dist-server/routes.js.map +1 -0
  36. package/dist-server/service/index.js +28 -0
  37. package/dist-server/service/index.js.map +1 -0
  38. package/dist-server/service/sftp/index.js +9 -0
  39. package/dist-server/service/sftp/index.js.map +1 -0
  40. package/dist-server/service/sftp/sftp-mutation.js +191 -0
  41. package/dist-server/service/sftp/sftp-mutation.js.map +1 -0
  42. package/dist-server/service/sftp/sftp-query.js +87 -0
  43. package/dist-server/service/sftp/sftp-query.js.map +1 -0
  44. package/dist-server/service/sftp/sftp-type.js +113 -0
  45. package/dist-server/service/sftp/sftp-type.js.map +1 -0
  46. package/dist-server/service/sftp/sftp.js +131 -0
  47. package/dist-server/service/sftp/sftp.js.map +1 -0
  48. package/dist-server/sftp-const.js +9 -0
  49. package/dist-server/sftp-const.js.map +1 -0
  50. package/dist-server/sftp-s3.js +53 -0
  51. package/dist-server/sftp-s3.js.map +1 -0
  52. package/dist-server/util/get-permitted-directories.js +16 -0
  53. package/dist-server/util/get-permitted-directories.js.map +1 -0
  54. package/dist-server/util/index.js +14 -0
  55. package/dist-server/util/index.js.map +1 -0
  56. package/package.json +36 -0
  57. package/server/controllers/herbalife/apis/echo.ts +14 -0
  58. package/server/controllers/herbalife/apis/get-outbound-order.ts +76 -0
  59. package/server/controllers/herbalife/apis/index.ts +2 -0
  60. package/server/controllers/herbalife/herbalife.ts +22 -0
  61. package/server/controllers/herbalife/index.ts +7 -0
  62. package/server/controllers/herbalife/platform-action.ts +34 -0
  63. package/server/controllers/index.ts +3 -0
  64. package/server/controllers/sftp-api/decorators.ts +43 -0
  65. package/server/controllers/sftp-api/index.ts +33 -0
  66. package/server/controllers/sftp-api/types.ts +0 -0
  67. package/server/index.ts +6 -0
  68. package/server/middlewares/index.ts +3 -0
  69. package/server/routes.ts +28 -0
  70. package/server/service/index.ts +18 -0
  71. package/server/service/sftp/index.ts +6 -0
  72. package/server/service/sftp/sftp-mutation.ts +185 -0
  73. package/server/service/sftp/sftp-query.ts +45 -0
  74. package/server/service/sftp/sftp-type.ts +72 -0
  75. package/server/service/sftp/sftp.ts +106 -0
  76. package/server/sftp-const.ts +6 -0
  77. package/server/sftp-s3.ts +64 -0
  78. package/server/util/get-permitted-directories.ts +15 -0
  79. package/server/util/index.ts +1 -0
  80. package/things-factory.config.js +13 -0
  81. package/translations/en.json +1 -0
  82. package/translations/ko.json +1 -0
  83. package/translations/ms.json +1 -0
  84. package/translations/zh.json +1 -0
  85. package/tsconfig.json +9 -0
@@ -0,0 +1,106 @@
1
+ import { Field, ID, ObjectType } from 'type-graphql'
2
+ import {
3
+ Column,
4
+ CreateDateColumn,
5
+ Entity,
6
+ Index,
7
+ ManyToOne,
8
+ PrimaryGeneratedColumn,
9
+ RelationId,
10
+ UpdateDateColumn
11
+ } from 'typeorm'
12
+
13
+ import { User } from '@things-factory/auth-base'
14
+ import { FulfillmentCenter } from '@things-factory/integration-fulfillment'
15
+ import { Domain } from '@things-factory/shell'
16
+
17
+ @Entity()
18
+ @Index('ix_sftp_0', (sftp: Sftp) => [sftp.domain, sftp.name], { unique: true })
19
+ @ObjectType({ description: 'Entity for Sftp' })
20
+ export class Sftp {
21
+ @PrimaryGeneratedColumn('uuid')
22
+ @Field(type => ID)
23
+ readonly id: string
24
+
25
+ @ManyToOne(type => Domain)
26
+ @Field({ nullable: true })
27
+ domain?: Domain
28
+
29
+ @RelationId((sftp: Sftp) => sftp.domain)
30
+ domainId?: string
31
+
32
+ @Column()
33
+ @Field()
34
+ name: string
35
+
36
+ @Column({
37
+ nullable: true
38
+ })
39
+ @Field({ nullable: true })
40
+ description?: string
41
+
42
+ @Column({
43
+ nullable: true
44
+ })
45
+ @Field({ nullable: true })
46
+ username?: string
47
+
48
+ @Column({
49
+ nullable: true
50
+ })
51
+ @Field({ nullable: true })
52
+ publicKey?: string
53
+
54
+ @Column({
55
+ nullable: true
56
+ })
57
+ @Field({ nullable: true })
58
+ privateKey?: string
59
+
60
+ @Column({
61
+ nullable: true
62
+ })
63
+ @Field({ nullable: true })
64
+ folderPath?: string
65
+
66
+ @Column({
67
+ nullable: true
68
+ })
69
+ @Field({ nullable: true })
70
+ isDevelopment?: boolean
71
+
72
+ @Column({
73
+ nullable: true
74
+ })
75
+ @Field({ nullable: true })
76
+ platform?: string
77
+
78
+ @ManyToOne(type => FulfillmentCenter, { nullable: true })
79
+ fulfillmentCenter: FulfillmentCenter
80
+
81
+ @CreateDateColumn()
82
+ @Field({ nullable: true })
83
+ createdAt?: Date
84
+
85
+ @UpdateDateColumn()
86
+ @Field({ nullable: true })
87
+ updatedAt?: Date
88
+
89
+ @ManyToOne(type => User, {
90
+ nullable: true
91
+ })
92
+ @Field({ nullable: true })
93
+ creator?: User
94
+
95
+ @RelationId((sftp: Sftp) => sftp.creator)
96
+ creatorId?: string
97
+
98
+ @ManyToOne(type => User, {
99
+ nullable: true
100
+ })
101
+ @Field({ nullable: true })
102
+ updater?: User
103
+
104
+ @RelationId((sftp: Sftp) => sftp.creator)
105
+ updaterId?: string
106
+ }
@@ -0,0 +1,6 @@
1
+ import { config } from '@things-factory/env'
2
+
3
+ export var SFTPFILESTORAGE: any = config.get('sftpFileStorage')
4
+ export var SUBMITDATAPATH: string = '/submit_outbound/data'
5
+ export var SUCCESSDATAPATH: string = '/submit_outbound/success'
6
+ export var FAILEDDATAPATH: string = '/submit_outbound/failed'
@@ -0,0 +1,64 @@
1
+ import AWS from 'aws-sdk'
2
+
3
+ import { logger } from '@things-factory/env'
4
+
5
+ import { SFTPFILESTORAGE } from './sftp-const'
6
+
7
+ const { PassThrough } = require('stream')
8
+ const mime = require('mime')
9
+ const { fs } = require('memfs')
10
+
11
+ if (SFTPFILESTORAGE && SFTPFILESTORAGE.type == 's3') {
12
+ const S3 = new AWS.S3({
13
+ accessKeyId: SFTPFILESTORAGE.accessKeyId,
14
+ secretAccessKey: SFTPFILESTORAGE.secretAccessKey
15
+ })
16
+
17
+ SFTPFILESTORAGE.readFolders = async (params, encoding) => {
18
+ var S3params = {
19
+ Bucket: SFTPFILESTORAGE.bucketName,
20
+ Delimiter: '/',
21
+ Prefix: params.path
22
+ }
23
+
24
+ const result = await S3.listObjects(S3params).promise()
25
+
26
+ var body = result.Contents
27
+
28
+ return body
29
+ }
30
+
31
+ SFTPFILESTORAGE.readFile = async (path, encoding) => {
32
+ const result = await S3.getObject({
33
+ Bucket: SFTPFILESTORAGE.bucketName,
34
+ Key: path
35
+ }).promise()
36
+
37
+ var body = result.Body
38
+
39
+ if (encoding) {
40
+ return body.toString(encoding)
41
+ }
42
+
43
+ return body
44
+ }
45
+
46
+ SFTPFILESTORAGE.moveFile = async (path, encoding) => {
47
+ const copyResult = await S3.copyObject({
48
+ Bucket: SFTPFILESTORAGE.bucketName,
49
+ CopySource: SFTPFILESTORAGE.bucketName + '/' + path.source,
50
+ Key: path.destination
51
+ }).promise()
52
+
53
+ var copyBody = copyResult.CopyObjectResult
54
+
55
+ const deleteResult = await S3.deleteObject({
56
+ Bucket: SFTPFILESTORAGE.bucketName,
57
+ Key: path.source
58
+ }).promise()
59
+
60
+ return true
61
+ }
62
+
63
+ logger.info('S3 Bucket Storage is Ready.')
64
+ }
@@ -0,0 +1,15 @@
1
+ import '../sftp-s3'
2
+
3
+ import { SFTPFILESTORAGE } from '../sftp-const'
4
+
5
+ export async function getPermittedDirectories(params: any, context: any) {
6
+ const sftpDirectories: any[] = await SFTPFILESTORAGE.readFolders(params)
7
+
8
+ return sftpDirectories
9
+ }
10
+
11
+ export async function readFile(fileKey: any) {
12
+ const file: any = await SFTPFILESTORAGE.readFile(fileKey, 'utf-8')
13
+
14
+ return file
15
+ }
@@ -0,0 +1 @@
1
+ export * from './get-permitted-directories'
@@ -0,0 +1,13 @@
1
+ import route from './client/route'
2
+ import bootstrap from './client/bootstrap'
3
+
4
+ export default {
5
+ route,
6
+ routes: [
7
+ {
8
+ tagname: 'integration-sftp-main',
9
+ page: 'integration-sftp-main'
10
+ }
11
+ ],
12
+ bootstrap
13
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1 @@
1
+ {}
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../tsconfig-base.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist-server",
5
+ "baseUrl": "./"
6
+ },
7
+ "include": ["./server/**/*"],
8
+ "exclude": ["**/*.spec.ts"]
9
+ }