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; } }