UNPKG

@expressive-analytics/deep-thought-service

Version:

Typescript conversion of Deep Thought Services (formerly providers)

51 lines (50 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DTRequestor = void 0; const deep_thought_js_1 = require("@expressive-analytics/deep-thought-js"); const DTSession_1 = require("./DTSession"); const md5 = require("blueimp-md5"); class DTRequestor extends deep_thought_js_1.DTModel { static create(params) { let us = super.create(params); us.settings = params; return us; } /** ensures that consumer requests come from a known session @return returns a token to be included in requests to consumers */ /*static consumerTokenForAPI(api_name){ const api = this.fromAPI(api_name); return api.consumerToken(); }*/ /** generate a valid consumer token @param consumer_key - should come from api config @param consumer_secret - should come from api config @param permutation - varies the token, default varies by session id. Use this to generate state-free tokens */ consumerToken() { const session = DTSession_1.DTSession.shared(); //ensure the session is started let sec = this.$get('secret'); let key = this.$get('consumer_key'); let str = sec + key + Math.random(); return md5(str).substring(0, 10) + key; } verifyConsumerToken(consumer_token) { return this.consumerToken() == consumer_token; } /** ensures that provider requests come from a known source (this token should never be public!) @return returns a token to be included in reqests to providers */ providerToken() { let sec = this.$get('secret'); let key = this.$get('consumer_key'); return md5(sec + key).substring(0, 10) + key; } verifyProviderToken(token) { return this.providerToken() == token; } } exports.DTRequestor = DTRequestor; DTRequestor.$T = "consumer";