@things-factory/integration-base 8.0.40 → 9.0.0-9.0.0-beta.59.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.
Files changed (169) hide show
  1. package/dist-server/engine/connector/headless-connector.d.ts +23 -0
  2. package/dist-server/engine/connector/headless-connector.js +357 -0
  3. package/dist-server/engine/connector/headless-connector.js.map +1 -0
  4. package/dist-server/engine/connector/http-connector.js +1 -1
  5. package/dist-server/engine/connector/http-connector.js.map +1 -1
  6. package/dist-server/engine/connector/index.d.ts +1 -0
  7. package/dist-server/engine/connector/index.js +1 -0
  8. package/dist-server/engine/connector/index.js.map +1 -1
  9. package/dist-server/engine/index.d.ts +3 -2
  10. package/dist-server/engine/index.js +3 -2
  11. package/dist-server/engine/index.js.map +1 -1
  12. package/dist-server/engine/resource-pool/headless-pool.d.ts +1 -0
  13. package/dist-server/engine/resource-pool/headless-pool.js +62 -0
  14. package/dist-server/engine/resource-pool/headless-pool.js.map +1 -0
  15. package/dist-server/engine/resource-pool/index.d.ts +1 -0
  16. package/dist-server/engine/resource-pool/index.js +5 -0
  17. package/dist-server/engine/resource-pool/index.js.map +1 -0
  18. package/dist-server/engine/task/headless-post.js +19 -33
  19. package/dist-server/engine/task/headless-post.js.map +1 -1
  20. package/dist-server/engine/task/headless-scrap.js +20 -13
  21. package/dist-server/engine/task/headless-scrap.js.map +1 -1
  22. package/dist-server/index.d.ts +6 -6
  23. package/dist-server/index.js +10 -10
  24. package/dist-server/index.js.map +1 -1
  25. package/dist-server/routes.js +6 -6
  26. package/dist-server/routes.js.map +1 -1
  27. package/dist-server/service/connection/connection-mutation.js +17 -5
  28. package/dist-server/service/connection/connection-mutation.js.map +1 -1
  29. package/dist-server/service/connection/connection-query.js +3 -0
  30. package/dist-server/service/connection/connection-query.js.map +1 -1
  31. package/dist-server/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +12 -11
  33. package/translations/en.json +12 -4
  34. package/translations/ja.json +12 -4
  35. package/translations/ko.json +12 -4
  36. package/translations/ms.json +12 -4
  37. package/translations/zh.json +12 -4
  38. package/server/controllers/index.ts +0 -2
  39. package/server/controllers/publish-data.ts +0 -29
  40. package/server/controllers/scenario-controller.ts +0 -154
  41. package/server/engine/analyzer/analyze-integration.ts +0 -115
  42. package/server/engine/connection-manager.ts +0 -232
  43. package/server/engine/connector/echo-back-connector.ts +0 -51
  44. package/server/engine/connector/echo-back-server.ts +0 -72
  45. package/server/engine/connector/graphql-connector.ts +0 -126
  46. package/server/engine/connector/http-connector.ts +0 -65
  47. package/server/engine/connector/index.ts +0 -12
  48. package/server/engine/connector/mqtt-connector.ts +0 -78
  49. package/server/engine/connector/mssql-connector.ts +0 -152
  50. package/server/engine/connector/mysql-connector.ts +0 -94
  51. package/server/engine/connector/operato-connector.ts +0 -264
  52. package/server/engine/connector/oracle-connector.ts +0 -218
  53. package/server/engine/connector/postgresql-connector.ts +0 -152
  54. package/server/engine/connector/proxy-connector.ts +0 -53
  55. package/server/engine/connector/socket-server.ts +0 -86
  56. package/server/engine/connector/sqlite-connector.ts +0 -69
  57. package/server/engine/edge-client.ts +0 -45
  58. package/server/engine/index.ts +0 -10
  59. package/server/engine/pending-queue.ts +0 -97
  60. package/server/engine/scenario-engine.ts +0 -106
  61. package/server/engine/task/book-up-scenario.ts +0 -73
  62. package/server/engine/task/csv-readline.ts +0 -127
  63. package/server/engine/task/data-accessor.ts +0 -36
  64. package/server/engine/task/data-mapper.ts +0 -47
  65. package/server/engine/task/database-query.ts +0 -56
  66. package/server/engine/task/echo-receive.ts +0 -21
  67. package/server/engine/task/echo-send.ts +0 -32
  68. package/server/engine/task/empty-check.ts +0 -38
  69. package/server/engine/task/end.ts +0 -18
  70. package/server/engine/task/floating-point.ts +0 -71
  71. package/server/engine/task/goto.ts +0 -27
  72. package/server/engine/task/graphql-mutate.ts +0 -79
  73. package/server/engine/task/graphql-query.ts +0 -78
  74. package/server/engine/task/headless-post.ts +0 -147
  75. package/server/engine/task/headless-scrap.ts +0 -80
  76. package/server/engine/task/http-get.ts +0 -117
  77. package/server/engine/task/http-post.ts +0 -148
  78. package/server/engine/task/index.ts +0 -45
  79. package/server/engine/task/jsonata.ts +0 -45
  80. package/server/engine/task/local-graphql-mutate.ts +0 -100
  81. package/server/engine/task/local-graphql-query.ts +0 -100
  82. package/server/engine/task/log.ts +0 -78
  83. package/server/engine/task/mqtt-publish.ts +0 -69
  84. package/server/engine/task/mqtt-subscribe.ts +0 -291
  85. package/server/engine/task/mssql-procedure.ts +0 -128
  86. package/server/engine/task/oracle-procedure.ts +0 -124
  87. package/server/engine/task/pick-pending-scenario.ts +0 -80
  88. package/server/engine/task/publish.ts +0 -40
  89. package/server/engine/task/random.ts +0 -53
  90. package/server/engine/task/reset-pending-queue.ts +0 -17
  91. package/server/engine/task/script.ts +0 -63
  92. package/server/engine/task/set-domain.ts +0 -37
  93. package/server/engine/task/sleep.ts +0 -34
  94. package/server/engine/task/socket-listener.ts +0 -96
  95. package/server/engine/task/state-group-read.ts +0 -69
  96. package/server/engine/task/state-read.ts +0 -56
  97. package/server/engine/task/state-write.ts +0 -65
  98. package/server/engine/task/stop-scenario.ts +0 -44
  99. package/server/engine/task/sub-scenario.ts +0 -57
  100. package/server/engine/task/switch-goto.ts +0 -43
  101. package/server/engine/task/switch-range-goto.ts +0 -53
  102. package/server/engine/task/switch-range-scenario.ts +0 -79
  103. package/server/engine/task/switch-range-set.ts +0 -48
  104. package/server/engine/task/switch-scenario.ts +0 -67
  105. package/server/engine/task/switch-set.ts +0 -37
  106. package/server/engine/task/throw.ts +0 -27
  107. package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
  108. package/server/engine/task/utils/substitute.ts +0 -44
  109. package/server/engine/task/variables.ts +0 -17
  110. package/server/engine/task-registry.ts +0 -23
  111. package/server/engine/types.ts +0 -114
  112. package/server/index.ts +0 -20
  113. package/server/migrations/index.ts +0 -9
  114. package/server/restful/index.ts +0 -1
  115. package/server/restful/unstable/index.ts +0 -7
  116. package/server/restful/unstable/run-scenario.ts +0 -51
  117. package/server/restful/unstable/scenario-instance.ts +0 -52
  118. package/server/restful/unstable/scenario-instances.ts +0 -80
  119. package/server/restful/unstable/scenario.ts +0 -41
  120. package/server/restful/unstable/scenarios.ts +0 -69
  121. package/server/restful/unstable/start-scenario.ts +0 -33
  122. package/server/restful/unstable/stop-scenario.ts +0 -30
  123. package/server/routers/scenario-schedule-callback-router.ts +0 -69
  124. package/server/routers/scenario-view-router.ts +0 -46
  125. package/server/routes.ts +0 -35
  126. package/server/service/analysis/analysis-query.ts +0 -13
  127. package/server/service/analysis/index.ts +0 -3
  128. package/server/service/connection/connection-mutation.ts +0 -190
  129. package/server/service/connection/connection-query.ts +0 -87
  130. package/server/service/connection/connection-subscription.ts +0 -104
  131. package/server/service/connection/connection-type.ts +0 -305
  132. package/server/service/connection/index.ts +0 -7
  133. package/server/service/connector/connector-query.ts +0 -62
  134. package/server/service/connector/connector-type.ts +0 -29
  135. package/server/service/connector/index.ts +0 -4
  136. package/server/service/index.ts +0 -52
  137. package/server/service/payload-log/index.ts +0 -7
  138. package/server/service/payload-log/payload-log-mutation.ts +0 -151
  139. package/server/service/payload-log/payload-log-query.ts +0 -49
  140. package/server/service/payload-log/payload-log-type.ts +0 -36
  141. package/server/service/payload-log/payload-log.ts +0 -100
  142. package/server/service/property-spec.ts +0 -24
  143. package/server/service/scenario/index.ts +0 -6
  144. package/server/service/scenario/scenario-mutation.ts +0 -396
  145. package/server/service/scenario/scenario-query.ts +0 -109
  146. package/server/service/scenario/scenario-type.ts +0 -78
  147. package/server/service/scenario/scenario.ts +0 -124
  148. package/server/service/scenario-flow/scenario-flow.ts +0 -17
  149. package/server/service/scenario-instance/index.ts +0 -6
  150. package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
  151. package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
  152. package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
  153. package/server/service/scenario-instance/scenario-instance-type.ts +0 -557
  154. package/server/service/scenario-queue/index.ts +0 -4
  155. package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
  156. package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
  157. package/server/service/state-register/data-resolver.ts +0 -56
  158. package/server/service/state-register/index.ts +0 -8
  159. package/server/service/state-register/state-register-mutation.ts +0 -166
  160. package/server/service/state-register/state-register-query.ts +0 -80
  161. package/server/service/state-register/state-register-type.ts +0 -80
  162. package/server/service/state-register/state-register.ts +0 -113
  163. package/server/service/step/index.ts +0 -6
  164. package/server/service/step/step-mutation.ts +0 -52
  165. package/server/service/step/step-query.ts +0 -55
  166. package/server/service/step/step-type.ts +0 -238
  167. package/server/service/task-type/index.ts +0 -4
  168. package/server/service/task-type/task-type-query.ts +0 -95
  169. package/server/service/task-type/task-type-type.ts +0 -29
@@ -1,71 +0,0 @@
1
- import ieee754 from 'ieee754'
2
- import { access } from '@things-factory/utils'
3
- import { TaskRegistry } from '../task-registry'
4
-
5
- import { InputStep } from '../../service/step/step-type'
6
- import { Context } from '../types'
7
-
8
- async function FloatingPoint(step: InputStep, { logger, data }: Context) {
9
- var {
10
- params: { accessor, operation, endian, floatType }
11
- } = step
12
-
13
- const value = access(accessor, data)
14
- if (typeof value === 'undefined') {
15
- throw new Error('accessor value not a found')
16
- }
17
-
18
- const isLE = endian === 'little'
19
- const nBytes = floatType === 'float' ? 4 : 8
20
- const mantissa = floatType === 'float' ? 23 : 52
21
-
22
- var result
23
-
24
- if (operation == 'write') {
25
- result = Buffer.alloc(nBytes)
26
- ieee754.write(result, value, 0, isLE, mantissa, nBytes)
27
- } else {
28
- result = ieee754.read(value, 0, isLE, mantissa, nBytes)
29
- }
30
-
31
- return {
32
- data: result
33
- }
34
- }
35
-
36
- FloatingPoint.parameterSpec = [
37
- {
38
- type: 'scenario-step-input',
39
- name: 'accessor',
40
- label: 'accessor'
41
- },
42
- {
43
- type: 'select',
44
- name: 'operation',
45
- label: 'operation',
46
- property: {
47
- options: ['read', 'write']
48
- }
49
- },
50
- {
51
- type: 'select',
52
- name: 'endian',
53
- label: 'endian',
54
- property: {
55
- options: ['little', 'big']
56
- }
57
- },
58
- {
59
- type: 'select',
60
- name: 'floatType',
61
- label: 'float type',
62
- property: {
63
- options: ['float', 'double']
64
- }
65
- }
66
- ]
67
-
68
- FloatingPoint.connectorFree = true
69
- FloatingPoint.help = 'integration/task/floating-point'
70
-
71
- TaskRegistry.registerTaskHandler('floating-point', FloatingPoint)
@@ -1,27 +0,0 @@
1
- import { TaskRegistry } from '../task-registry'
2
-
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function Goto(step: InputStep, { logger }: Context) {
7
- var {
8
- params: { goto }
9
- } = step
10
-
11
- return {
12
- next: goto
13
- }
14
- }
15
-
16
- Goto.parameterSpec = [
17
- {
18
- type: 'scenario-step-input',
19
- name: 'goto',
20
- label: 'goto'
21
- }
22
- ]
23
-
24
- Goto.connectorFree = true
25
- Goto.help = 'integration/task/goto'
26
-
27
- TaskRegistry.registerTaskHandler('goto', Goto)
@@ -1,79 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import 'ses'
3
-
4
- import { access } from '@things-factory/utils'
5
- import { ConnectionManager } from '../connection-manager'
6
- import { TaskRegistry } from '../task-registry'
7
- import { InputStep } from '../../service/step/step-type'
8
- import { Context } from '../types'
9
-
10
- async function GraphqlMutate(step: InputStep, context: Context) {
11
- var { connection: connectionName, params: stepOptions } = step
12
- var { mutation, variables: variablesAccessorMap, headers } = stepOptions || {}
13
-
14
- var { domain, user, data, variables, lng } = context
15
-
16
- const compartment = new Compartment({
17
- domain,
18
- user,
19
- lng,
20
- data,
21
- variables,
22
- console
23
- })
24
-
25
- let evalMutation
26
- try {
27
- evalMutation = compartment.evaluate('`' + mutation + '`')
28
- } catch (err) {
29
- throw new Error(`Failed to evaluate mutation: ${err.message}`)
30
- }
31
-
32
- var client = ConnectionManager.getConnectionInstanceByName(context.domain, connectionName)
33
-
34
- const queryVariables = Object.keys(variablesAccessorMap || {}).reduce((variables, key) => {
35
- const accessor = variablesAccessorMap[key]
36
- variables[key] = access(accessor, data)
37
- return variables
38
- }, {})
39
-
40
- var { data: mutateResult } = await client.mutate({
41
- mutation: gql`
42
- ${evalMutation}
43
- `,
44
- variables: queryVariables,
45
- headers
46
- })
47
-
48
- return {
49
- data: mutateResult
50
- }
51
- }
52
-
53
- GraphqlMutate.parameterSpec = [
54
- {
55
- type: 'graphql',
56
- name: 'mutation',
57
- label: 'mutation',
58
- property: {
59
- showLineNumbers: true
60
- },
61
- styles: {
62
- flex: 1
63
- }
64
- },
65
- {
66
- type: 'key-values',
67
- name: 'variables',
68
- label: 'variables'
69
- },
70
- {
71
- type: 'key-values',
72
- name: 'headers',
73
- label: 'headers'
74
- }
75
- ]
76
-
77
- GraphqlMutate.help = 'integration/task/graphql-mutate'
78
-
79
- TaskRegistry.registerTaskHandler('graphql-mutate', GraphqlMutate)
@@ -1,78 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import 'ses'
3
-
4
- import { access } from '@things-factory/utils'
5
- import { ConnectionManager } from '../connection-manager'
6
- import { TaskRegistry } from '../task-registry'
7
- import { InputStep } from '../../service/step/step-type'
8
- import { Context } from '../types'
9
-
10
- async function GraphqlQuery(step: InputStep, context: Context) {
11
- var { connection: connectionName, params: stepOptions } = step
12
- var { query, variables: variablesAccessorMap, headers } = stepOptions || {}
13
- var { domain, user, data, variables, lng } = context
14
-
15
- const compartment = new Compartment({
16
- domain,
17
- user,
18
- lng,
19
- data,
20
- variables,
21
- console
22
- })
23
-
24
- let evalQuery
25
- try {
26
- evalQuery = compartment.evaluate('`' + query + '`')
27
- } catch (err) {
28
- throw new Error(`Failed to evaluate query: ${err.message}`)
29
- }
30
-
31
- var client = ConnectionManager.getConnectionInstanceByName(domain, connectionName)
32
-
33
- const queryVariables = Object.keys(variablesAccessorMap || {}).reduce((variables, key) => {
34
- const accessor = variablesAccessorMap[key]
35
- variables[key] = access(accessor, data)
36
- return variables
37
- }, {})
38
-
39
- var { data: queryResult } = await client.query({
40
- query: gql`
41
- ${evalQuery}
42
- `,
43
- variables: queryVariables,
44
- headers
45
- })
46
-
47
- return {
48
- data: queryResult
49
- }
50
- }
51
-
52
- GraphqlQuery.parameterSpec = [
53
- {
54
- type: 'graphql',
55
- name: 'query',
56
- label: 'query',
57
- property: {
58
- showLineNumbers: true
59
- },
60
- styles: {
61
- flex: 1
62
- }
63
- },
64
- {
65
- type: 'key-values',
66
- name: 'variables',
67
- label: 'variables'
68
- },
69
- {
70
- type: 'key-values',
71
- name: 'headers',
72
- label: 'headers'
73
- }
74
- ]
75
-
76
- GraphqlQuery.help = 'integration/task/graphql-query'
77
-
78
- TaskRegistry.registerTaskHandler('graphql-query', GraphqlQuery)
@@ -1,147 +0,0 @@
1
- import https from 'https'
2
- import { URL } from 'url'
3
-
4
- import { access } from '@things-factory/utils'
5
- import { TaskRegistry } from '../task-registry'
6
- import { ConnectionManager } from '../connection-manager'
7
-
8
- import { getHeadlessPool } from './utils/headless-pool-for-scenario'
9
-
10
- import { InputStep } from '../../service/step/step-type'
11
- import { Context } from '../types'
12
-
13
- async function HeadlessPost(step: InputStep, { logger, data, domain }: Context) {
14
- var { connection: connectionName, params: stepOptions } = step
15
- var { headers: requestHeaders, contentType, path, accessor } = stepOptions || {}
16
-
17
- var connection = ConnectionManager.getConnectionInstanceByName(domain, connectionName)
18
-
19
- if (!connection) {
20
- throw new Error(`connection '${connectionName}' is not established.`)
21
- }
22
-
23
- var { endpoint, params: connectionParams, authHeaders = {} } = connection
24
-
25
- var headers = {
26
- ...authHeaders,
27
- ...requestHeaders
28
- }
29
-
30
- var body = access(accessor, data)
31
- if (contentType && body) {
32
- headers['content-type'] = contentType
33
- switch (contentType) {
34
- case 'text/plain':
35
- body = JSON.stringify(body)
36
- break
37
- case 'application/json':
38
- body = JSON.stringify(body)
39
- break
40
- case 'application/x-www-form-urlencoded':
41
- const searchParams = new URLSearchParams()
42
- for (const prop in body) {
43
- searchParams.set(prop, body[prop])
44
- }
45
- body = searchParams
46
- break
47
- }
48
- }
49
-
50
- var options: any = {
51
- method: 'POST',
52
- headers,
53
- body
54
- }
55
-
56
- var { rejectUnauthorized } = connectionParams
57
-
58
- if (!rejectUnauthorized) {
59
- const httpsAgent = new https.Agent({
60
- rejectUnauthorized
61
- })
62
- options.agent = httpsAgent
63
- }
64
-
65
- const browser = (await getHeadlessPool().acquire()) as any
66
- const page = await browser.newPage()
67
-
68
- try {
69
- page.on('console', async msg => {
70
- console.log(`[browser ${msg.type()}] ${msg.text()}`)
71
- })
72
-
73
- page.on('requestfailed', request => {
74
- console.log('Request failed:', request.url())
75
- })
76
-
77
- await page.goto(endpoint, { waitUntil: 'networkidle2' })
78
-
79
- const response = await page.evaluate(
80
- async (urlString, options) => {
81
- const response = await fetch(urlString, options)
82
-
83
- if (response.ok && response.headers.get('content-type').includes('application/json')) {
84
- return await response.json()
85
- } else {
86
- return await response.text()
87
- }
88
- },
89
- new URL(path, endpoint),
90
- options
91
- )
92
-
93
- return {
94
- data: response
95
- }
96
- } catch (e) {
97
- console.error(e)
98
- } finally {
99
- page.close()
100
- getHeadlessPool().release(browser)
101
- }
102
- }
103
-
104
- HeadlessPost.parameterSpec = [
105
- {
106
- type: 'string',
107
- name: 'path',
108
- label: 'path'
109
- },
110
- {
111
- type: 'http-headers',
112
- name: 'headers',
113
- label: 'headers'
114
- },
115
- {
116
- type: 'select',
117
- name: 'contentType',
118
- label: 'content-type',
119
- property: {
120
- options: [
121
- {
122
- display: '',
123
- value: ''
124
- },
125
- {
126
- display: 'application/json',
127
- value: 'application/json'
128
- },
129
- {
130
- display: 'text/plain',
131
- value: 'text/plain'
132
- },
133
- {
134
- display: 'application/x-www-form-urlencoded',
135
- value: 'application/x-www-form-urlencoded'
136
- }
137
- ]
138
- }
139
- },
140
- {
141
- type: 'scenario-step-input',
142
- name: 'accessor',
143
- label: 'accessor'
144
- }
145
- ]
146
-
147
- TaskRegistry.registerTaskHandler('headless-post', HeadlessPost)
@@ -1,80 +0,0 @@
1
- import { URL } from 'url'
2
-
3
- import { TaskRegistry } from '../task-registry'
4
- import { ConnectionManager } from '../connection-manager'
5
-
6
- import { getHeadlessPool } from './utils/headless-pool-for-scenario'
7
- import { InputStep } from '../../service/step/step-type'
8
- import { Context } from '../types'
9
-
10
- async function HeadlessScrap(step: InputStep, { logger, data, domain }: Context) {
11
- var { connection: connectionName, params: stepOptions } = step
12
- var { headers: requestHeaders, path, selectors = [] } = stepOptions || {}
13
-
14
- var connection = ConnectionManager.getConnectionInstanceByName(domain, connectionName)
15
-
16
- if (!connection) {
17
- throw new Error(`connection '${connectionName}' is not established.`)
18
- }
19
-
20
- var { endpoint, params: connectionParams, authHeaders = {} } = connection
21
-
22
- var headers = {
23
- ...authHeaders,
24
- ...requestHeaders
25
- }
26
-
27
- const browser = (await getHeadlessPool().acquire()) as any
28
- const page = await browser.newPage()
29
-
30
- try {
31
- page.on('console', async msg => {
32
- console.log(`[browser ${msg.type()}] ${msg.text()}`)
33
- })
34
-
35
- page.on('requestfailed', request => {
36
- console.log('Request failed:', request.url())
37
- })
38
-
39
- await page.setExtraHTTPHeaders(headers)
40
- await page.goto(new URL(path, endpoint), { waitUntil: 'networkidle2' })
41
-
42
- const result = {}
43
-
44
- for (const selector of selectors) {
45
- const { text, value } = selector
46
- result[text] = await page.$$eval(value, elements => {
47
- return elements.map(element => element.textContent.trim())
48
- })
49
- }
50
-
51
- return {
52
- data: result
53
- }
54
- } catch (e) {
55
- console.error(e)
56
- } finally {
57
- page.close()
58
- getHeadlessPool().release(browser)
59
- }
60
- }
61
-
62
- HeadlessScrap.parameterSpec = [
63
- {
64
- type: 'string',
65
- name: 'path',
66
- label: 'path'
67
- },
68
- {
69
- type: 'http-headers',
70
- name: 'headers',
71
- label: 'headers'
72
- },
73
- {
74
- type: 'options',
75
- name: 'selectors',
76
- label: 'selectors'
77
- }
78
- ]
79
-
80
- TaskRegistry.registerTaskHandler('headless-scrap', HeadlessScrap)
@@ -1,117 +0,0 @@
1
- import fetch from 'node-fetch'
2
- import 'ses'
3
- import { URL } from 'url'
4
- import https from 'https'
5
- import { TaskRegistry } from '../task-registry'
6
- import { ConnectionManager } from '../connection-manager'
7
- import { substitute } from './utils/substitute'
8
- import { InputStep } from '../../service/step/step-type'
9
- import { Context } from '../types'
10
-
11
- async function HttpGet(step: InputStep, { logger, data, domain, user, variables, lng }: Context) {
12
- var { connection: connectionName, params: stepOptions } = step
13
- var { headers: requestHeaders, searchParams = {}, path } = stepOptions || {}
14
- var connection = ConnectionManager.getConnectionInstanceByName(domain, connectionName)
15
-
16
- if (!connection) {
17
- throw new Error(`connection '${connectionName}' is not established.`)
18
- }
19
-
20
- var { endpoint, params: connectionParams, authHeaders = {} } = connection
21
-
22
- const compartment = new Compartment({
23
- domain,
24
- user,
25
- lng,
26
- data,
27
- variables,
28
- console
29
- })
30
-
31
- let evalPath
32
- try {
33
- evalPath = compartment.evaluate('`' + path + '`')
34
- } catch (err) {
35
- throw new Error(`Failed to evaluate path: ${err.message}`)
36
- }
37
-
38
- path = evalPath
39
-
40
- requestHeaders =
41
- requestHeaders &&
42
- Object.entries(requestHeaders as { [key: string]: string }).reduce((sum, [key, value]) => {
43
- try {
44
- sum[key] = compartment.evaluate('`' + value + '`')
45
- } catch (err) {
46
- throw new Error(`Failed to evaluate header value: ${err.message}`)
47
- }
48
- return sum
49
- }, {})
50
-
51
- searchParams =
52
- searchParams &&
53
- Object.entries(searchParams as { [key: string]: string }).reduce((sum, [key, value]) => {
54
- try {
55
- sum[key] = compartment.evaluate('`' + value + '`')
56
- } catch (err) {
57
- throw new Error(`Failed to evaluate search param value: ${err.message}`)
58
- }
59
- return sum
60
- }, {})
61
-
62
- var url = new URL(path, endpoint)
63
- if (searchParams) {
64
- Object.keys(searchParams).forEach(key => {
65
- let value = substitute(searchParams[key], data)
66
- url.searchParams.append(key, value)
67
- })
68
- }
69
-
70
- var fetchOptions: any = {
71
- method: 'GET',
72
- headers: {
73
- ...requestHeaders,
74
- ...authHeaders
75
- }
76
- }
77
-
78
- var { rejectUnauthorized } = connectionParams
79
-
80
- if (!rejectUnauthorized) {
81
- const httpsAgent = new https.Agent({
82
- rejectUnauthorized
83
- })
84
- fetchOptions.agent = httpsAgent
85
- }
86
-
87
- var response = await fetch(url, fetchOptions)
88
-
89
- return {
90
- data:
91
- response.ok && response.headers.get('content-type').includes('application/json')
92
- ? await response.json()
93
- : await response.text()
94
- }
95
- }
96
-
97
- HttpGet.parameterSpec = [
98
- {
99
- type: 'string',
100
- name: 'path',
101
- label: 'path'
102
- },
103
- {
104
- type: 'http-headers',
105
- name: 'headers',
106
- label: 'headers'
107
- },
108
- {
109
- type: 'http-parameters',
110
- name: 'searchParams',
111
- label: 'search-params'
112
- }
113
- ]
114
-
115
- HttpGet.help = 'integration/task/http-get'
116
-
117
- TaskRegistry.registerTaskHandler('http-get', HttpGet)