Skip to content

Commit

Permalink
Fix/traceparent headers (#77)
Browse files Browse the repository at this point in the history
* reverted traceparent headers to undefined

* added common request function to clean empty headers and have same style logging
  • Loading branch information
vgenev authored Sep 26, 2019
1 parent 5e8d7f3 commit f33d623
Show file tree
Hide file tree
Showing 18 changed files with 119 additions and 100 deletions.
10 changes: 9 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sims",
"version": "8.1.0",
"version": "8.1.1",
"description": "A super-simple fsp simulator",
"main": "src/index.js",
"author": "ModusBox",
Expand Down Expand Up @@ -33,7 +33,9 @@
"@hapi/inert": "5.2.1",
"@hapi/joi": "15.1.1",
"@hapi/joi-date": "1.3.0",
"@hapi/vision": "5.5.3",
"@mojaloop/central-services-error-handling": "7.4.3",
"@mojaloop/central-services-logger": "8.1.1",
"@mojaloop/central-services-metrics": "5.2.0",
"@mojaloop/central-services-shared": "7.4.8",
"axios": "0.19.0",
Expand All @@ -47,8 +49,7 @@
"ilp-packet": "3.0.9",
"joi-currency-code": "2.0.2",
"node-cache": "4.2.1",
"prom-client": "11.5.3",
"@hapi/vision": "5.5.3"
"prom-client": "11.5.3"
},
"devDependencies": {
"pre-commit": "1.2.2",
Expand Down
28 changes: 14 additions & 14 deletions src/acceptheaderpayee/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ const NodeCache = require('node-cache')
const myCache = new NodeCache()
const requests = new NodeCache()
const callbacks = new NodeCache()
const request = require('axios')
const request = require('../lib/sendRequest')
const https = require('https')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Enums = require('@mojaloop/central-services-shared').Enum
const Metrics = require('../lib/metrics')
const base64url = require('base64url')
Expand Down Expand Up @@ -137,18 +137,18 @@ exports.getPartiesByTypeAndId = function (req, h) {
'FSPIOP-Signature': JSON.stringify(fspiopSignature),
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': `/parties/${req.params.type}/${req.params.id}`,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
httpsAgent: new https.Agent({
rejectUnauthorized: false
}),
data: JSON.stringify(myCache.get(req.params.id))
}

Logger.info((new Date().toISOString()), 'Executing PUT', url)
// Logger.info((new Date().toISOString()), 'Executing PUT', url)
const res = await request(url, opts)
Logger.info((new Date().toISOString()), 'response: ', res.status)
// Logger.info((new Date().toISOString()), 'response: ', res.status)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${res}`)
Expand Down Expand Up @@ -226,17 +226,17 @@ exports.postQuotes = function (req, h) {
'FSPIOP-Signature': `${JSON.stringify(fspiopSignature)}`,
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': `/quotes/${quotesRequest.quoteId}`,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
httpsAgent: new https.Agent({
rejectUnauthorized: false
}),
data: JSON.stringify(quotesResponse)
}
Logger.info((new Date().toISOString()), 'Executing PUT', url)
// Logger.info((new Date().toISOString()), 'Executing PUT', url)
const res = await request(url, opts)
Logger.info((new Date().toISOString()), 'response: ', res.status)
// Logger.info((new Date().toISOString()), 'response: ', res.status)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${res}`)
Expand Down Expand Up @@ -308,18 +308,18 @@ exports.postTransfers = async function (req, h) {
'FSPIOP-Signature': JSON.stringify(fspiopSignature),
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': fspiopUriHeader,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
httpsAgent: new https.Agent({
rejectUnauthorized: false
}),
data: JSON.stringify(transfersResponse)
}

Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`)
// Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`)
const res = await request(url, opts)
Logger.info(`response: ${res.status}`)
// Logger.info(`response: ${res.status}`)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${JSON.stringify(res)}`)
Expand Down
12 changes: 6 additions & 6 deletions src/bulkTransfers/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ const NodeCache = require('node-cache')
const myCache = new NodeCache()
const requests = new NodeCache()
const callbacks = new NodeCache()
const request = require('axios')
const request = require('../lib/sendRequest')
const https = require('https')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Enums = require('@mojaloop/central-services-shared').Enum
const Metrics = require('../lib/metrics')
const base64url = require('base64url')
Expand Down Expand Up @@ -97,8 +97,8 @@ exports.postBulkTransfers = async function (req, h) {
'FSPIOP-Signature': JSON.stringify(fspiopSignature),
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': fspiopUriHeader,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
transformRequest: [(data, headers) => {
delete headers.common.Accept
Expand All @@ -109,9 +109,9 @@ exports.postBulkTransfers = async function (req, h) {
}),
data: JSON.stringify(bulkTransferResponse)
}
Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(bulkTransferResponse)}]`)
// Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(bulkTransferResponse)}]`)
const res = await request(url, opts)
Logger.info(`response: ${res.status}`)
// Logger.info(`response: ${res.status}`)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${JSON.stringify(res)}`)
Expand Down
2 changes: 1 addition & 1 deletion src/lib/metrics.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
// const client = require('prom-client')
const Metrics = require('@mojaloop/central-services-metrics')
// const Logger = require('./logger')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')

let alreadySetup = false
const prefix = process.env.METRICS_PREFIX || 'moja_'
Expand Down
2 changes: 1 addition & 1 deletion src/lib/requestLogger.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Util = require('util')

const logRequest = function (request) {
Expand Down
10 changes: 10 additions & 0 deletions src/lib/sendRequest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const Logger = require('@mojaloop/central-services-logger')
const request = require('axios')
const { pickBy, identity } = require('lodash')

module.exports = async (url, opts) => {
Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(opts.body)}]`)
const optionsWithCleanHeaders = Object.assign({}, opts, { headers: pickBy(opts.headers, identity) })
const res = await request(url, optionsWithCleanHeaders)
Logger.info((new Date().toISOString()), 'response: ', res.status)
}
2 changes: 1 addition & 1 deletion src/noresponsepayeefsp/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const NodeCache = require('node-cache')
const myCache = new NodeCache()
const requests = new NodeCache()
const callbacks = new NodeCache()
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Enums = require('@mojaloop/central-services-shared').Enum
const Metrics = require('../lib/metrics')

Expand Down
2 changes: 1 addition & 1 deletion src/oracle/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const NodeCache = require('node-cache')
const participantsCache = new NodeCache()
const requestsCache = new NodeCache()
const batchRequestCache = new NodeCache()
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Enums = require('@mojaloop/central-services-shared').Enum
const Metrics = require('../lib/metrics')

Expand Down
28 changes: 14 additions & 14 deletions src/payee/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ const NodeCache = require('node-cache')
const myCache = new NodeCache()
const requests = new NodeCache()
const callbacks = new NodeCache()
const request = require('axios')
const request = require('../lib/sendRequest')
const https = require('https')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Enums = require('@mojaloop/central-services-shared').Enum
const Metrics = require('../lib/metrics')
const base64url = require('base64url')
Expand Down Expand Up @@ -146,8 +146,8 @@ exports.getPartiesByTypeAndId = function (req, h) {
'FSPIOP-Signature': JSON.stringify(fspiopSignature),
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': `/parties/${req.params.type}/${req.params.id}`,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
transformRequest: [(data, headers) => {
delete headers.common.Accept
Expand All @@ -159,9 +159,9 @@ exports.getPartiesByTypeAndId = function (req, h) {
data: JSON.stringify(myCache.get(req.params.id))
}

Logger.info((new Date().toISOString()), 'Executing PUT', url)
// Logger.info((new Date().toISOString()), 'Executing PUT', url)
const res = await request(url, opts)
Logger.info((new Date().toISOString()), 'response: ', res.status)
// Logger.info((new Date().toISOString()), 'response: ', res.status)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${res}`)
Expand Down Expand Up @@ -260,8 +260,8 @@ exports.postQuotes = function (req, h) {
'FSPIOP-Signature': `${JSON.stringify(fspiopSignature)}`,
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': `/quotes/${quotesRequest.quoteId}`,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
transformRequest: [(data, headers) => {
delete headers.common.Accept
Expand All @@ -272,9 +272,9 @@ exports.postQuotes = function (req, h) {
}),
data: JSON.stringify(quotesResponse)
}
Logger.info((new Date().toISOString()), 'Executing PUT', url)
// Logger.info((new Date().toISOString()), 'Executing PUT', url)
const res = await request(url, opts)
Logger.info((new Date().toISOString()), 'response: ', res.status)
// Logger.info((new Date().toISOString()), 'response: ', res.status)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${res}`)
Expand Down Expand Up @@ -349,8 +349,8 @@ exports.postTransfers = async function (req, h) {
'FSPIOP-Signature': JSON.stringify(fspiopSignature),
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': fspiopUriHeader,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
transformRequest: [(data, headers) => {
delete headers.common.Accept
Expand All @@ -362,9 +362,9 @@ exports.postTransfers = async function (req, h) {
data: JSON.stringify(transfersResponse)
}

Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`)
// Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`)
const res = await request(url, opts)
Logger.info(`response: ${res.status}`)
// Logger.info(`response: ${res.status}`)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${JSON.stringify(res)}`)
Expand Down
2 changes: 1 addition & 1 deletion src/payer/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const myCache = new NodeCache()
const requests = new NodeCache()
const callbacks = new NodeCache()
const Metrics = require('../lib/metrics')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Enums = require('@mojaloop/central-services-shared').Enum

const extractUrls = (request) => {
Expand Down
2 changes: 1 addition & 1 deletion src/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
'use strict'

const Glob = require('glob')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')

exports.plugin = {
name: 'api routes',
Expand Down
2 changes: 1 addition & 1 deletion src/shared/setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

const Hapi = require('@hapi/hapi')
const Boom = require('@hapi/boom')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Metrics = require('../lib/metrics')
const RequestLogger = require('../lib/requestLogger')

Expand Down
24 changes: 12 additions & 12 deletions src/testfsp1/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ const NodeCache = require('node-cache')
const myCache = new NodeCache()
const requests = new NodeCache()
const callbacks = new NodeCache()
const request = require('axios')
const request = require('../lib/sendRequest')
const https = require('https')
const Logger = require('@mojaloop/central-services-shared').Logger
const Logger = require('@mojaloop/central-services-logger')
const Enums = require('@mojaloop/central-services-shared').Enum
const Metrics = require('../lib/metrics')
const base64url = require('base64url')
Expand Down Expand Up @@ -119,8 +119,8 @@ exports.getPartiesByTypeAndId = function (req, h) {
'FSPIOP-Source': 'testfsp1',
'FSPIOP-Destination': req.headers['fspiop-source'],
Date: req.headers.date,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
transformRequest: [(data, headers) => {
delete headers.common.Accept
Expand Down Expand Up @@ -266,8 +266,8 @@ exports.postQuotes = function (req, h) {
'FSPIOP-Signature': `${JSON.stringify(fspiopSignature)}`,
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': `/quotes/${quotesRequest.quoteId}`,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
transformRequest: [(data, headers) => {
delete headers.common.Accept
Expand All @@ -278,9 +278,9 @@ exports.postQuotes = function (req, h) {
}),
data: JSON.stringify(quotesResponse)
}
Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(quotesResponse)}]`)
// Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(quotesResponse)}]`)
const res = await request(url, opts)
Logger.info((new Date().toISOString()), 'response: ', res.status)
// Logger.info((new Date().toISOString()), 'response: ', res.status)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${res}`)
Expand Down Expand Up @@ -395,14 +395,14 @@ exports.postTransfers = async function (req, h) {
'FSPIOP-Signature': JSON.stringify(fspiopSignature),
'FSPIOP-HTTP-Method': 'PUT',
'FSPIOP-URI': fspiopUriHeader,
traceparent: req.headers.traceparent || '',
tracestate: req.headers.tracestate || ''
traceparent: req.headers.traceparent ? req.headers.traceparent : undefined,
tracestate: req.headers.tracestate ? req.headers.tracestate : undefined
},
data: JSON.stringify(transfersResponse)
}
Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`)
// Logger.info(`Executing PUT: [${url}], HEADERS: [${JSON.stringify(opts.headers)}], BODY: [${JSON.stringify(transfersResponse)}]`)
const res = await request(url, opts)
Logger.info(`response: ${res.status}`)
// Logger.info(`response: ${res.status}`)
if (res.status !== Enums.Http.ReturnCodes.ACCEPTED.CODE) {
// TODO: how does one identify the failed response?
throw new Error(`Failed to send. Result: ${JSON.stringify(res)}`)
Expand Down
Loading

0 comments on commit f33d623

Please sign in to comment.