diff --git a/core/lib/mikutwitter/api_shortcuts.rb b/core/lib/mikutwitter/api_shortcuts.rb index b04a0db..d28b033 100644 --- a/core/lib/mikutwitter/api_shortcuts.rb +++ b/core/lib/mikutwitter/api_shortcuts.rb @@ -118,9 +118,11 @@ module MikuTwitter::APIShortcuts text = message[:message] replyto = message[:replyto] receiver = message[:receiver] + iolist = message[:mediaiolist] data = {:status => text } data[:in_reply_to_user_id] = User.generate(receiver)[:id].to_s if receiver data[:in_reply_to_status_id] = Message.generate(replyto)[:id].to_s if replyto + data[:media_ids] = iolist.collect{ |io| upload_media(io) }.join(",") if iolist (self/'statuses/update').message(data) end alias post update @@ -239,6 +241,16 @@ module MikuTwitter::APIShortcuts else users end } } end + # upload.twitter.comに画像等をアップロードし、 + # アップロードしたファイルのmedia_idを返す。 + # ==== Args + # [io] アップロードする画像ファイルのIO + # ==== Return + # media_id(Integer) or nil + def upload_media(io) + JSON.parse(self.query!('media/upload', + { host: 'upload.twitter.com/1.1', + media: Base64.encode64(io.read) }).body)['media_id'] end end class MikuTwitter; include MikuTwitter::APIShortcuts end diff --git a/core/lib/mikutwitter/query.rb b/core/lib/mikutwitter/query.rb index 4d1e7d7..906822f 100644 --- a/core/lib/mikutwitter/query.rb +++ b/core/lib/mikutwitter/query.rb @@ -62,7 +62,7 @@ module MikuTwitter::Query raise MikuTwitter::RateLimitError.new("Rate limit #{resource.endpoint}", nil) end method = get_api_property(api, options, method_of_api) || :get url = if options[:host] - "http://#{options[:host]}/#{api}.json" + "https://#{options[:host]}/#{api}.json" else "#{@base_path}/#{api}.json" end res = _query!(api, options, method, url) @@ -187,6 +187,8 @@ module MikuTwitter::Query 'destroy' => aster_post }, 'geo' => { 'place' => :post }, + 'media' => { + 'upload' => :post }, 'blocks' => create_destroy_post, 'report_spam' => :post, 'oauth' => {