@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.
- package/CHANGELOG.md +8 -0
- package/LICENSE.md +21 -0
- package/client/bootstrap.js +1 -0
- package/client/index.js +0 -0
- package/client/pages/main.js +25 -0
- package/client/route.js +10 -0
- package/client/themes/app-theme.css +59 -0
- package/config/config.development.js +1 -0
- package/config/config.production.js +1 -0
- package/dist-server/controllers/herbalife/apis/echo.js +19 -0
- package/dist-server/controllers/herbalife/apis/echo.js.map +1 -0
- package/dist-server/controllers/herbalife/apis/get-outbound-order.js +73 -0
- package/dist-server/controllers/herbalife/apis/get-outbound-order.js.map +1 -0
- package/dist-server/controllers/herbalife/apis/index.js +15 -0
- package/dist-server/controllers/herbalife/apis/index.js.map +1 -0
- package/dist-server/controllers/herbalife/herbalife.js +20 -0
- package/dist-server/controllers/herbalife/herbalife.js.map +1 -0
- package/dist-server/controllers/herbalife/index.js +30 -0
- package/dist-server/controllers/herbalife/index.js.map +1 -0
- package/dist-server/controllers/herbalife/platform-action.js +30 -0
- package/dist-server/controllers/herbalife/platform-action.js.map +1 -0
- package/dist-server/controllers/index.js +15 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/controllers/sftp-api/decorators.js +30 -0
- package/dist-server/controllers/sftp-api/decorators.js.map +1 -0
- package/dist-server/controllers/sftp-api/index.js +50 -0
- package/dist-server/controllers/sftp-api/index.js.map +1 -0
- package/dist-server/controllers/sftp-api/types.js +1 -0
- package/dist-server/controllers/sftp-api/types.js.map +1 -0
- package/dist-server/index.js +18 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/middlewares/index.js +8 -0
- package/dist-server/middlewares/index.js.map +1 -0
- package/dist-server/routes.js +25 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/index.js +28 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/sftp/index.js +9 -0
- package/dist-server/service/sftp/index.js.map +1 -0
- package/dist-server/service/sftp/sftp-mutation.js +191 -0
- package/dist-server/service/sftp/sftp-mutation.js.map +1 -0
- package/dist-server/service/sftp/sftp-query.js +87 -0
- package/dist-server/service/sftp/sftp-query.js.map +1 -0
- package/dist-server/service/sftp/sftp-type.js +113 -0
- package/dist-server/service/sftp/sftp-type.js.map +1 -0
- package/dist-server/service/sftp/sftp.js +131 -0
- package/dist-server/service/sftp/sftp.js.map +1 -0
- package/dist-server/sftp-const.js +9 -0
- package/dist-server/sftp-const.js.map +1 -0
- package/dist-server/sftp-s3.js +53 -0
- package/dist-server/sftp-s3.js.map +1 -0
- package/dist-server/util/get-permitted-directories.js +16 -0
- package/dist-server/util/get-permitted-directories.js.map +1 -0
- package/dist-server/util/index.js +14 -0
- package/dist-server/util/index.js.map +1 -0
- package/package.json +36 -0
- package/server/controllers/herbalife/apis/echo.ts +14 -0
- package/server/controllers/herbalife/apis/get-outbound-order.ts +76 -0
- package/server/controllers/herbalife/apis/index.ts +2 -0
- package/server/controllers/herbalife/herbalife.ts +22 -0
- package/server/controllers/herbalife/index.ts +7 -0
- package/server/controllers/herbalife/platform-action.ts +34 -0
- package/server/controllers/index.ts +3 -0
- package/server/controllers/sftp-api/decorators.ts +43 -0
- package/server/controllers/sftp-api/index.ts +33 -0
- package/server/controllers/sftp-api/types.ts +0 -0
- package/server/index.ts +6 -0
- package/server/middlewares/index.ts +3 -0
- package/server/routes.ts +28 -0
- package/server/service/index.ts +18 -0
- package/server/service/sftp/index.ts +6 -0
- package/server/service/sftp/sftp-mutation.ts +185 -0
- package/server/service/sftp/sftp-query.ts +45 -0
- package/server/service/sftp/sftp-type.ts +72 -0
- package/server/service/sftp/sftp.ts +106 -0
- package/server/sftp-const.ts +6 -0
- package/server/sftp-s3.ts +64 -0
- package/server/util/get-permitted-directories.ts +15 -0
- package/server/util/index.ts +1 -0
- package/things-factory.config.js +13 -0
- package/translations/en.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- 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 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|