|
|
/**
|
|
|
* https://github.com/jinke18/educoder_weapp
|
|
|
* @licence GPL-3.0
|
|
|
* @author jinke18
|
|
|
*/
|
|
|
import {Cookie} from "./cookie";
|
|
|
|
|
|
/**
|
|
|
* 微信网络请求接口的封装,使其能够支持简单的cookie保存发送功能
|
|
|
*/
|
|
|
export class Session {
|
|
|
cookies = {}
|
|
|
constructor(){
|
|
|
}
|
|
|
set_cookie(cookie){
|
|
|
this.cookies[cookie.key] = cookie;
|
|
|
}
|
|
|
get cookie_str(){
|
|
|
let cookie_strs = Object.values(this.cookies).map(cookie=>cookie.toString());
|
|
|
return cookie_strs.join(";");
|
|
|
}
|
|
|
request({url, data, header, method, dataType, responseType, success, fail, complete}) {
|
|
|
console.log("request data and headers: ");
|
|
|
console.log({url: url, data: data, header: {...header, "Cookie": this.cookie_str}, method: method, dataType: dataType, responseType: responseType})
|
|
|
return wx.request({
|
|
|
url: url,
|
|
|
data: data,
|
|
|
header: {...header, "Cookie": this.cookie_str},
|
|
|
method: method,
|
|
|
dataType: dataType,
|
|
|
responseType: responseType,
|
|
|
success: (res) => {
|
|
|
let cookies =[];
|
|
|
if ("cookies" in res) {
|
|
|
cookies = res["cookies"];
|
|
|
} else if(res.header["Set-Cookie"]){
|
|
|
cookies = res.header["Set-Cookie"].replace(", ", "@@").replace(",","||").replace("@@",", ").split("||");
|
|
|
}else{
|
|
|
console.warn("request.js: no cookies setted in this request");
|
|
|
}
|
|
|
console.log("raw_cookies", cookies);
|
|
|
for (var i = 0; i < cookies.length; i++) {
|
|
|
this.set_cookie(new Cookie(cookies[i]));
|
|
|
}
|
|
|
console.log("set new cookies:");
|
|
|
console.log(this.cookies);
|
|
|
if (typeof success == "function") {
|
|
|
success(res);
|
|
|
} else {
|
|
|
console.warn("requests.session.request.success is not function");
|
|
|
}
|
|
|
},
|
|
|
fail: fail,
|
|
|
complete: complete
|
|
|
});
|
|
|
|
|
|
}
|
|
|
uploadFile({url, filePath, name, header, formData, success, fail, complete}){
|
|
|
console.log("uploadFile");
|
|
|
console.log({
|
|
|
url: url,
|
|
|
filePath: filePath,
|
|
|
name: name,
|
|
|
header: {"content-type": "multipart/form-data", "Cookie": this.cookie_str, ...header},
|
|
|
formData: formData});
|
|
|
return wx.uploadFile({
|
|
|
url: url,
|
|
|
filePath: filePath,
|
|
|
name: name,
|
|
|
header: {"content-type": "multipart/form-data", "Cookie": this.cookie_str, ...header},
|
|
|
formData: formData,
|
|
|
success: success,
|
|
|
fail: fail,
|
|
|
complete: complete
|
|
|
})
|
|
|
}
|
|
|
downloadFile({url, header, filePath, success, fail, complete}){
|
|
|
return wx.downloadFile({
|
|
|
url: url,
|
|
|
header: {...header, "Cookie": this.cookie_str},
|
|
|
filePath: filePath,
|
|
|
success: success,
|
|
|
fail: fail,
|
|
|
complete: complete
|
|
|
})
|
|
|
}
|
|
|
}
|