Skip to content

Instantly share code, notes, and snippets.

@Cologler
Last active September 7, 2017 03:50
Show Gist options
  • Save Cologler/b733664985a82881647bf443e7e4542b to your computer and use it in GitHub Desktop.
Save Cologler/b733664985a82881647bf443e7e4542b to your computer and use it in GitHub Desktop.
#javascript_lib
/* Copyright (c) 2017~2999 - cologler <skyoflw@gmail.com> */
function parseLinkHeader(link) {
let parts = link.match(/<([^ ]+)>; rel="([^"]+)"/g);
let r = {};
parts.forEach(p => {
let m = p.match(/<([^ ]+)>; rel="([^"]+)"/);
r[m[2]] = m[1];
});
return r;
}

parse Link header.

for example:

let link = `<https://api.github.com/user/blocks?page=3>; rel="next", <https://api.github.com/user/blocks?page=3>; rel="last", <https://api.github.com/user/blocks?page=1>; rel="first", <https://api.github.com/user/blocks?page=1>; rel="prev"`;

let result = parseLinkHeader(link);

json_equals(result, {
    first: "https://api.github.com/user/blocks?page=1",
    last: "https://api.github.com/user/blocks?page=3",
    next: "https://api.github.com/user/blocks?page=3",
    prev: "https://api.github.com/user/blocks?page=1"
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment