diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 45194cdc1..a315fa5b5 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -583,16 +583,18 @@ var InternalClient = (function () { // fs.createReadStream()'s have .path that give the path. Not sure about other streams though. name = require("path").basename(_file.path); } else { - name = "image.png"; // Just have to go with default filenames. + name = "default.png"; // Just have to go with default filenames. } } return this.resolver.resolveChannel(where).then(function (channel) { - return _this15.apiRequest("post", _Constants.Endpoints.CHANNEL_MESSAGES(channel.id), true, null, { - name: name, - file: _this15.resolver.resolveFile(_file) - }).then(function (res) { - return channel.messages.add(new _StructuresMessage2["default"](res, channel, _this15.client)); + return _this15.resolver.resolveFile(_file).then(function (file) { + return _this15.apiRequest("post", _Constants.Endpoints.CHANNEL_MESSAGES(channel.id), true, null, { + name: name, + file: file + }).then(function (res) { + return channel.messages.add(new _StructuresMessage2["default"](res, channel, _this15.client)); + }); }); }); }; diff --git a/lib/Client/Resolver/Resolver.js b/lib/Client/Resolver/Resolver.js index a7081d9b0..b2d6f32f3 100644 --- a/lib/Client/Resolver/Resolver.js +++ b/lib/Client/Resolver/Resolver.js @@ -11,6 +11,10 @@ var _fs = require("fs"); var _fs2 = _interopRequireDefault(_fs); +var _superagent = require("superagent"); + +var _superagent2 = _interopRequireDefault(_superagent); + var _StructuresUser = require("../../Structures/User"); var _StructuresUser2 = _interopRequireDefault(_StructuresUser); @@ -130,9 +134,21 @@ var Resolver = (function () { Resolver.prototype.resolveFile = function resolveFile(resource) { if (typeof resource === "string" || resource instanceof String) { - return _fs2["default"].createReadStream(resource); + if (/^http(s):\/\//.test(resource)) { + return new Promise(function (resolve, reject) { + _superagent2["default"].get(resource).end(function (err, res) { + if (err) { + reject(err); + } else { + resolve(res.body); + } + }); + }); + } else { + return Promise.resolve(resource); + } } - return resource; + return Promise.resolve(resource); }; Resolver.prototype.resolveMentions = function resolveMentions(resource) { diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 83410dad0..42cf56b2f 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -462,7 +462,6 @@ export default class InternalClient { // def sendFile sendFile(where, _file, name) { - if (!name) { if (_file instanceof String || typeof _file === "string") { name = require("path").basename(_file); @@ -470,17 +469,19 @@ export default class InternalClient { // fs.createReadStream()'s have .path that give the path. Not sure about other streams though. name = require("path").basename(_file.path); } else { - name = "image.png"; // Just have to go with default filenames. + name = "default.png"; // Just have to go with default filenames. } } return this.resolver.resolveChannel(where) .then(channel => - this.apiRequest("post", Endpoints.CHANNEL_MESSAGES(channel.id), true, null, { - name, - file: this.resolver.resolveFile(_file) - }) - .then(res => channel.messages.add(new Message(res, channel, this.client))) + this.resolver.resolveFile(_file) + .then(file => + this.apiRequest("post", Endpoints.CHANNEL_MESSAGES(channel.id), true, null, { + name, + file + }).then(res => channel.messages.add(new Message(res, channel, this.client))) + ) ); } diff --git a/src/Client/Resolver/Resolver.js b/src/Client/Resolver/Resolver.js index 82e6a66c6..c360ce57d 100644 --- a/src/Client/Resolver/Resolver.js +++ b/src/Client/Resolver/Resolver.js @@ -2,6 +2,7 @@ /* global Buffer */ import fs from "fs"; +import request from "superagent"; import User from "../../Structures/User"; import Channel from "../../Structures/Channel"; @@ -76,9 +77,21 @@ export default class Resolver { resolveFile(resource) { if (typeof resource === "string" || resource instanceof String) { - return fs.createReadStream(resource); + if (/^http(s):\/\//.test(resource)) { + return new Promise((resolve, reject) => { + request.get(resource).end((err, res) => { + if (err) { + reject(err); + } else { + resolve(res.body); + } + }); + }); + } else { + return Promise.resolve(resource); + } } - return resource; + return Promise.resolve(resource); } resolveMentions(resource) {