bukopin-redemption-client-r.../src/common/util/http.js
Rifqy Zacky Ariadhy 1a000700e6 Initial commit
2019-01-02 18:39:53 +07:00

165 lines
3.4 KiB
JavaScript

import fetch from "isomorphic-fetch";
import {appConfig} from "../config/app";
export class Http {
token = '';
baseUrl = '';
constructor(token, baseUrl = appConfig.apiUrl) {
if (token) {
this.token = token;
}
this.baseUrl = baseUrl;
}
checkStatus(result) {
if (!result.ok) {
return result.json().then(data => {
return Promise.reject(data);
});
}
return result;
}
raw(url, options={}) {
let headers = new Headers();
console.log(url, options, "raw http request");
return fetch(url, {headers: {}})
.then(response => {
if (options.raw){
return response;
}
return response.json();
})
.catch(err => {
console.log(err);
throw err;
})
}
get(url, options={}) {
let headers = new Headers();
headers.append("Authorization", `Bearer ${this.token}`);
return fetch(this.baseUrl + url, Object.assign(options, {headers}))
.then(this.checkStatus)
.then(response => {
if (options.raw){
return response;
}
return response.json();
})
.catch(err => {
console.log(err);
throw err;
})
}
post(url, data, options={}) {
let headers = new Headers();
headers.append("Authorization", `Bearer ${this.token}`);
headers.append("Content-Type", "application/json");
return fetch(this.baseUrl + url, Object.assign({
method: 'POST',
headers,
body: JSON.stringify(data)
}, options))
.then(this.checkStatus)
.then(response => {
if (options.raw){
return response;
}
return response.json()
})
.catch(err => {
console.log(err);
throw err;
})
}
put(url, data, options={}) {
let headers = new Headers();
headers.append("Authorization", `Bearer ${this.token}`);
headers.append("Content-Type", "application/json");
return fetch(this.baseUrl + url, Object.assign({
method: 'PUT',
headers,
body: JSON.stringify(data)
}, options))
.then(this.checkStatus)
.then(response => {
if (options.raw){
return response;
}
return response.json()
})
.catch(err => {
console.log(err);
throw err;
})
}
delete(url, options={}) {
let headers = new Headers();
headers.append("Authorization", `Bearer ${this.token}`);
return fetch(this.baseUrl + url, {
headers,
method: 'DELETE'
})
.then(this.checkStatus)
.then(response => {
if (options.raw){
return response;
}
return response.json()
})
.catch(err => {
console.log(err);
throw err;
})
}
upload(file, options={}) {
let headers = new Headers();
headers.append("Authorization", `Bearer ${this.token}`);
let data = new FormData();
data.append('file', file);
return fetch(appConfig.apiUrl + 'files', Object.assign({
method: 'POST',
headers,
body: data
}, options))
.then(this.checkStatus)
.then(response => {
if (options.raw){
return response;
}
return response.json()
})
.catch(err => {
console.log(err);
throw err;
})
}
appendImagePath(path) {
return appConfig.imageUrl + path;
}
// static appendImagePath(path) {
// return appConfig.imageUrl + path;
// }
}