decentraland-crypto-fetch
Version:
[](https://coveralls.io/github/decentraland/decentraland-crypto-fetch?branch=main)
50 lines • 2.14 kB
JavaScript
;
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