added typescript files converted from js files

This commit is contained in:
huangjx
2022-02-26 11:47:23 +08:00
parent b689900012
commit 677c88e88c
13 changed files with 607 additions and 8 deletions

79
src/lib/http.ts Normal file
View File

@@ -0,0 +1,79 @@
type httpData = {
[key: string]: any
}
type httpMethod = "POST" | "HEAD" | "GET";
type handler = (data: any) => void;
const Http = class {
data: httpData;
url: string;
method: httpMethod;
dataType: string;
xhr: XMLHttpRequest;
handler: handler;
errorHandler: handler;
constructor(url: string) {
this.url = url;
this.method = 'POST';
this.data = null;
this.dataType = 'application/json';
this.xhr = new XMLHttpRequest();
}
static getInstance(url: string) {
return new Http(url);
}
setData(data: httpData) {
this.data = data
return this
}
setDataType(value: string) {
this.dataType = value;
}
send() {
let token = this.getToken();
this.xhr.open(this.method, this.url);
this.xhr.setRequestHeader('requesttoken', token)
this.xhr.setRequestHeader('OCS-APIREQUEST', 'true')
if (this.dataType)
this.xhr.setRequestHeader('Content-Type', this.dataType);
let callback = this.handler;
this.xhr.onload = () => {
if (typeof callback === 'function')
callback(JSON.parse(this.xhr.response));
}
this.xhr.onerror = this.errorHandler;
this.xhr.send(JSON.stringify(this.data));
}
getToken() {
return document.getElementsByTagName('head')[0].getAttribute('data-requesttoken')
}
setUrl(url: string) {
this.url = url
return this
}
setMethod(method: httpMethod) {
this.method = method
return this
}
setHandler(handler: handler) {
this.handler = handler || function (data) { };
return this;
}
setErrorHandler(handler: handler) {
this.errorHandler = handler
return this;
}
upload(file: File) {
const fd = new FormData();
this.xhr.open(this.method, this.url, true);
let callback = this.handler;
this.xhr.onload = () => {
if (typeof callback === 'function')
callback(JSON.parse(this.xhr.response));
}
fd.append('torrentfile', file);
return this.xhr.send(fd);
}
}
export default Http