citizenship_app_news
Version:
News module for Citizenship project application
65 lines (57 loc) • 2.24 kB
JavaScript
export const BASE_URL = AppConfig.API_BASE_URL
const TIMEOUT = AppConfig.TIMEOUT
import AppConfig from '../configs/AppConfig';
import { Console } from '../controllers';
import { getState } from '../main/Main';
export default {
async request(endpoint, body, method, needToken) {
body = JSON.stringify(body)
var headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
if (needToken)
headers = {
'Authorization': 'Bearer ' + getState().user.token,
'Content-Type': 'application/json',
'Accept': 'application/json'
}
if (AppConfig.IS_DEBUG) {
Console.log('Request body: ', body)
Console.log(`Request info: ${BASE_URL}${endpoint} / ${method.toUpperCase()}`)
Console.log('Headers: ', headers)
}
let config = { headers: headers, method: method }
if (method !== 'get') {
config = { headers: headers, method: method, body: body }
}
return new Promise((resolve, reject) => {
var timeout = setTimeout(() => reject({ message: 'Timeout' }), TIMEOUT)
fetch(BASE_URL + endpoint, config)
.then(response => {
clearTimeout(timeout)
if (response.status !== 200) {
reject({
statusCode: response.status,
statusText: response.statusText,
apiEndpoint: BASE_URL + endpoint,
method: method,
response: response,
})
}
return response.json()
})
.then(response => {
if (AppConfig.IS_DEBUG)
Console.log(endpoint, response)
resolve(
response
)
})
.catch(err => {
clearTimeout(timeout)
reject(err)
})
})
}
}