From b22b2cbfacdaef2441d14f401c95863d8ca2e66c Mon Sep 17 00:00:00 2001 From: Eugen Date: Tue, 11 Apr 2017 22:53:58 +0200 Subject: Fix #1491 - Fix broken notifications, broken Link header parsing for exclude_types (#1548) --- app/assets/javascripts/components/link_header.jsx | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 app/assets/javascripts/components/link_header.jsx (limited to 'app/assets/javascripts/components/link_header.jsx') diff --git a/app/assets/javascripts/components/link_header.jsx b/app/assets/javascripts/components/link_header.jsx new file mode 100644 index 000000000..9a9ff7e7a --- /dev/null +++ b/app/assets/javascripts/components/link_header.jsx @@ -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)) { + 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; -- cgit