Skip to content

Commit a9e27f0

Browse files
authored
Merge pull request #1 from hesibo/dev
integrate docusign listener
2 parents 98fde1d + 6500a8f commit a9e27f0

18 files changed

+261
-3020
lines changed

app.js

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const bodyParser = require('body-parser')
1111
const cors = require('cors')
1212
const HttpStatus = require('http-status-codes')
1313
const logger = require('./src/common/logger')
14+
const docusignListener = require('./src/common/docusignListener')
1415
const interceptor = require('express-interceptor')
1516

1617
// setup express app
@@ -62,6 +63,9 @@ app.use('/v5/terms/health', (req, res) => {
6263
res.status(HttpStatus.SERVICE_UNAVAILABLE).json({ message: 'The service is unavailable.' })
6364
}
6465
})
66+
67+
app.post(config.DOCUSIGN_LISTENER_PATH, docusignListener)
68+
6569
// Register routes
6670
require('./app-routes')(app)
6771

config/default.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,7 @@ module.exports = {
4747
CALLBACK_FAILED_SUPPORT_EMAIL_ADDRESS: process.env.DOCUSIGN_CALLBACK_FAILED_SUPPORT_EMAIL_ADDRESS,
4848
CALLBACK_FAILED_FROM_EMAIL_ADDRESS: process.env.DOCUSIGN_CALLBACK_FAILED_FROM_EMAIL_ADDRESS,
4949
CALLBACK_ENDPOINT: process.env.DOCUSIGN_CALLBACK_ENDPOINT || 'http://localhost:3000/terms/docusignCallback'
50-
}
50+
},
51+
52+
DOCUSIGN_LISTENER_PATH: process.env.DOCUSIGN_LISTENER_PATH || '/v5/terms/docusignListener'
5153
}

docs/topcoder-terms-api-env.postman_environment.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"id": "3257ea75-e3a8-4ca8-bf28-867a79663c0b",
2+
"id": "b2224003-cc16-40bb-a9cf-a1ad62915b14",
33
"name": "topcoder-terms-api-env",
44
"values": [
55
{
@@ -9,22 +9,22 @@
99
},
1010
{
1111
"key": "USER1_TOKEN",
12-
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU2NTY4MTkyMCwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1NTY4MTMyMCwiZW1haWwiOiJhamVmdHNAdG9wY29kZXIuY29tIiwianRpIjoiMTlhMDkzNzAtMjk4OC00N2I4LTkxODktMGRhODVjNjM0ZWQyIn0.V8nsQpbzQ_4iEd0dAbuYsfeydnhSAEQ95AKKwl8RONw",
12+
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU4NTY4MTkyMCwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1NTY4MTMyMCwiZW1haWwiOiJhamVmdHNAdG9wY29kZXIuY29tIiwianRpIjoiMTlhMDkzNzAtMjk4OC00N2I4LTkxODktMGRhODVjNjM0ZWQyIn0.iz-6i97loCCkr5k_BQ974U0yYVJJ6fRaDTrQkfIk8SI",
1313
"enabled": true
1414
},
1515
{
1616
"key": "USER2_TOKEN",
17-
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJjYWxsbWVrYXRvb3RpZSIsImV4cCI6MTU2NTY4MTkyMCwidXNlcklkIjoiMjMxMjQzMjkiLCJpYXQiOjE1NTU2ODEzMjAsImVtYWlsIjoiY2FsbG1la2F0b290aWVAdG9wY29kZXIuY29tIiwianRpIjoiMTlhMDkzNzAtMjk4OC00N2I4LTkxODktMGRhODVjNjM0ZWQyIn0.HhZSFbt2zbPcMd3U45ZUDIuylSgOOWXG58MV1D-SvkQ",
17+
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJjYWxsbWVrYXRvb3RpZSIsImV4cCI6MTU4NTY4MTkyMCwidXNlcklkIjoiMjMxMjQzMjkiLCJpYXQiOjE1NTU2ODEzMjAsImVtYWlsIjoiY2FsbG1la2F0b290aWVAdG9wY29kZXIuY29tIiwianRpIjoiMTlhMDkzNzAtMjk4OC00N2I4LTkxODktMGRhODVjNjM0ZWQyIn0.3qNoXuKfi_z017BhZOokjmHvDsUfuszZmhRQIl6c41M",
1818
"enabled": true
1919
},
2020
{
2121
"key": "USER3_TOKEN",
22-
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJob2hvc2t5IiwiZXhwIjoxNTY1NjgxOTIwLCJ1c2VySWQiOiIxNjA5NjgyMyIsImlhdCI6MTU1NTY4MTMyMCwiZW1haWwiOiJjYWxsbWVrYXRvb3RpZUB0b3Bjb2Rlci5jb20iLCJqdGkiOiIxOWEwOTM3MC0yOTg4LTQ3YjgtOTE4OS0wZGE4NWM2MzRlZDIifQ.Zym_RxIT9UElcnhbPzC-N_y1XB7FjZtCqqZZkDjX6Po",
22+
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJob2hvc2t5IiwiZXhwIjoxNTg1NjgxOTIwLCJ1c2VySWQiOiIxNjA5NjgyMyIsImlhdCI6MTU1NTY4MTMyMCwiZW1haWwiOiJjYWxsbWVrYXRvb3RpZUB0b3Bjb2Rlci5jb20iLCJqdGkiOiIxOWEwOTM3MC0yOTg4LTQ3YjgtOTE4OS0wZGE4NWM2MzRlZDIifQ.-d8ixuid-IKC4VYp6u34ux902oT4qXn21CxzQMXFwp8",
2323
"enabled": true
2424
},
2525
{
2626
"key": "USER4_TOKEN",
27-
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJHaG9zdGFyIiwiZXhwIjoxNTY1NjgxOTIwLCJ1c2VySWQiOiIxNTE3NDMiLCJpYXQiOjE1NTU2ODEzMjAsImVtYWlsIjoiZ2hvc3RhckB0b3Bjb2Rlci5jb20iLCJqdGkiOiIxOWEwOTM3MC0yOTg4LTQ3YjgtOTE4OS0wZGE4NWM2MzRlZDIifQ.VhkmYy_06PBdp48kC34pJ5u4mussfYV80jJQF7Dgqt4",
27+
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJHaG9zdGFyIiwiZXhwIjoxNTg1NjgxOTIwLCJ1c2VySWQiOiIxNTE3NDMiLCJpYXQiOjE1NTU2ODEzMjAsImVtYWlsIjoiZ2hvc3RhckB0b3Bjb2Rlci5jb20iLCJqdGkiOiIxOWEwOTM3MC0yOTg4LTQ3YjgtOTE4OS0wZGE4NWM2MzRlZDIifQ.ieZlpLl55QdEK0SQTx6gjPgjOP-8h8EtsBQrp8B60WQ",
2828
"enabled": true
2929
},
3030
{
@@ -94,6 +94,6 @@
9494
}
9595
],
9696
"_postman_variable_scope": "environment",
97-
"_postman_exported_at": "2019-06-23T13:36:05.680Z",
98-
"_postman_exported_using": "Postman/7.2.0"
97+
"_postman_exported_at": "2019-09-06T02:57:47.840Z",
98+
"_postman_exported_using": "Postman/7.5.0"
9999
}

docs/topcoder-terms-api.postman_collection.json

+37-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"info": {
3-
"_postman_id": "f78a998a-5aa4-4c0a-820e-e26ee66fe032",
3+
"_postman_id": "f63f8d76-a914-4362-a32c-638718ed6d2c",
44
"name": "topcoder-terms-api",
55
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
66
},
@@ -2203,6 +2203,42 @@
22032203
}
22042204
},
22052205
"response": []
2206+
},
2207+
{
2208+
"name": "listener",
2209+
"request": {
2210+
"method": "POST",
2211+
"header": [
2212+
{
2213+
"key": "Content-Type",
2214+
"name": "Content-Type",
2215+
"value": "application/xml",
2216+
"type": "text"
2217+
}
2218+
],
2219+
"body": {
2220+
"mode": "raw",
2221+
"raw": "<DocuSignEnvelopeInformation xmlns=\"http://www.docusign.net/API/3.0\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n <EnvelopeStatus>\n <RecipientStatuses>\n <RecipientStatus>\n <TabStatuses>\n <TabStatus>\n <TabLabel>Handle</TabLabel>\n <TabValue>Hung</TabValue>\n </TabStatus>\n <TabStatus>\n <TabLabel>Full Name</TabLabel>\n <TabValue>firstHung lastHung</TabValue>\n </TabStatus>\n <TabStatus>\n <TabLabel>Email Address</TabLabel>\n <TabValue>[email protected]</TabValue>\n </TabStatus>\n </TabStatuses>\n </RecipientStatus>\n </RecipientStatuses>\n <EnvelopeID>{{ENVELOP_ID}}</EnvelopeID>\n <Status>Completed</Status>\n </EnvelopeStatus>\n</DocuSignEnvelopeInformation>"
2222+
},
2223+
"url": {
2224+
"raw": "{{URL}}/v5/terms/docusignListener?connectKey={{CONNECT_KEY}}",
2225+
"host": [
2226+
"{{URL}}"
2227+
],
2228+
"path": [
2229+
"v5",
2230+
"terms",
2231+
"docusignListener"
2232+
],
2233+
"query": [
2234+
{
2235+
"key": "connectKey",
2236+
"value": "{{CONNECT_KEY}}"
2237+
}
2238+
]
2239+
}
2240+
},
2241+
"response": []
22062242
}
22072243
]
22082244
},

docusign_callback/.DS_Store

-6 KB
Binary file not shown.

docusign_callback/config/default.js

-9
This file was deleted.

docusign_callback/config/test.js

-7
This file was deleted.

docusign_callback/docusignCallbackListener.js

-105
This file was deleted.

0 commit comments

Comments
 (0)