Auto.js Bmob热更新案例

    技术2025-01-17  49

    “ui”;

    const APPID = ‘aa0da8d846d34075a61da6762c0e2’;// APPID const REST_ID = ‘de4902c46e3c35f00e9c1679c47a1’; //REST ID

    /------------bmob数据库的增删改查------------/ const Bmob = (function () { function Bmob(url, appId, restKey) { this.baseUrl = url; this.appId = appId; this.restKey = restKey; } Bmob.prototype.makeRequest = function (method, url, json, sessionToken, callback) { url = this.baseUrl + url; var options = {}; options.contentType = “application/json”; options.method = method; if (json) { options.body = JSON.stringify(json); } sessionToken = sessionToken || “”; options.headers = { “X-Bmob-Application-Id”: this.appId, “X-Bmob-REST-API-Key”: this.restKey, “Content-Type”: “application/json”, // 加入X-Bmob-Session-Token “X-Bmob-Session-Token”: sessionToken } return http.request(url, options, callback); } //获取服务器时间 Bmob.prototype.timestamp = function () { return this.makeRequest(“GET”, “/timestamp”, null).body.json(); } /------------------------用户表------------------------------*/ //添加用户 Bmob.prototype.userCreate = function (username,password,email,phone,info) { let user = {“username”: username,“password”: password, // “email”: email, // “mobilePhoneNumber”: phone, // “info”: info } return this.makeRequest(“POST”, “/users/”, user).body.json(); } //添加手机用户 Bmob.prototype.userMobileCreate = function (phoneNum,smsCode) { let user = {“mobilePhoneNumber”:phoneNum,“smsCode”:smsCode} return this.makeRequest(“POST”, “/users/”, user).body.json(); } //用户登录 Bmob.prototype.userLogin = function (username,password) { let url = encodeURI(util.format(’/login?username=%s&password=%s’, username, password)); return this.makeRequest(“GET”, url, null).body.json(); } //手机用户登录 Bmob.prototype.userMobileLogin = function (phoneNum,smsCode) { let url = encodeURI(util.format(’/login?username=%s&password=%s’, phoneNum,smsCode)); return this.makeRequest(“GET”, url, null).body.json(); } //用户查询 Bmob.prototype.userQuery = function (username) { let url = encodeURI(util.format(’/users?where={“username”:"%s"}’, username)); return this.makeRequest(“GET”, url, null).body.json(); } //当前用户 Bmob.prototype.userCurrent = function (objectId) { return this.makeRequest(“GET”, “/users/”+objectId, null).body.json(); } //检查session token是否过期 ?在哪些情况下{ msg: ‘ok’ }现验证为{ msg: ‘fail’ } Bmob.prototype.userSession = function (objectId) { return this.makeRequest(“GET”, “/checkSession/”+objectId, null).body.json(); } //更新用户 Bmob.prototype.userUpdate= function (objectId, sessionToken, data) { return this.makeRequest(“PUT”, “/users/”+objectId, data, sessionToken).body.json(); } //删除用户 Bmob.prototype.userDelete = function (objectId, sessionToken) { return this.makeRequest(“DELETE”, “/users/”+objectId, null, sessionToken).body.json(); } //用户列表 Bmob.prototype.userList = function () { return this.makeRequest(“GET”, “/users/”, null).body.json(); } //密码重置 Bmob.prototype.userPasswordReset = function (type, data ,data2 ,sessionToken) { /data格式email {“email”:emailAdress} sms {“password”: “new password”} oldNew {“oldPassword”: “用户的老密码”,“newPassword”: “用户的新密码”} */ var url = “”; var data = data || “”; var data2 = data2 || “”; var method = “PUT”; var sessionToken = sessionToken|| “”; switch (type) { case “email”: method = “POST”; url = “/requestPasswordReset”; break; case “sms”: url = “/resetPasswordBySmsCode/”+data2; //smsCode break; case “oldNew”: url = “/updateUserPassword/”+data2; //objectId break; default: break; } return this.makeRequest(method, url, data, sessionToken).body.json(); } //Email验证 Bmob.prototype.userEmailVerify = function (email) { let data = {“email”:email}; return this.makeRequest(“POST”, “/requestEmailVerify/”, data, null).body.json(); } //获取手机验证码 Bmob.prototype.requestSmsCode = function (phoneNum,template) { let data = {“mobilePhoneNumber”: phoneNum,“template”: templateName||""} /*data = {“mobilePhoneNumber”: phoneNum,“template”: templateName} */

    return this.makeRequest("POST", "/requestSmsCode/", data).body.json(); } /*------------------------第三方帐号用户账户连接----------------*/ //后续增加 /*------------------------数据表------------------------------*/ // 添加数据 Bmob.prototype.createObject = function (className, data) { return this.makeRequest("POST", "/classes/" + className, data).body.json(); } //批量增加数据 // https://api2.bmob.cn/1/batch/1/classes/TableName Bmob.prototype.createObjects = function (className, items) { //数据样例 className 为表名 items = [{"category": "类别","word": "value1"},{"category": "类别","word": "value2"}] let data = {"requests": []}; items.forEach(item=> { let tmp = { "method": "POST", "path": "/1/classes/" + className, "body": item, }; data.requests.push(tmp); }); return this.makeRequest("POST", "/batch/", data).body.json(); } // 查询表数据 Bmob.prototype.getObjects = function (className) { return this.makeRequest("GET", "/classes/" + className).body.json(); } // 查询ID数据 Bmob.prototype.getObject = function (className, id) { return this.makeRequest("GET", "/classes/" + className + "/" + id).body.json(); } //条件查询 Bmob.prototype.queryObject = function (className, data) { let url = encodeURI(util.format('/classes/%s/?where=%j', className, data)); return this.makeRequest("GET", url, null).body.json(); } // 更新数据 Bmob.prototype.updateObject = function (className, objectId, data) { return this.makeRequest("PUT", "/classes/" + className + "/" + objectId, data).body.json(); } // 删除数据 Bmob.prototype.deleteObject = function (className, data) { var id = typeof (data) == "string" ? data : data.objectId; return this.makeRequest("DELETE", "/classes/" + className + "/" + id).body.json(); } //BQL查询 Bmob.prototype.BQL = function (bql) { let url = encodeURI(util.format('/cloudQuery?bql=%s', bql)); return this.makeRequest("GET", url).body.json(); } return Bmob;

    })();

    if (!APPID || !REST_ID) { alert(“需要注册Bmob并填入app id和rest id”); app.openUrl(“http://doc.bmob.cn/data/restful/”); exit(); }

    var bmob = new Bmob(“https://api2.bmob.cn/1”, APPID, REST_ID);

    threads.start(function(){ // log(bmob.timestamp()); // log(bmob.getObjects(“vesionup”).results[0].jsUrl); //查询表某个数据 检查更新(); })

    ui.layout(

    );

    // 检查更新();

    //将 “brief:210|http://ys-i.ys168.com/615507929/jUrshIp524J7I2LJIMJH/inderV200.js,content_type” 已记事本 // QQ收藏内容如下:版本号|更新脚本下载的链接(版本号没有小点),分享出 “https://sharechain.qq.com/1b94abbb42c5c625444801da634003d5”;

    // var str=“brief:210|http://ys-i.ys168.com/615507929/jUrshIp524J7I2LJIMJH/inderV200.js,content_type”

    function 检查更新(){ // // 第一种方法: // let url = “https://sharechain.qq.com/1b94abbb42c5c625444801da634003d5”; // let str = http.get(url).body.string(); // let h = cutstr(str, ‘brief:’, ‘,content_type’, 1, 2); // let ho = h.split("|"); // 第二种方法:硬上,发送app,或者扫描论坛,抓包 // 更新(‘http://ys-k.ys168.com/615507924/p712M7U34IML3XjUrshI/inter201.js’) // 第三种方法:读取服务器 var ho = new Array(); //app集合 ho.push(bmob.getObjects(“vesionup”).results[0].jsVesion); ho.push(bmob.getObjects(“vesionup”).results[0].jsUrl);

    if(“200” < ho[0]) { log(‘需要更新’) 更新(ho[1]); }else{ log(‘最新版本,不需要更新’) }

    }

    function 更新(url) { threads.start(function() { var a = engines.myEngine().getSource(); toastLog(a +“更新中…”); files.write(a, http.get(url).body.string()); //运行刚才更新好的脚本 engines.execScriptFile(a); toastLog(“更新成功,请退出脚本,重新运行!!”); }); }

    function cutstr(a, b, c, f, e) { log(a) a = a.split(b); log(a) var d = “”; if (e < a.length && e != null) {} else { e = a.length; } if (f == null) { f = 1; } for (i = f; i < e; i++) { tmp = a[i].split©; if (tmp.length > 1) { d += tmp[0]; } } return d; }

    Processed: 0.015, SQL: 9