@expressive-analytics/deep-thought-service
Version:
Typescript conversion of Deep Thought Services (formerly providers)
51 lines (50 loc) • 1.88 kB
JavaScript
;
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";