"use strict"; var request = require("superagent"); var Endpoints = require("./endpoints.js"); var Internal = {}; Internal.XHR = {}; Internal.WebSocket = {}; Internal.WebSocket.properties = { "$os": "discord.js", "$browser": "discord.js", "$device": "discord.js", "$referrer": "", "$referring_domain": "" }; Internal.XHR.login = function (email, password, callback) { request.post(Endpoints.LOGIN).send({ email: email, password: password }).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body.token); } }); }; Internal.XHR.logout = function (token, callback) { request.post(Endpoints.LOGOUT).end(function (err, res) { err ? callback(err) : callback(null); }); }; Internal.XHR.createServer = function (token, name, region, callback) { request.post(Endpoints.SERVERS).set("authorization", token).send({ name: name, region: region }).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.leaveServer = function (token, serverId, callback) { request.del(Endpoints.SERVERS + "/" + serverId).set("authorization", token).end(function (err, res) { err ? callback(err) : callback(null); }); }; Internal.XHR.createInvite = function (token, channelId, options, callback) { request.post(Endpoints.CHANNELS + "/" + channelId + "/invites").set("authorization", token).send(options).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.startPM = function (token, selfID, userID, callback) { request.post(Endpoints.USERS + "/" + selfID + "/channels").set("authorization", token).send({ recipient_id: userID }).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.sendMessage = function (token, channelID, messageParameters, callback) { request.post(Endpoints.CHANNELS + "/" + channelID + "/messages").set("authorization", token).send(messageParameters).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.sendFile = function (token, channelID, file, fileName, callback) { request.post(Endpoints.CHANNELS + "/" + channelID + "/messages").set("authorization", token).attach("file", file, fileName).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.deleteMessage = function (token, channelID, messageID, callback) { request.del(Endpoints.CHANNELS + "/" + channelID + "/messages/" + messageID).set("authorization", token).end(function (err) { err ? callback(err) : callback(null); }); }; Internal.XHR.updateMessage = function (token, channelID, messageID, messageParameters, callback) { request.patch(Endpoints.CHANNELS + "/" + channelID + "/messages/" + messageID).set("authorization", token).send(messageParameters).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.getChannelLogs = function (token, channelID, amount, callback) { request.get(Endpoints.CHANNELS + "/" + channelID + "/messages?limit=" + amount).set("authorization", token).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.createChannel = function (token, serverID, name, type, callback) { request.post(Endpoints.SERVERS + "/" + serverID + "/channels").set("authorization", token).send({ name: name, type: type }).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.deleteChannel = function (token, channelID, callback) { request.del(Endpoints.CHANNELS + "/" + channelID).set("authorization", token).end(function (err) { err ? callback(err) : callback(null); }); }; Internal.XHR.deleteServer = function (token, serverID, callback) { request.del(Endpoints.SERVERS + "/" + serverID).set("authorization", token).end(function (err) { err ? callback(err) : callback(null); }); }; Internal.XHR.getChannels = function (token, serverID, callback) { request.get(Endpoints.SERVERS + "/" + serverID + "/channels").set("authorization", token).end(function (err) { err ? callback(err) : callback(null); }); }; Internal.XHR.getServer = function (token, serverID, callback) { request.get(Endpoints.SERVERS + "/" + serverID).set("authorization", token).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.acceptInvite = function (token, inviteID, callback) { request.post(Endpoints.API + "/invite/" + inviteID).set("authorization", token).end(function (err, res) { if (err) { callback(err); } else { callback(null, res.body); } }); }; Internal.XHR.setUsername = function (token, avatar, email, newPassword, password, username, callback) { request.patch(Endpoints.API + "/users/@me").set("authorization", token).send({ avatar: avatar, email: email, new_password: newPassword, password: password, username: username }).end(function (err) { callback(err); }); }; exports.Internal = Internal;