Skip to content
This repository has been archived by the owner on Aug 25, 2018. It is now read-only.

Commit

Permalink
First cut of updateStatusWithMedia(), need to refactor some bits out
Browse files Browse the repository at this point in the history
  • Loading branch information
jdub committed Mar 10, 2012
1 parent c66ecae commit acd1687
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions lib/twitter.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ function Twitter(options) {
callback_url: null,

rest_base: 'https://api.twitter.com/1',
upload_base: 'https://upload.twitter.com/1',
search_base: 'https://search.twitter.com',
stream_base: 'https://stream.twitter.com/1',
user_stream_base: 'https://userstream.twitter.com/2',
Expand Down Expand Up @@ -323,6 +324,61 @@ Twitter.prototype.updateStatus = function(text, params, callback) {
return this;
}

Twitter.prototype.updateStatusWithMedia = function(text, media, params, callback) {
if (typeof params === 'function') {
callback = params;
params = null;
}

var url = '/statuses/update_with_media.json';
var defaults = {
status: text
};
params = merge(defaults, params);

var multipart = [];
for (var name in params) {
multipart.push({
'content-disposition': 'form-data; name="' + name + '"',
body: params[name]
});
};

var self = this;
require('fs').readFile(media, function(error, data) {
if (error) callback(error);

multipart.push({
'content-disposition': 'form-data; name="media[]"',
'content-type': 'application/octet-stream',
body: data
});

self.request.post(self.options.upload_base + url, {
headers: merge(self.options.headers, {'content-type': 'multipart/form-data'}),
multipart: multipart
}, function(error, response, data) {
if (error) {
var err = new Error('HTTP Error '
+ error.statusCode + ': '
+ http.STATUS_CODES[error.statusCode]);
err.statusCode = error.statusCode;
err.data = error.data;
callback(err);
} else {
try {
var json = JSON.parse(data);
callback(json);
} catch(err) {
callback(err);
}
}
});
});

return this;
}

Twitter.prototype.destroyStatus = function(id, callback) {
var url = '/statuses/destroy/' + escape(id) + '.json';
this.post(url, null, null, callback);
Expand Down

0 comments on commit acd1687

Please sign in to comment.