Fix sendFile content

This commit is contained in:
abalabahaha
2016-04-15 18:16:57 -07:00
parent d0f2029fa6
commit 864126976f
4 changed files with 91 additions and 70 deletions

View File

@@ -631,14 +631,19 @@ export default class Client extends EventEmitter {
* .then(msg => console.log("sent file!"))
* .catch(err => console.log("couldn't send file!"));
*/
sendFile(destination, attachment, name, callback = (/*err, m*/) => { }) {
sendFile(destination, attachment, name, content, callback = (/*err, m*/) => { }) {
if (typeof content === "function") {
// content is the callback
callback = content;
content = undefined; // Will get resolved into original filename in internal
}
if (typeof name === "function") {
// name is the callback
callback = name;
name = undefined; // Will get resolved into original filename in internal
}
return this.internal.sendFile(destination, attachment, name)
return this.internal.sendFile(destination, attachment, name, content)
.then(dataCallback(callback), errorCallback(callback));
}

View File

@@ -68,11 +68,15 @@ export default class InternalClient {
if (useAuth) {
ret.set("authorization", this.token);
}
if (data) {
ret.send(data);
}
if (file) {
ret.attach("file", file.file, file.name);
if (data) {
for (var i in data) {
ret.field(i, data[i]);
}
}
} else if (data) {
ret.send(data);
}
ret.set('User-Agent', this.userAgentInfo.full);
return new Promise((resolve, reject) => {
@@ -569,6 +573,34 @@ export default class InternalClient {
});
}
// def sendFile
sendFile(where, _file, name, content) {
if (!name) {
if (_file instanceof String || typeof _file === "string") {
name = require("path").basename(_file);
} else if (_file && _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 = "default.png"; // Just have to go with default filenames.
}
}
return this.resolver.resolveChannel(where)
.then(channel =>
this.resolver.resolveFile(_file)
.then(file =>
this.apiRequest("post", Endpoints.CHANNEL_MESSAGES(channel.id), true, {
content
}, {
name,
file
}).then(res => channel.messages.add(new Message(res, channel, this.client)))
)
);
}
// def deleteMessage
deleteMessage(_message, options = {}) {
@@ -610,32 +642,6 @@ export default class InternalClient {
));
}
// def sendFile
sendFile(where, _file, name, content) {
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 = "default.png"; // Just have to go with default filenames.
}
}
return this.resolver.resolveChannel(where)
.then(channel =>
this.resolver.resolveFile(_file)
.then(file =>
this.apiRequest("post", Endpoints.CHANNEL_MESSAGES(channel.id), true, null, {
name,
file,
content
}).then(res => channel.messages.add(new Message(res, channel, this.client)))
)
);
}
// def getChannelLogs
getChannelLogs(_channel, limit = 50, options = {}) {
return this.resolver.resolveChannel(_channel)