ebay-api
Version:
eBay API for Node and Browser
30 lines (29 loc) • 1.15 kB
JavaScript
import Auth from '../auth/index.js';
import Base from './base.js';
import { generateContentDigestValue, generateSignature, generateSignatureInput } from './digitalSignature.js';
/**
* Superclass with Auth container.
*/
export default class Api extends Base {
constructor(config, req, auth) {
super(config, req);
this.auth = auth || new Auth(this.config, this.req);
}
getDigitalSignatureHeaders(signatureComponents, payload) {
if (!this.config.signature) {
return {};
}
const digitalSignatureHeaders = {
'x-ebay-enforce-signature': true,
'x-ebay-signature-key': this.config.signature.jwe,
...payload ? {
'content-digest': generateContentDigestValue(payload, this.config.signature.cipher ?? 'sha256')
} : {},
'signature-input': generateSignatureInput(payload)
};
return {
...digitalSignatureHeaders,
'signature': generateSignature(digitalSignatureHeaders, this.config.signature.privateKey, signatureComponents, payload)
};
}
}