Files
agent-estate-wiki/node_modules/quartz/quartz.js
T
Tony0410 d129b70237 fix: serve quartz with clean URL support and regenerate site
- Add serve.py to resolve clean Quartz URLs to .html files
- Regenerate Quartz site with correct baseUrl http://100.118.5.51:9120
- 196 HTML files emitted; all internal links now resolve
2026-08-15 23:35:16 +08:00

90 lines
2.0 KiB
JavaScript

var request = require('request')
, _ = require('underscore');
function Quartz() {}
Quartz.prototype.connect = function(options, callback) {
var defaults = {
url: "http://localhost:9091/transmission/rpc"
, auth_required: false
, username: "admin"
, password: "password"
};
var opts = _.extend(defaults, options);
this.url = opts.url;
this.auth_required = opts.auth_required;
this.username = opts.username;
this.password = opts.password;
// connect and get the authorisation key
this.query("torrent-get", {
fields: [
"id"
, "name"
, "status"
]
}, function(err, res, body) {
if (err) {
callback(err);
} else {
if (body.result == "success") {
callback(null);
} else {
callback(err);
}
}
});
}
Quartz.prototype.query = function(method, args, callback) {
var self = this;
var data = {
'method': method,
'arguments': args
};
var json = JSON.stringify(data);
var headers = {
'Content-Type': 'application/json',
'x-transmission-session-id': this.session_id
};
if (this.auth_required) {
var auth = new Buffer(this.username + this.password).toString('base64');
headers['Authorization'] = 'Basic ' + auth;
}
var req = {uri: this.url, method: 'POST', body: json, headers: headers};
request(req, function(err, res, body) {
if (res.headers['x-transmission-session-id']) self.session_id = res.headers['x-transmission-session-id'];
switch (res.statusCode) {
case 409:
self.query(method, args, callback);
break;
case 401:
throw new Error("Invalid username / password");
break;
default:
try {
var json_body = JSON.parse(body);
} catch (e) {
callback.call(this, e, null, null);
}
if (typeof json_body != "undefined") {
callback.call(this, err, res, json_body);
} else {
callback.call(this, "unable to parse JSON", null, null);
}
break;
}
});
};
module.exports = new Quartz();