From 8b2bbb505f39532980832faca57f9d043c6d809e Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 28 May 2018 12:35:17 +0200 Subject: [PATCH] Client: refactor --- mpwo_client/src/mwpoApi/activities.js | 42 +++++------- mpwo_client/src/mwpoApi/index.js | 62 +++++++----------- mpwo_client/src/mwpoApi/user.js | 94 +++++++++++---------------- mpwo_client/src/utils.js | 26 ++++++++ 4 files changed, 101 insertions(+), 123 deletions(-) diff --git a/mpwo_client/src/mwpoApi/activities.js b/mpwo_client/src/mwpoApi/activities.js index 5a2cbd01..a74f618b 100644 --- a/mpwo_client/src/mwpoApi/activities.js +++ b/mpwo_client/src/mwpoApi/activities.js @@ -1,44 +1,32 @@ -import { apiUrl } from '../utils' +import { apiUrl, createRequest } from '../utils' export default class MpwoApi { static addActivity(formData) { - const request = new Request(`${apiUrl}activities`, { + const params = { + url: `${apiUrl}activities`, method: 'POST', - headers: new Headers({ - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), body: formData, - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + } + return createRequest(params) } static addActivityWithoutGpx(data) { - const request = new Request(`${apiUrl}activities/no_gpx`, { + const params = { + url: `${apiUrl}activities/no_gpx`, method: 'POST', - headers: new Headers({ - 'Content-Type': 'application/json', - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - body: JSON.stringify(data) - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + body: data, + type: 'application/json', + } + return createRequest(params) } static getActivityGpx(activityId) { - const request = new Request(`${apiUrl}activities/${activityId}/gpx`, { + const params = { + url: `${apiUrl}activities/${activityId}/gpx`, method: 'GET', - headers: new Headers({ - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + } + return createRequest(params) } } diff --git a/mpwo_client/src/mwpoApi/index.js b/mpwo_client/src/mwpoApi/index.js index 9b18f4b1..e0f15506 100644 --- a/mpwo_client/src/mwpoApi/index.js +++ b/mpwo_client/src/mwpoApi/index.js @@ -1,4 +1,4 @@ -import { apiUrl } from '../utils' +import { apiUrl, createRequest } from '../utils' export default class MpwoApi { @@ -9,56 +9,40 @@ export default class MpwoApi { } else if (page) { url = `${url}?page=${page}` } - const request = new Request(url, { + const params = { + url: url, method: 'GET', - headers: new Headers({ - 'Content-Type': 'application/json', - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + type: 'application/json', + } + return createRequest(params) } static addData(target, data) { - const request = new Request(`${apiUrl}${target}`, { + const params = { + url: `${apiUrl}${target}`, method: 'POST', - headers: new Headers({ - 'Content-Type': 'application/json', - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - body: JSON.stringify(data) - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + body: data, + type: 'application/json', + } + return createRequest(params) } static updateData(target, data) { - const request = new Request(`${apiUrl}${target}/${data.id}`, { + const params = { + url: `${apiUrl}${target}/${data.id}`, method: 'PATCH', - headers: new Headers({ - 'Content-Type': 'application/json', - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - body: JSON.stringify(data) - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + body: data, + type: 'application/json', + } + return createRequest(params) } static deleteData(target, id) { - const request = new Request(`${apiUrl}${target}/${id}`, { + const params = { + url: `${apiUrl}${target}/${id}`, method: 'DELETE', - headers: new Headers({ - 'Content-Type': 'application/json', - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - }) - return fetch(request) - .then(response => response) - .catch(error => error) + type: 'application/json', + } + return createRequest(params) } } diff --git a/mpwo_client/src/mwpoApi/user.js b/mpwo_client/src/mwpoApi/user.js index 37f55d2b..659de485 100644 --- a/mpwo_client/src/mwpoApi/user.js +++ b/mpwo_client/src/mwpoApi/user.js @@ -1,62 +1,51 @@ -import { apiUrl } from '../utils' +import { apiUrl, createRequest } from '../utils' export default class MpwoApiUser { static login(email, password) { - const request = new Request(`${apiUrl}auth/login`, { + const params = { + url: `${apiUrl}auth/login`, method: 'POST', - headers: new Headers({ - 'Content-Type': 'application/json', - }), - body: JSON.stringify({ + noAuthorization: true, + body: { email: email, password: password, - }), - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + }, + type: 'application/json', + } + return createRequest(params) } static register(username, email, password, passwordConf) { - const request = new Request(`${apiUrl}auth/register`, { + const params = { + url: `${apiUrl}auth/register`, method: 'POST', - headers: new Headers({ - 'Content-Type': 'application/json', - }), - body: JSON.stringify({ + noAuthorization: true, + body: { username: username, email: email, password: password, password_conf: passwordConf, - }), - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + }, + type: 'application/json', + } + return createRequest(params) } static getProfile() { - const request = new Request(`${apiUrl}auth/profile`, { + const params = { + url: `${apiUrl}auth/profile`, method: 'GET', - headers: new Headers({ - 'Content-Type': 'application/json', - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + type: 'application/json', + } + return createRequest(params) } static updateProfile(form) { - const request = new Request(`${apiUrl}auth/profile/edit`, { + const params = { + url: `${apiUrl}auth/profile/edit`, method: 'POST', - headers: new Headers({ - 'Content-Type': 'application/json', - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - body: JSON.stringify({ + body: { first_name: form.firstName, last_name: form.lastName, bio: form.bio, @@ -64,35 +53,26 @@ export default class MpwoApiUser { birth_date: form.birthDate, password: form.password, password_conf: form.passwordConf, - }), - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + }, + type: 'application/json', + } + return createRequest(params) } static updatePicture(form) { - const request = new Request(`${apiUrl}auth/picture`, { + const params = { + url: `${apiUrl}auth/picture`, method: 'POST', - headers: new Headers({ - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), body: form, - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + } + return createRequest(params) } static deletePicture() { - const request = new Request(`${apiUrl}auth/picture`, { + const params = { + url: `${apiUrl}auth/picture`, method: 'DELETE', - headers: new Headers({ - Authorization: `Bearer ${window.localStorage.getItem('authToken')}`, - }), - }) - return fetch(request) - .then(response => response.json()) - .catch(error => error) + } + return createRequest(params) } } diff --git a/mpwo_client/src/utils.js b/mpwo_client/src/utils.js index 2c95420e..cc06667b 100644 --- a/mpwo_client/src/utils.js +++ b/mpwo_client/src/utils.js @@ -17,6 +17,32 @@ export const generateIds = arr => { }) } + +export const createRequest = params => { + const headers = {} + if (!params.noAuthorization) { + headers.Authorization = `Bearer ${ + window.localStorage.getItem('authToken')}` + } + if (params.type) { + headers['Content-Type'] = params.type + } + const requestParams = { + method: params.method, + headers: headers, + } + if (params.type === 'application/json' && params.body) { + requestParams.body = JSON.stringify(params.body) + } else if (params.body) { + requestParams.body = params.body + } + const request = new Request(params.url, requestParams) + return fetch(request) + .then(response => response.json()) + .catch(error => error) +} + + export const getGeoJson = gpxContent => { let jsonData if (gpxContent) {