Skip to content

Commit

Permalink
sendFile via URL
Browse files Browse the repository at this point in the history
  • Loading branch information
abalabahaha committed Jan 30, 2016
1 parent 35c800c commit dad570a
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 17 deletions.
14 changes: 8 additions & 6 deletions lib/Client/InternalClient.js
Expand Up @@ -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));
});
});
});
};
Expand Down
20 changes: 18 additions & 2 deletions lib/Client/Resolver/Resolver.js
Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down
15 changes: 8 additions & 7 deletions src/Client/InternalClient.js
Expand Up @@ -462,25 +462,26 @@ export default class InternalClient {

// def sendFile
sendFile(where, _file, name) {

if (!name) {
if (_file instanceof String || typeof _file === "string") {
name = require("path").basename(_file);
} else if (_file.path) {
// 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)))
)
);
}

Expand Down
17 changes: 15 additions & 2 deletions src/Client/Resolver/Resolver.js
Expand Up @@ -2,6 +2,7 @@
/* global Buffer */

import fs from "fs";
import request from "superagent";

import User from "../../Structures/User";
import Channel from "../../Structures/Channel";
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit dad570a

Please sign in to comment.