61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
|
|
import { db } from '../stores/storage/message'
|
|
|
|
interface Data {}
|
|
interface ResponseData {
|
|
code: number;
|
|
message: string;
|
|
data: any;
|
|
url: string;
|
|
}
|
|
|
|
export function generateSessionId() {
|
|
var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
var sessionId = '';
|
|
for (var i = 0; i < 32; i++) {
|
|
sessionId += characters.charAt(Math.floor(Math.random() * characters.length));
|
|
}
|
|
return sessionId;
|
|
}
|
|
|
|
|
|
export function baseUrl(){
|
|
return 'https://ansnid.com';
|
|
// return '';
|
|
}
|
|
|
|
export function getToken(){
|
|
const sessionId = localStorage.getItem('AnsnidSessionId') || generateSessionId();
|
|
localStorage.setItem('AnsnidSessionId', sessionId)
|
|
return sessionId;
|
|
}
|
|
|
|
export function fetchData(data: Data | null, callback: (data: ResponseData) => void, url: string, method ? : string): void {
|
|
let fetchOptions = {
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"Authorization": getToken()
|
|
}
|
|
};
|
|
if (method && method.toUpperCase() === "POST" && data) {
|
|
fetchOptions = { ...fetchOptions,
|
|
method: "POST",
|
|
body: JSON.stringify(data)
|
|
};
|
|
} else {
|
|
fetchOptions = { ...fetchOptions,
|
|
method: "GET"
|
|
};
|
|
}
|
|
url = baseUrl() + url;
|
|
fetch(url, fetchOptions).then(response => response.json().then(data => {
|
|
callback(data);
|
|
})).catch(error => {
|
|
|
|
console.log(error)
|
|
|
|
throw new Error('Request failed', {
|
|
cause: error?.error,
|
|
})
|
|
});
|
|
} |