diff options
Diffstat (limited to 'app/javascript/mastodon/link_header.js')
-rw-r--r-- | app/javascript/mastodon/link_header.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/app/javascript/mastodon/link_header.js b/app/javascript/mastodon/link_header.js new file mode 100644 index 000000000..b872dc24a --- /dev/null +++ b/app/javascript/mastodon/link_header.js @@ -0,0 +1,33 @@ +import Link from 'http-link-header'; +import querystring from 'querystring'; + +Link.parseAttrs = (link, parts) => { + let match = null + let attr = '' + let value = '' + let attrs = '' + + let uriAttrs = /<(.*)>;\s*(.*)/gi.exec(parts) + + if(uriAttrs) { + attrs = uriAttrs[2] + link = Link.parseParams(link, uriAttrs[1]) + } + + while(match = Link.attrPattern.exec(attrs)) { // eslint-disable-line no-cond-assign + attr = match[1].toLowerCase() + value = match[4] || match[3] || match[2] + + if( /\*$/.test(attr)) { + Link.setAttr(link, attr, Link.parseExtendedValue(value)) + } else if(/%/.test(value)) { + Link.setAttr(link, attr, querystring.decode(value)) + } else { + Link.setAttr(link, attr, value) + } + } + + return link +}; + +export default Link; |