Skip to content

Commit 723f640

Browse files
committed
Add release module files
source module and minified module
1 parent b795328 commit 723f640

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed

release/angular-link-header-parser.js

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
(function () {
2+
angular
3+
.module("ig.linkHeaderParser", [])
4+
.factory("linkHeaderParser", linkHeaderParser);
5+
6+
/* @ngInject */
7+
function linkHeaderParser($log) {
8+
var service = {
9+
parse: parse
10+
};
11+
12+
return service;
13+
14+
////////////////////////////////////////////////////
15+
16+
/**
17+
*
18+
* @param linkHeader
19+
* @returns {*}
20+
*/
21+
function parse(linkHeader) {
22+
var linkHeaderObject = {};
23+
24+
$log.debug("Link header: ", linkHeader);
25+
26+
if ( typeof linkHeader !== "string" )
27+
return new Error("Expected a string as parameter type but received: '" + typeof linkHeader + "'!");
28+
if ( linkHeader.length == 0 )
29+
return new Error("Empty string provided!");
30+
31+
var links = linkHeader.split(",");
32+
33+
$log.debug("Links: ", links);
34+
35+
_.forEach(links, function (link) {
36+
_parseElement(link, linkHeaderObject);
37+
});
38+
39+
$log.debug("Object returned: ", linkHeaderObject);
40+
41+
return linkHeaderObject;
42+
}
43+
44+
////////////////////////////////////////////////////
45+
46+
/**
47+
*
48+
* @param element
49+
* @param object
50+
* @private
51+
*/
52+
function _parseElement(element, object) {
53+
$log.debug("Element to parse: ", element);
54+
55+
var items = element.split(";");
56+
57+
items[ 0 ] = items[ 0 ].trim();
58+
items[ 1 ] = items[ 1 ].trim();
59+
60+
$log.debug("Element splitted and trimmed: ", items);
61+
62+
object[ _parseRelElement(items[ 1 ]) ] = _parseURLElement(items[ 0 ]);
63+
}
64+
65+
/**
66+
*
67+
* @param relElement
68+
* @returns {*}
69+
* @private
70+
*/
71+
function _parseRelElement(relElement) {
72+
$log.debug("REL element to parse: ", relElement);
73+
74+
var items = relElement.split("=");
75+
76+
items[ 1 ] = items[ 1 ].trim().toLowerCase();
77+
items[ 1 ] = items[ 1 ].replace(/"/g, "");
78+
79+
$log.debug("Parsed REL element: ", items[ 1 ]);
80+
81+
return items[ 1 ];
82+
}
83+
84+
/**
85+
*
86+
* @param urlElement
87+
* @returns {*|{}}
88+
* @private
89+
*/
90+
function _parseURLElement(urlElement) {
91+
$log.debug("URL element to parse: ", urlElement);
92+
93+
urlElement = urlElement.replace(/^</, "").replace(/>$/, "");
94+
95+
var extracted = URIUtil.parse(urlElement);
96+
97+
extracted.url = urlElement;
98+
99+
$log.debug("Extracted data: ", extracted);
100+
101+
return extracted;
102+
}
103+
}
104+
linkHeaderParser.$inject = ["$log"];
105+
})();

release/angular-link-header-parser.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)