UNPKG

decentraland-crypto-fetch

Version:

[![Coverage Status](https://coveralls.io/repos/github/decentraland/decentraland-crypto-fetch/badge.svg?branch=main)](https://coveralls.io/github/decentraland/decentraland-crypto-fetch?branch=main)

50 lines 2.14 kB
"use strict"; var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; Object.defineProperty(exports, "__esModule", { value: true }); var Authenticator_1 = require("@dcl/crypto/dist/Authenticator"); var utils_1 = require("./utils"); var AUTH_CHAIN_HEADER_PREFIX = "x-identity-auth-chain-"; var AUTH_TIMESTAMP_HEADER = "x-identity-timestamp"; var AUTH_METADATA_HEADER = "x-identity-metadata"; function signedHeaderFactory(options) { if (options === void 0) { options = {}; } var Headers = (0, utils_1.getImplementation)(options, "Headers"); return function signedHeader(identity, method, path, metadata, init) { var e_1, _a; var headers = new Headers(init); var timestamp = String(Date.now()); var data = JSON.stringify(metadata); var payload = [method, path, timestamp, data].join(":").toLowerCase(); var i = 0; var chain = Authenticator_1.Authenticator.signPayload(identity, payload); try { for (var chain_1 = __values(chain), chain_1_1 = chain_1.next(); !chain_1_1.done; chain_1_1 = chain_1.next()) { var link = chain_1_1.value; headers.set(AUTH_CHAIN_HEADER_PREFIX + i, JSON.stringify(link)); i++; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (chain_1_1 && !chain_1_1.done && (_a = chain_1.return)) _a.call(chain_1); } finally { if (e_1) throw e_1.error; } } headers.set(AUTH_TIMESTAMP_HEADER, timestamp); headers.set(AUTH_METADATA_HEADER, data); return headers; }; } exports.default = signedHeaderFactory; //# sourceMappingURL=signedHeaderFactory.js.map