module WeixinAuthorize::Api::Media
Public Instance Methods
download_media_url(media_id)
click to toggle source
目前仅仅把下载链接返回给第三方开发者,由第三方开发者处理下载
# File lib/weixin_authorize/api/media.rb, line 17 def download_media_url(media_id) download_media_url = WeixinAuthorize.endpoint_url("file", "#{media_base_url}/get") params = URI.encode_www_form("access_token" => get_access_token, "media_id" => media_id) download_media_url += "?#{params}" download_media_url end
upload_image(image)
click to toggle source
上传图文消息内的图片获取URL api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
return: {
"url": "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ/0"
}
# File lib/weixin_authorize/api/media.rb, line 78 def upload_image(image) file = process_file(image) upload_image_url = "#{media_base_url}/uploadimg" http_post(upload_image_url, {media: file}, {type: 'image'}, 'file') end
upload_mass_news(news=[])
click to toggle source
上传图文消息素材, 主要用于群发消息接口 {
"articles": [ { "thumb_media_id":"mwvBelOXCFZiq2OsIU-p", "author":"xxx", "title":"Happy Day", "content_source_url":"www.qq.com", "content":"content", "digest":"digest" }, { "thumb_media_id":"mwvBelOXCFZiq2OsIU-p", "author":"xxx", "title":"Happy Day", "content_source_url":"www.qq.com", "content":"content", "digest":"digest" } ]
} Option: author, content_source_url
# File lib/weixin_authorize/api/media.rb, line 47 def upload_mass_news(news=[]) upload_news_url = "#{media_base_url}/uploadnews" http_post(upload_news_url, {articles: news}) end
upload_mass_video(media_id, title="", desc="")
click to toggle source
return: {
"type":"video", "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc", "created_at":1398848981
}
# File lib/weixin_authorize/api/media.rb, line 61 def upload_mass_video(media_id, title="", desc="") video_msg = { "media_id" => media_id, "title" => title, "description" => desc } http_post("#{media_base_url}/uploadvideo", video_msg) end
upload_media(media, media_type)
click to toggle source
上传多媒体文件 http请求方式: POST/FORM file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE 支持传路径或者文件类型
# File lib/weixin_authorize/api/media.rb, line 10 def upload_media(media, media_type) file = process_file(media) upload_media_url = "#{media_base_url}/upload" http_post(upload_media_url, {media: file}, {type: media_type}, "file") end
Private Instance Methods
content_type(media_path)
click to toggle source
# File lib/weixin_authorize/api/media.rb, line 143 def content_type(media_path) MIME::Types.type_for(media_path).first.content_type end
covert(uploader)
click to toggle source
JUST ONLY FOR JPG IMAGE
# File lib/weixin_authorize/api/media.rb, line 113 def covert(uploader) # image process unless (uploader.file.content_type =~ /image/).nil? if !jpep?(uploader.file) require "mini_magick" # covert to jpeg image = MiniMagick::Image.open(uploader.path) image.format("jpg") uploader.cache!(File.open(image.path)) image.destroy! # remove /tmp from MinMagick generate end end uploader end
http?(uri)
click to toggle source
# File lib/weixin_authorize/api/media.rb, line 128 def http?(uri) return false if !uri.is_a?(String) uri = URI.parse(uri) uri.scheme =~ /^https?$/ end
jpep?(file)
click to toggle source
# File lib/weixin_authorize/api/media.rb, line 134 def jpep?(file) content_type = if file.respond_to?(:content_type) file.content_type else content_type(file.path) end !(content_type =~ /jpeg/).nil? end
media_base_url()
click to toggle source
# File lib/weixin_authorize/api/media.rb, line 86 def media_base_url "/media" end
process_file(media)
click to toggle source
# File lib/weixin_authorize/api/media.rb, line 90 def process_file(media) return media if media.is_a?(File) && jpep?(media) media_url = media uploader = WeixinUploader.new if http?(media_url) # remote uploader.download!(media_url.to_s) else # local media_file = media.is_a?(File) ? media : File.new(media_url) uploader.cache!(media_file) end file = process_media(uploader) CarrierWave.clean_cached_files! # clear last one day cache file end
process_media(uploader)
click to toggle source
# File lib/weixin_authorize/api/media.rb, line 107 def process_media(uploader) uploader = covert(uploader) uploader.file.to_file end