機能 #786 » media_upload.diff
| core/lib/mikutwitter/api_shortcuts.rb | ||
|---|---|---|
|
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
|
||
| ... | ... | |
|
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
|
||
| core/lib/mikutwitter/query.rb | ||
|---|---|---|
|
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)
|
||
| ... | ... | |
|
'destroy' => aster_post },
|
||
|
'geo' => {
|
||
|
'place' => :post },
|
||
|
'media' => {
|
||
|
'upload' => :post },
|
||
|
'blocks' => create_destroy_post,
|
||
|
'report_spam' => :post,
|
||
|
'oauth' => {
|
||