module WeixinAuthorize::Api::Media
def content_type(media_path)
def content_type(media_path) MIME::Types.type_for(media_path).first.content_type end
def covert(uploader)
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
def download_media_url(media_id)
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
def http?(uri)
def http?(uri) return false if !uri.is_a?(String) uri = URI.parse(uri) uri.scheme =~ /^https?$/ end
def jpep?(file)
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
def media_base_url
def media_base_url "/media" end
def process_file(media)
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
def process_media(uploader)
def process_media(uploader) uploader = covert(uploader) uploader.file.to_file end
def upload_mass_news(news=[])
}
]
}
"digest":"digest"
"content":"content",
"content_source_url":"www.qq.com",
"title":"Happy Day",
"author":"xxx",
"thumb_media_id":"mwvBelOXCFZiq2OsIU-p",
{
},
"digest":"digest"
"content":"content",
"content_source_url":"www.qq.com",
"title":"Happy Day",
"author":"xxx",
"thumb_media_id":"mwvBelOXCFZiq2OsIU-p",
{
"articles": [
{
上传图文消息素材, 主要用于群发消息接口
def upload_mass_news(news=[]) upload_news_url = "#{media_base_url}/uploadnews" http_post(upload_news_url, {articles: news}) end
def upload_mass_video(media_id, title="", desc="")
"created_at":1398848981
"media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
"type":"video",
{
return:
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
def upload_media(media, media_type)
http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
http请求方式: POST/FORM
上传多媒体文件
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