1 | /*
|
2 | Copyright 2013-2020 the original author or authors from the JHipster project.
|
3 |
|
4 | This file is part of the JHipster project, see https://www.jhipster.tech/
|
5 | for more information.
|
6 |
|
7 | Licensed under the Apache License, Version 2.0 (the "License");
|
8 | you may not use this file except in compliance with the License.
|
9 | You may obtain a copy of the License at
|
10 |
|
11 | http://www.apache.org/licenses/LICENSE-2.0
|
12 |
|
13 | Unless required by applicable law or agreed to in writing, software
|
14 | distributed under the License is distributed on an "AS IS" BASIS,
|
15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 | See the License for the specific language governing permissions and
|
17 | limitations under the License.
|
18 | */
|
19 | import { Injectable } from '@angular/core';
|
20 | import * as i0 from "@angular/core";
|
21 | /**
|
22 | * An utility service for link parsing.
|
23 | */
|
24 | export class JhiParseLinks {
|
25 | constructor() { }
|
26 | /**
|
27 | * Method to parse the links
|
28 | */
|
29 | parse(header) {
|
30 | if (header.length === 0) {
|
31 | throw new Error('input must not be of zero length');
|
32 | }
|
33 | // Split parts by comma
|
34 | const parts = header.split(',');
|
35 | const links = {};
|
36 | // Parse each part into a named link
|
37 | parts.forEach(p => {
|
38 | const section = p.split(';');
|
39 | if (section.length !== 2) {
|
40 | throw new Error('section could not be split on ";"');
|
41 | }
|
42 | const url = section[0].replace(/<(.*)>/, '$1').trim();
|
43 | const queryString = {};
|
44 | url.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'), ($0, $1, $2, $3) => (queryString[$1] = $3));
|
45 | let page = queryString.page;
|
46 | if (typeof page === 'string') {
|
47 | page = parseInt(page, 10);
|
48 | }
|
49 | const name = section[1].replace(/rel="(.*)"/, '$1').trim();
|
50 | links[name] = page;
|
51 | });
|
52 | return links;
|
53 | }
|
54 | }
|
55 | JhiParseLinks.ɵprov = i0.ɵɵdefineInjectable({ factory: function JhiParseLinks_Factory() { return new JhiParseLinks(); }, token: JhiParseLinks, providedIn: "root" });
|
56 | JhiParseLinks.decorators = [
|
57 | { type: Injectable, args: [{
|
58 | providedIn: 'root'
|
59 | },] }
|
60 | ];
|
61 | JhiParseLinks.ctorParameters = () => [];
|
62 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtbGlua3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlL3BhcnNlLWxpbmtzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUN0QixnQkFBZSxDQUFDO0lBRWhCOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQWM7UUFDaEIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCx1QkFBdUI7UUFDdkIsTUFBTSxLQUFLLEdBQWEsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLEtBQUssR0FBUSxFQUFFLENBQUM7UUFFdEIsb0NBQW9DO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZCxNQUFNLE9BQU8sR0FBYSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXZDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUN4RDtZQUVELE1BQU0sR0FBRyxHQUFXLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlELE1BQU0sV0FBVyxHQUFRLEVBQUUsQ0FBQztZQUU1QixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRWpHLElBQUksSUFBSSxHQUFRLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFFakMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzFCLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzdCO1lBRUQsTUFBTSxJQUFJLEdBQVcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Ozs7WUF6Q0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBDb3B5cmlnaHQgMjAxMy0yMDIwIHRoZSBvcmlnaW5hbCBhdXRob3Igb3IgYXV0aG9ycyBmcm9tIHRoZSBKSGlwc3RlciBwcm9qZWN0LlxuXG4gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEpIaXBzdGVyIHByb2plY3QsIHNlZSBodHRwczovL3d3dy5qaGlwc3Rlci50ZWNoL1xuIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQW4gdXRpbGl0eSBzZXJ2aWNlIGZvciBsaW5rIHBhcnNpbmcuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSmhpUGFyc2VMaW5rcyB7XG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIHBhcnNlIHRoZSBsaW5rc1xuICAgICAqL1xuICAgIHBhcnNlKGhlYWRlcjogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKGhlYWRlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgb2YgemVybyBsZW5ndGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNwbGl0IHBhcnRzIGJ5IGNvbW1hXG4gICAgICAgIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IGhlYWRlci5zcGxpdCgnLCcpO1xuICAgICAgICBjb25zdCBsaW5rczogYW55ID0ge307XG5cbiAgICAgICAgLy8gUGFyc2UgZWFjaCBwYXJ0IGludG8gYSBuYW1lZCBsaW5rXG4gICAgICAgIHBhcnRzLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uOiBzdHJpbmdbXSA9IHAuc3BsaXQoJzsnKTtcblxuICAgICAgICAgICAgaWYgKHNlY3Rpb24ubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZWN0aW9uIGNvdWxkIG5vdCBiZSBzcGxpdCBvbiBcIjtcIicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cmw6IHN0cmluZyA9IHNlY3Rpb25bMF0ucmVwbGFjZSgvPCguKik+LywgJyQxJykudHJpbSgpO1xuICAgICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmc6IGFueSA9IHt9O1xuXG4gICAgICAgICAgICB1cmwucmVwbGFjZShuZXcgUmVnRXhwKCcoW14/PSZdKykoPShbXiZdKikpPycsICdnJyksICgkMCwgJDEsICQyLCAkMykgPT4gKHF1ZXJ5U3RyaW5nWyQxXSA9ICQzKSk7XG5cbiAgICAgICAgICAgIGxldCBwYWdlOiBhbnkgPSBxdWVyeVN0cmluZy5wYWdlO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHBhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcGFnZSA9IHBhcnNlSW50KHBhZ2UsIDEwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gc2VjdGlvblsxXS5yZXBsYWNlKC9yZWw9XCIoLiopXCIvLCAnJDEnKS50cmltKCk7XG4gICAgICAgICAgICBsaW5rc1tuYW1lXSA9IHBhZ2U7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbGlua3M7XG4gICAgfVxufVxuIl19 |
\ | No newline at end of file |