110 lines
4.7 KiB
JavaScript
110 lines
4.7 KiB
JavaScript
import { Platform } from 'react-native';
|
|
import RNLocation from 'react-native-location';
|
|
import EP from './endpoints.js';
|
|
import DeviceInfo from 'react-native-device-info';
|
|
|
|
export default async function API(endpoint, method, headers, params, body, onSuccess, onError) {
|
|
let deviceID = DeviceInfo.getDeviceId();
|
|
let versionNumb = DeviceInfo.getVersion();
|
|
let OS = Platform.OS;
|
|
let appBundleID = OS === 'android' ? "com.project.yondu.unioilloyaltyapp" : "com.rnunioilloyaltyapp";
|
|
let versionRelease = DeviceInfo.getBuildNumber();
|
|
let location = await RNLocation.getLatestLocation(latestLocation => latestLocation);
|
|
|
|
try {
|
|
if(method == "post") {
|
|
var Head = {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json',
|
|
'x-p97-tenantid': '8ba3cd89-74be-4a7a-91a5-5eb59a2040b8',
|
|
'x-p97-apikey': EP.post_pay_api_key,
|
|
'x-p97-latitude': location.latitude.toString(),
|
|
'x-p97-longitude': location.longitude.toString(),
|
|
'x-p97-deviceid': deviceID,
|
|
'x-p97-appversionnumber': versionNumb,
|
|
'x-p97-appbundleid': appBundleID,
|
|
'x-p97-os': "Android",
|
|
'x-p97-clientosversion': versionRelease
|
|
}
|
|
|
|
let url = endpoint.includes(":") ? endpoint : EP[endpoint];
|
|
|
|
if(headers.token != undefined) {
|
|
Head = {...Head, 'Authorization': `Bearer ${headers.token}`}
|
|
}
|
|
if(headers.language != undefined) {
|
|
Head = {...Head, 'Accept-Language': headers.language}
|
|
}
|
|
|
|
let response = await fetch(url, {
|
|
method: method,
|
|
body: body?._parts ? body : JSON.stringify(body),
|
|
headers: Head,
|
|
params: params
|
|
});
|
|
let json = await response.json();
|
|
onSuccess(json)
|
|
} else if(method == "get") {
|
|
let url;
|
|
var Head = {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json',
|
|
'x-p97-tenantid': '8ba3cd89-74be-4a7a-91a5-5eb59a2040b8',
|
|
'x-p97-apikey': EP.post_pay_api_key,
|
|
'x-p97-latitude': location.latitude,
|
|
'x-p97-longitude': location.longitude,
|
|
'x-p97-deviceid': deviceID,
|
|
'x-p97-appversionnumber': versionNumb,
|
|
'x-p97-appbundleid': appBundleID,
|
|
'x-p97-os': OS,
|
|
'x-p97-clientosversion': versionRelease
|
|
}
|
|
|
|
if(endpoint.includes("/")) {
|
|
const newURL = endpoint.split("/");
|
|
url = newURL[0].includes(":") ? newURL[0] : EP[newURL[0]];
|
|
url = `${url}/${newURL[1]}`;
|
|
} else if(endpoint === "getTransactionStatusDetails") {
|
|
url = EP[endpoint] + `/${params.transactionID}`
|
|
} else {
|
|
let paramsItem = Object.entries(params).map(([key, value]) => `${key}=${value}`)
|
|
url = paramsItem.length > 1 ? `${EP[endpoint]}?${paramsItem.join('&').toString()}` : `${EP[endpoint]}/${Object.entries(params).map(([key, value]) => value).join('').toString()}`
|
|
}
|
|
|
|
if(headers.token != undefined) {
|
|
Head = {...Head, 'Authorization': `Bearer ${headers.token}`}
|
|
}
|
|
if(headers.language != undefined) {
|
|
Head = {...Head, 'Accept-Language': headers.language}
|
|
}
|
|
console.log(url, Head)
|
|
let response = await fetch(endpoint.includes(":") ? endpoint : url, {
|
|
method: method,
|
|
headers: Head
|
|
});
|
|
let json = await response.json();
|
|
onSuccess(json)
|
|
} else if(method == "delete") {
|
|
let url = !params.noID ? (EP[endpoint] + "?" + params) : EP[endpoint] + "/" + params.value
|
|
console.warn('URL delete', url);
|
|
if(headers.Authorization){
|
|
let response = await fetch(endpoint.includes(":") ? endpoint : url, {
|
|
method: method,
|
|
headers: new Headers({
|
|
'Accept': 'application/json',
|
|
'Authorization': `${headers.Authorization || ''}`
|
|
})
|
|
});
|
|
let json = await response.json();
|
|
onSuccess(json)
|
|
} else {
|
|
let response = await fetch(endpoint.includes(":") ? endpoint : url);
|
|
console.warn('Response', JSON.stringify(res))
|
|
let json = await response.json();
|
|
onSuccess(json)
|
|
}
|
|
}
|
|
} catch (error) {
|
|
onError(error)
|
|
}
|
|
} |