import {Injectable} from "@angular/core";
import {Http} from "@angular/http";
@Injectable()
export class C8oUtils {
/** FullSync parameters prefix. **/
private static USE_PARAMETER_IDENTIFIER: string = "_use_";
data: JSON;
public constructor(private http: Http) {
this.http = http;
}
/**
* Returns the class name of the object as a String, if the object is null then returns the String "null".
*
* @param object
* @returns string
*/
static getObjectClassName(object: any) {
return typeof object;
}
public static isValidUrl(url: string): boolean {
return /^(http|https):\/\/[^ "]+$/.test(url.toString());
}
public static getNewGUIDString(): string {
let d = new Date().getTime();
if (window.performance && typeof window.performance.now === "function") {
d += performance.now(); // use high-precision timer if available
}
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
let r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c === "x" ? r : (r & 0x3 | 0x8)).toString(16);
});
}
/** TAG Parameter **/
public static getParameter(parameters: Object, name: string, useName: boolean): any {
for (let _i = 0; _i < Object.keys(parameters).length; _i++) {
let parameterName = Object.keys(parameters)[_i];
if ((name === parameterName) || (useName && name === this.USE_PARAMETER_IDENTIFIER + parameterName)) {
let obj = {};
obj[Object.keys(parameters)[_i]] = parameters[Object.keys(parameters)[_i]];
return obj;
}
}
return null;
}
/**
* Searches in the list the parameter with this specific name (or the same name with the prefix '_use_') and returns it.
* Returns null if the parameter is not found.
*
* @param parameters
* @param name
* @param useName
* @returns string
*/
public static getParameterStringValue(parameters: Object, name: string, useName: boolean): string {
let parameter = C8oUtils.getParameter(parameters, name, useName);
if (parameter != null) {
return "" + parameter[name];
}
return null;
}
public static getParameterObjectValue(parameters: Object, name: string, useName: boolean = false): any {
//noinspection UnnecessaryLocalVariableJS
let parameters2 = parameters;
let parameter = C8oUtils.getParameter(parameters2, name, useName);
if (parameter != null) {
return parameter[name];
}
else {
return null;
}
}
public static peekParameterStringValue(parameters: Object, name: string, exceptionIfMissing: boolean): string {
//noinspection UnnecessaryLocalVariableJS
let parameters2 = parameters;
let value: string = this.getParameterStringValue(parameters2, name, false);
if (value == null) {
if (exceptionIfMissing) {
throw new Error("The parameter '" + name + "' is missing");
}
}
else {
delete parameters[name];
}
return value;
}
public static peekParameterObjectValue(parameters: Object, name: string, exceptionIfMissing: boolean): string {
let parameters2 = parameters;
let value: string = this.getParameterObjectValue(parameters2, name, false);
if (value == null) {
if (exceptionIfMissing) {
throw new Error("The parameter '" + name + "' is missing");
}
}
else {
delete parameters2[name];
}
return value;
}
/**
* Serializes a c8o call request thanks to its parameters and response type.
*
* @param parameters
* @param responseType
* @returns string
* @throws C8oException
*/
static identifyC8oCallRequest(parameters: Object, responseType: string): string {
return responseType + JSON.stringify(parameters);
}
}
export class Queue {
_store: T[] = [];
push(val: T) {
this._store.push(val);
}
pop(): T {
return this._store.shift();
}
count(): number {
return this._store.length;
}
}