import { injectable, inject, postConstruct } from 'inversify'; import { CatalogoServer, IConnectorConfig } from '../common/catalogo-protocol'; import { API } from './apis/api-gad'; import { connectorWrapper } from '../common/utils/connector-wrapper'; import { User } from '@quarks/auth-extension/lib/common'; import { CommonRequestConfig } from '@quarks/gluon-form/lib/typings'; import { Config } from '@quarks/configuration-extension/lib/common'; import { AuthImpl } from '@quarks/auth-extension/lib/node/auth-impl'; // import emptyImageb64 from '../common/utils/empty-image'; // const token = 'eyJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJmMjU0MDZkZGQxZDZlY2NiOGZlYSIsImlzcyI6Imh0dHBzOi8vaWFtLmRldi5xdWFya3MtZWNvc3lzdGVtLmlvIiwic3ViIjoiYmZiYmJhZDYtYWQ3OC00ZTI3LWI5ODEtZjQ2Yjg2MDAwNTMzIiwiYXVkIjoiYmZiYmJhZDYtYWQ3OC00ZTI3LWI5ODEtZjQ2Yjg2MDAwNTMzIiwiZXhwIjoxNTkyNTY4NTcwNTMsImlhdCI6MTU3Njg1NzA1Mywic2NvcGUiOiJ2b3lhZ2VyLmFkdmFuY2VkLndyaXRlIHZveWFnZXIuYWRtaW4gdm95YWdlci5mZWF0dXJlLndyaXRlIHZveWFnZXIuYWR2YW5jZWQucmVhZCB2b3lhZ2VyLmZlYXR1cmUucmVhZCB2b3lhZ2VyLmNsdXN0ZXIud3JpdGUgdm95YWdlci5jbHVzdGVyLmFkbWluIHZveWFnZXIuY29tcGFueS53cml0ZSB2b3lhZ2VyLmNsdXN0ZXIucmVhZCB2b3lhZ2VyLmNvbXBhbnkucmVhZCB2b3lhZ2VyLmhvbWUgdm95YWdlci5yZWxlYXNlLnJlYWQgdm95YWdlci5yZWxlYXNlLmRlcGxveWVyIHZveWFnZXIucmVsZWFzZS5wcm9kdXRpb24ucmVhZCB2b3lhZ2VyLnJlbGVhc2UucHJvZHV0aW9uLmRlcGxveWVyIHN0dWRpby5yZWFkIHN0dWRpby5wdWJsaXNoIHN0dWRpby5kZXBsb3kgc3R1ZGlvLmJ1aWxkIHN0dWRpby5pbXBvcnQgc3R1ZGlvLmNsaSBzdHVkaW8uc3RvcmUgc3R1ZGlvLm5ld2ZlYXR1cmUgc3R1ZGlvLmRtIHN0dWRpby5uZXdWZXJzaW9uIHJlYWxtIHBob25lIGNsaWVudCBhZGRyZXNzIGVtYWlsIHByb2ZpbGUgb3BlbmlkIn0.tdrbkO0NsMwUXDAfCRT5fOP9Q9g35zs6TksZ0-cCvRQWI4xySUOn-DuXvs7UEBSvi-wn9gOX0-rzAs5NrM6OWSP_WkRAqGgd6xA_o5SplPwqZOIQn-zCPP6hS2uN_DPB-o7DuNt6AXun-yAJugjPD55l-Hz_N2P6qr-XQOOhAxF-uCSSzkozU9NnT6Lo6WUp1qmaiMwgM-nM-h_IyJHo16Gy7q9Nl-n2C09-sWssp_D_zDMRCdVINs8HsHZRDYecMOZg3TYH27qVTwB4M_X7vFjLmL3SrX9617QgEqe8usBabywioXgJvD9u1pGZg4gHtfmusFEVxsEih__WavM-NluKiNWd0obV5jBAztHsPJz04QPIWV3fW7kLc7QjRIyMQiE-7dW-5eZ2o8s3YmYIFIdQxhpYd8_Vm7hTtIkMvHU1kT45uYioD8gHl84NsUvRK-6dcN8iL1zm4ltE_bh_cNoPo6ya0gPRg8BV5-OZ8-8n93MfW-nKKVeCy_3F1w80uRrICOGJwPQq4f_Hl8_7ywxdGNhAm1G27asEbmIUJps1qWFSLrLzKqQwBWFKI2qRPG-wx5EDhSal19dEZsij7cPVKR2gyXKqGZTeG--mmDHOreX89fTGNlbruZQ6AbSgBiqCWf5PCW2SAQAj0c5rhX_D4rz6qcOP3ZvAdmI1NZg'; @injectable() export class CatalogoServerImpl implements CatalogoServer { private readonly enableQuarksC = false; private readonly enableNewQuarksC = true; private apis: API = null; constructor( @inject(Config) private readonly config: Config, @inject(AuthImpl) protected readonly auth: AuthImpl ) { this.init(); } @postConstruct() private async init () { const HOST_GAD_REPOSITORY = await this.config.getURLbyIdentifier('HOST_GAD_REPOSITORY'); const HOST_GAD_FS = await this.config.getURLbyIdentifier('HOST_GAD_FS'); const HOST_GAD = await this.config.getURLbyIdentifier('HOST_GAD'); this.apis = new API(HOST_GAD_REPOSITORY, HOST_GAD_FS, HOST_GAD); } public async initVoyagerSDK(token: string) { // Inicializa o Voyager Backend console.log('token do guilherme ' + token) const url = await this.config.getURLbyIdentifier('HOST_VOYAGER'); // const user = await this.auth.getUserInfo(); this.apis.initializerVoyagerBackend(url, token); return true; } async fetchConnectors(): Promise { const QuarksC = this.enableQuarksC ? await this.makeConnectors('QuarksConnector') : []; const newQuarksC = this.enableNewQuarksC ? await this.makeConnectors('newQuarksConnector') : []; const connectors: IConnectorConfig[] = [...QuarksC, ...newQuarksC]; return connectors; } private promiseConnector(connector: IConnectorConfig) { //a function that returns a promise return Promise.resolve(connector); } private async configConnector(node: Object, type: string): Promise { return await this.promiseConnector(connectorWrapper({...node}, type)); } async makeConnectors(type: string) { const connectors = await this.apis.fetchConnectors(type); return await Promise.all(connectors.map((conn, index) => this.configConnector(conn, type))); } async commonRequest(request: CommonRequestConfig, user: User): Promise { switch(request.method) { case 'get': return (await this.apis.getMethod(request)).data; case 'post': return (await this.apis.postMethod(request)).data; case 'delete': return (await this.apis.deleteMethod(request)).data; default: return Promise.reject('Method not found'); } } }