Skip to content

Instantly share code, notes, and snippets.

@andreafalzetti
Created July 2, 2019 14:49
Show Gist options
  • Save andreafalzetti/47232db0bee783e9cb2ca635dcb96daa to your computer and use it in GitHub Desktop.
Save andreafalzetti/47232db0bee783e9cb2ca635dcb96daa to your computer and use it in GitHub Desktop.
const http = require('http');
const https = require('https');
const AWSXRay = require('aws-xray-sdk-core');
const AWS = AWSXRay.captureAWS(require('aws-sdk'));
const needle = require('needle');
AWSXRay.captureHTTPsGlobal(http);
AWSXRay.captureHTTPsGlobal(https);
const fetchUserDetails = (username, segment) => {
// const fetchUserDetails = username => {
return new Promise(async (resolve, reject) => {
console.log('Calling GitHub API');
const f = async subsegment => {
subsegment.addAnnotation('path', '/dev/demo/service-b'); // this works
console.log('firing request');
const res = await needle(
`https://api.github.com/users/${username}`
);
console.log('response received', {
message: JSON.stringify(res.body)
});
subsegment.addMetadata('message', res.body);
subsegment.close();
console.log(JSON.stringify(subsegment));
resolve(res.body);
};
AWSXRay.captureAsyncFunc('fetching user details', f, segment);
});
};
module.exports.handler = async (event, context) => {
const segment = AWSXRay.getSegmaent();
const user = await fetchUserDetails('andreafalzetti', segment);
console.log(user);
segment.close();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment