commerce-vuex
Version:
Commerce vuex module
61 lines (52 loc) • 1.72 kB
JavaScript
import { auth, nav } from 'oak-vuex'
const { getHubAuthHeader } = auth
const { wrapRequest, wrapEmptyRequest } = nav
const retainHubApiUrl = process.env.VUE_APP_RETAINHUB_COMMERCE_API_URL
const retainhubHubName = process.env.VUE_APP_RETAINHUB_NAME
const doDirectoryLookup = wrapRequest(({ nameLike, type }) => {
const requestOptions = {
method: 'POST',
headers: { 'Content-type': 'application/json', 'Prefer': 'count=estimated', ...getHubAuthHeader(retainhubHubName) },
body: JSON.stringify(
{
name: nameLike,
scope: type
})
}
return fetch(`${retainHubApiUrl}/rpc/directory_lookup`, requestOptions)
})
const doFetchUploadSignatureAndPolicy = wrapRequest(({ name, type, bucket, region }) => {
const requestOptions = {
method: 'POST',
headers: { 'Content-type': 'application/json', ...getHubAuthHeader(retainhubHubName) },
body: JSON.stringify(
{
name, type, bucket, region
}
)
};
return fetch(`${process.env.VUE_APP_RETAINHUB_OPS_API_URL}/s3-sign`, requestOptions);
});
const doS3Upload = wrapEmptyRequest((file, signatureAndPolicy) => {
const requestOptions = {
method: 'PUT',
headers: {},
body: file
};
return fetch(signatureAndPolicy, requestOptions);
});
/*const doS3Upload = (file, signatureAndPolicy) => {
// const type = file.split(';')[0].split('/')[1]
// const buffer = Buffer.from(file.replace(/^data:image\/\w+;base64,/, ""),'base64');
const requestOptions = {
method: 'PUT',
headers: {},
body: file
};
return fetch(signatureAndPolicy, requestOptions);
}*/
export default {
doDirectoryLookup,
doFetchUploadSignatureAndPolicy,
doS3Upload,
}