Skip to content

Commit

Permalink
Merge pull request #116 from getyoti/release-3.8.0
Browse files Browse the repository at this point in the history
Release 3.8.0
  • Loading branch information
davidgrayston authored Dec 10, 2019
2 parents 510df5d + cbb1410 commit a9390c2
Show file tree
Hide file tree
Showing 76 changed files with 2,985 additions and 183 deletions.
8 changes: 7 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,10 @@ jobs:
- cd ./examples/profile
- npm update
- npm run lint

- stage: Coverage
name: Coveralls
if: type = pull_request OR branch = master
node_js: "10"
install: npm install
script:
- npm run coveralls
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Yoti NodeJS SDK

[![Build Status](https://travis-ci.com/getyoti/yoti-node-sdk.svg?branch=master)](https://travis-ci.com/getyoti/yoti-node-sdk)
[![Coverage Status](https://coveralls.io/repos/github/getyoti/yoti-node-sdk/badge.svg?branch=master)](https://coveralls.io/github/getyoti/yoti-node-sdk?branch=master)

Welcome to the Yoti NodeJS SDK. This repo contains the tools and step by step instructions you need to quickly integrate your NodeJS back-end with Yoti so that your users can share their identity details with your application in a secure and trusted way.

Expand Down
11 changes: 11 additions & 0 deletions config/protobuf.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,22 @@ const PROTO_BUFF_COMMON_API_PATH = path.resolve(`${PROTO_BUFF_PATH}/common-publi
const CORE_ENCRYPTED_DATA_PROTO_BUFF_PATH = path.resolve(`${PROTO_BUFF_COMMON_API_PATH}/EncryptedData.proto`);
const CORE_SIGNED_TIMESTAMP_PROTO__BUFF_PATH = path.resolve(`${PROTO_BUFF_COMMON_API_PATH}/SignedTimeStamp.proto`);

const PROTO_BUFF_SHARE_API_PATH = path.resolve(`${PROTO_BUFF_PATH}/share-public-api/sharepubapi_v1`);
const CORE_EXTRA_DATA_PROTO_BUFF_PATH = path.resolve(`${PROTO_BUFF_SHARE_API_PATH}/ExtraData.proto`);
const CORE_DATA_ENTRY_PROTO_BUFF_PATH = path.resolve(`${PROTO_BUFF_SHARE_API_PATH}/DataEntry.proto`);
const CORE_THIRD_PARTY_ATTRIBUTE_PROTO_BUFF_PATH = path.resolve(`${PROTO_BUFF_SHARE_API_PATH}/ThirdPartyAttribute.proto`);
const CORE_ISSUING_ATTRIBUTES_PROTO_BUFF_PATH = path.resolve(`${PROTO_BUFF_SHARE_API_PATH}/IssuingAttributes.proto`);

module.exports = {
PROTO_BUFF_PATH,
PROTO_BUFF_ATTRIBUTE_API_PATH,
CORE_ATTRIBUTE_LIST_PROTO_BUFF_PATH,
PROTO_BUFF_COMMON_API_PATH,
CORE_ENCRYPTED_DATA_PROTO_BUFF_PATH,
CORE_SIGNED_TIMESTAMP_PROTO__BUFF_PATH,
PROTO_BUFF_SHARE_API_PATH,
CORE_EXTRA_DATA_PROTO_BUFF_PATH,
CORE_DATA_ENTRY_PROTO_BUFF_PATH,
CORE_THIRD_PARTY_ATTRIBUTE_PROTO_BUFF_PATH,
CORE_ISSUING_ATTRIBUTES_PROTO_BUFF_PATH,
};
4 changes: 4 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ const Client = require('./src/client').YotiClient;
const { AmlAddress, AmlProfile } = require('./src/aml_type');
const { RequestBuilder } = require('./src/request/request.builder');
const { Payload } = require('./src/request/payload');
const { YotiDate } = require('./src/data_type/date');

const {
DynamicScenarioBuilder,
DynamicPolicyBuilder,
WantedAttributeBuilder,
ExtensionBuilder,
LocationConstraintExtensionBuilder,
ThirdPartyAttributeExtensionBuilder,
TransactionalFlowExtensionBuilder,
WantedAnchorBuilder,
ConstraintsBuilder,
Expand All @@ -26,10 +28,12 @@ module.exports = {
WantedAttributeBuilder,
ExtensionBuilder,
LocationConstraintExtensionBuilder,
ThirdPartyAttributeExtensionBuilder,
TransactionalFlowExtensionBuilder,
WantedAnchorBuilder,
ConstraintsBuilder,
SourceConstraintBuilder,
RequestBuilder,
Payload,
YotiDate,
};
62 changes: 51 additions & 11 deletions package-lock.json

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

13 changes: 8 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "yoti",
"version": "3.7.3",
"version": "3.8.0",
"description": "Yoti NodeJS SDK for back-end integration",
"author": "Yoti LTD <[email protected]> (https://www.yoti.com/developers)",
"license": "MIT",
Expand All @@ -9,12 +9,13 @@
"url": "https://github.com/getyoti/yoti-node-sdk.git"
},
"engines": {
"node": ">=8.0.0"
"node": ">=6"
},
"scripts": {
"lint": "node_modules/.bin/eslint *.js './src/**/*.js' './tests/**/*.spec.js' config/*.js",
"unit-test": "node_modules/.bin/jest",
"test": "npm run lint && npm run unit-test"
"lint": "eslint *.js './src/**/*.js' './tests/**/*.spec.js' config/*.js './sandbox/**/*.js'",
"unit-test": "jest",
"test": "npm run lint && npm run unit-test",
"coveralls": "npm run unit-test && cat ./coverage/lcov.info | coveralls"
},
"husky": {
"hooks": {
Expand All @@ -27,6 +28,7 @@
"collectCoverageFrom": [
"./*.js",
"./src/**/*.js",
"./sandbox/**/*.js",
"!**/node_modules/**",
"!**/vendor/**"
],
Expand All @@ -42,6 +44,7 @@
"uuid": "^3.3.2"
},
"devDependencies": {
"coveralls": "^3.0.7",
"eslint": "^4.19.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-plugin-import": "^2.18.2",
Expand Down
57 changes: 57 additions & 0 deletions sandbox/client.builder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@

const SandboxClient = require('./client');
const Validation = require('../src/yoti_common/validation');
const fs = require('fs');

/**
* @class SandboxClientBuilder
*/
class SandboxClientBuilder {
/**
* @param {string} appId
*/
forApplication(appId) {
this.appId = appId;
return this;
}

/**
* @param {string} pemString
*
* @returns {SandboxClientBuilder}
*/
withPemString(pem) {
Validation.isString(pem, 'pem');
this.pem = pem;
return this;
}

/**
* @param {string} filePath
*
* @returns {SandboxClientBuilder}
*/
withPemFilePath(filePath) {
Validation.isString(filePath, 'filePath');
return this.withPemString(fs.readFileSync(filePath, 'utf8'));
}

/**
* @param {string} sandboxUrl
*
* @returns {SandboxClientBuilder}
*/
withSandboxUrl(sandboxUrl) {
this.sandboxUrl = sandboxUrl;
return this;
}

/**
* @returns {SandboxClient}
*/
build() {
return new SandboxClient(this.appId, this.pem, this.sandboxUrl);
}
}

module.exports = SandboxClientBuilder;
60 changes: 60 additions & 0 deletions sandbox/client.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@

const { RequestBuilder } = require('../src/request/request.builder');
const TokenResponse = require('./profile/response/token');
const { Payload } = require('../src/request/payload');
const Validation = require('../src/yoti_common/validation');

/**
* @class SandboxClient
*/
class SandboxClient {
/**
* @param {string} appId
* @param {string} pem
* @param {string} sandboxUrl
*/
constructor(appId, pem, sandboxUrl) {
Validation.isString(appId, 'appId');
this.appId = appId;
this.endpoint = `/apps/${appId}/tokens`;

Validation.isString(pem, 'pem');
this.pem = pem;

Validation.isString(sandboxUrl, 'sandboxUrl');
this.sandboxUrl = sandboxUrl;
}

/**
* @param {TokenRequest} tokenRequest
*
* @returns {Promise}
*/
setupSharingProfile(tokenRequest) {
const request = (new RequestBuilder())
.withBaseUrl(this.sandboxUrl)
.withEndpoint(this.endpoint)
.withPemString(this.pem)
.withPayload(new Payload(tokenRequest))
.withPost()
.build();

return new Promise((resolve, reject) => {
request.execute()
.then((response) => {
try {
return resolve(new TokenResponse(response.getParsedResponse()));
} catch (err) {
console.log(`Error getting response data: ${err}`);
return reject(err);
}
})
.catch((err) => {
console.log(`Error retrieving requested data: ${err}`);
return reject(err);
});
});
}
}

module.exports = SandboxClient;
13 changes: 13 additions & 0 deletions sandbox/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const SandboxClientBuilder = require('./client.builder');
const SandboxAttributeBuilder = require('./profile/request/attribute/attribute.builder');
const SandboxAgeVerificationBuilder = require('./profile/request/attribute/derivation/age.verification.builder');
const SandboxAnchorBuilder = require('./profile/request/attribute/anchor.builder');
const TokenRequestBuilder = require('./profile/request/token.builder');

module.exports = {
SandboxClientBuilder,
SandboxAttributeBuilder,
SandboxAgeVerificationBuilder,
SandboxAnchorBuilder,
TokenRequestBuilder,
};
Loading

0 comments on commit a9390c2

Please sign in to comment.