import {HttpHeaders} from "@angular/common/http"; import {PollConfig} from "./PollConfig"; import {Injectable} from "@angular/core"; @Injectable({ providedIn: 'root' }) export class PollUtilities { // utils functions /** * generate unique id to have a default url for future poll */ makeUuid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } /** * make a uniq slug for the current poll creation * @param str */ makeSlug(config: PollConfig) { let str = ''; str = config.creationDate.getFullYear() + '_' + (config.creationDate.getMonth() + 1) + '_' + config.creationDate.getDate() + '_' + config.myName + '_' + config.title; str = str.replace(/^\s+|\s+$/g, ''); // trim str = str.toLowerCase(); // remove accents, swap ñ for n, etc var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;"; var to = "aaaaeeeeiiiioooouuuunc------"; for (var i = 0, l = from.length; i < l; i++) { str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i)); } str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars .replace(/\s+/g, '-') // collapse whitespace and replace by - .replace(/-+/g, '-'); // collapse dashes return str; } /** * prepare headers like the charset and json type for any call to the backend * @param bodyContent */ makeHeaders(bodyContent?: any) { const headerDict = { 'Charset': 'UTF-8', 'Content-Type': 'application/json', 'Accept': 'application/json', 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', 'Access-Control-Allow-Origin': '*' }; const requestOptions = { headers: new HttpHeaders(headerDict), body: bodyContent }; return requestOptions; } }