96 lines
2.4 KiB
JavaScript
96 lines
2.4 KiB
JavaScript
import {
|
|
constructUrl,
|
|
formatPostData,
|
|
parseQueryParams,
|
|
request,
|
|
unwrapJson,
|
|
validateResponse,
|
|
} from './helpers.js';
|
|
|
|
import { API_URL } from '../constants/constants.js';
|
|
|
|
const DefaultRequestOptions = {};
|
|
|
|
export const API_ENDPOINTS = {
|
|
// Events and Items
|
|
GET_EVENTS: '/events',
|
|
// GET_ITEMS: '/items?eventId=:event_id',
|
|
GET_ITEMS: '/items',
|
|
|
|
// Auction Interactions
|
|
// GET_STATUS: '/auction/:event_id',
|
|
GET_STATUS: '/auction',
|
|
PLACE_BID: '/bids',
|
|
PURCHASE_ITEM: '/sales',
|
|
|
|
// User/Profile
|
|
USER_SIGNUP: '/signup',
|
|
USER_PROFILE: '/users/:user_id',
|
|
|
|
VALIDATE_SIGNUP_EMAIL: '/signup/validate/email',
|
|
VALIDATE_SIGNUP_NOM: '/signup/validate/nom',
|
|
|
|
// Services
|
|
APPLE_SIGNUP: '/auth/apple/login',
|
|
APPLE_LINK: '/auth/apple/link',
|
|
FACEBOOK_SIGNUP: '/auth/facebook/login',
|
|
FACEBOOK_LINK: '/auth/facebook/link',
|
|
GOOGLE_SIGNUP: '/auth/google/login',
|
|
GOOGLE_LINK: '/auth/google/link',
|
|
};
|
|
|
|
const cacheBuster = () => {
|
|
const timestamp = String(Date.now());
|
|
return `?buster=${timestamp}`;
|
|
};
|
|
|
|
export const getEndpointUrl = (endpoint) => {
|
|
if (!endpoints[endpoint]) {
|
|
throw new Error('Invalid API endpoint specified');
|
|
}
|
|
|
|
return `${API_URL}${endpoints[endpoint]}`; //`${cacheBuster()}`;
|
|
};
|
|
|
|
export const requestGet = (path, queryParams = [], requestOptions = {}) => {
|
|
const params = parseQueryParams(queryParams);
|
|
|
|
if (params === null) {
|
|
throw new Error('Invalid queryParams');
|
|
}
|
|
|
|
return request(constructUrl(path, params), {
|
|
...DefaultRequestOptions,
|
|
...requestOptions,
|
|
})
|
|
.then(validateResponse)
|
|
.then(unwrapJson);
|
|
};
|
|
|
|
export const requestPost = (options) => {
|
|
const {
|
|
path,
|
|
body = {},
|
|
queryParams = [],
|
|
requestOptions = {},
|
|
isFormattedPostData = false,
|
|
} = options;
|
|
|
|
const params = parseQueryParams(queryParams || []);
|
|
|
|
if (params === null) {
|
|
throw new Error('invalid queryParams');
|
|
}
|
|
|
|
// Additional formatting happens in `formatPostData()`
|
|
// like handling what jQuery calls `traditional` form data
|
|
return request(constructUrl(path, params), {
|
|
...DefaultRequestOptions,
|
|
...requestOptions,
|
|
method: 'POST',
|
|
body: isFormattedPostData ? body : formatPostData(body),
|
|
})
|
|
.then(validateResponse)
|
|
.then(unwrapJson);
|
|
};
|