86 lines
3.6 KiB
TypeScript
86 lines
3.6 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
||
import axios from 'axios';
|
||
import { error } from 'console';
|
||
import { response } from 'express';
|
||
import { Interface } from 'readline';
|
||
|
||
//====================Начнем=================================
|
||
@Injectable()
|
||
//Класс для подключения и получения токена, потом расширим, если звезда засветит
|
||
export class ConnectorsService {
|
||
user : string; //логин на стороне сервака
|
||
password : string; //пароль к логину на стороне сервака
|
||
path : string; // путь, куда стучимся
|
||
creds : string; //правильная строка - солянка из логина и пароля, чем стучимся
|
||
options : any; //в основном здесь хидеры, а то без них не хочет работать
|
||
body: string;
|
||
|
||
//Замечательный метод класса для инициализации свойств класса, сейчас в ручную, в дальнейшем планируется автоматом из конфы
|
||
SetConnData() {
|
||
this.user = "admin";
|
||
this.password = "admin";
|
||
this.path = 'http://192.168.244.1/e-data-front/auth/login';
|
||
this.creds = '{"login":"' + this.user + '","password":"' + this.password + '"}';
|
||
this.options = {
|
||
headers: {'Content-Type' : 'application/json'}
|
||
};
|
||
return 0;
|
||
};
|
||
|
||
//Замечетельный метод, пока не придумал назначение, но если есть Get, то должен быть и Set
|
||
GetConnData() {
|
||
|
||
};
|
||
|
||
//Пробуем получить данные для меню
|
||
GetMenuData (token : string){
|
||
this.path = 'http://192.168.244.1/e-cmdb/api/query';
|
||
this.body = '{"id":["/measures/device$18"],"data":{"links":{"flatten":true,"filter":{"cls":"measure"},"fields":["$id","id","cls","name"]}},"postQuery":"links","enableActions":false,"ts":1740060679399}';
|
||
this.options = {
|
||
headers: {'Content-Type' : 'application/json', 'access-token' : token}
|
||
};
|
||
|
||
}
|
||
};
|
||
|
||
//Класс основных методов для получения, обработки данных и дальнейшей пересылки в Exporter
|
||
@Injectable()
|
||
export class MufapiService {
|
||
|
||
token: string; //Глобальная переменная класса под токен
|
||
//Получение токена через шаблонизацию
|
||
async getAccessToken (path:string, body:string, headers) : Promise<string> {
|
||
interface Authtorise {
|
||
access_token: string;
|
||
};
|
||
let auth : Authtorise;
|
||
this.token = 'Error';
|
||
await axios.post(path, body, headers).then((response)=>{
|
||
auth = response.data;
|
||
this.token = auth.access_token;
|
||
}).catch((error)=>{
|
||
this.token = error;
|
||
});
|
||
|
||
return this.token;
|
||
}
|
||
//Получение данных для формирования меню в МУФ
|
||
async getMenu (path:string, body:string, headers) : Promise<string> {
|
||
//*interface MenuController {
|
||
// name: string;
|
||
//
|
||
let resp : string = 'Zlo';
|
||
await axios.post(path, body, headers).then((response)=>{
|
||
resp = response.data;
|
||
// this.token=resp.name;
|
||
//this.token = auth.access_token;
|
||
console.log(resp);
|
||
}).catch((error)=>{
|
||
this.token = error;
|
||
});
|
||
|
||
return resp;
|
||
}
|
||
|
||
}
|