Commit 90626d36 by lanrion

added error_handler

parent 0890bd17
require "rest-client" require "rest-client"
require "multi_json" require "multi_json"
require "weixin_authorize/config" require "weixin_authorize/config"
require "weixin_authorize/error_handler"
require "weixin_authorize/adapter" require "weixin_authorize/adapter"
require "weixin_authorize/api" require "weixin_authorize/api"
require "weixin_authorize/client" require "weixin_authorize/client"
module WeixinAuthorize module WeixinAuthorize
# autoload :Message, "wechat/message"
OK_MSG = "ok".freeze
OK_CODE = 0.freeze
class << self class << self
def http_get_without_token(url, headers={}, endpoint="plain") def http_get_without_token(url, headers={}, endpoint="plain")
get_api_url = endpoint_url(endpoint, url) get_api_url = endpoint_url(endpoint, url)
load_json(RestClient.get(get_api_url, :params => headers)) result = load_json(RestClient.get(get_api_url, :params => headers))
# binding.pry
result
end end
def http_post_without_token(url, payload={}, headers={}, endpoint="plain") def http_post_without_token(url, payload={}, headers={}, endpoint="plain")
...@@ -22,7 +30,10 @@ module WeixinAuthorize ...@@ -22,7 +30,10 @@ module WeixinAuthorize
# return hash # return hash
def load_json(string) def load_json(string)
JSON.parse(string) result_hash = JSON.parse(string)
code = result_hash.delete("errcode")
en_msg = result_hash.delete("errmsg")
ResultHandler.new(code, en_msg, result_hash)
end end
def endpoint_url(endpoint, url) def endpoint_url(endpoint, url)
......
...@@ -19,8 +19,8 @@ module WeixinAuthorize ...@@ -19,8 +19,8 @@ module WeixinAuthorize
def valid? def valid?
valid_result = http_get_access_token valid_result = http_get_access_token
if valid_result.keys.include?("access_token") if valid_result.code == OK_CODE
set_access_token_for_client(valid_result) set_access_token_for_client(valid_result.result)
return true return true
end end
false false
...@@ -40,7 +40,7 @@ module WeixinAuthorize ...@@ -40,7 +40,7 @@ module WeixinAuthorize
end end
def set_access_token_for_client(access_token_infos=nil) def set_access_token_for_client(access_token_infos=nil)
token_infos = access_token_infos || http_get_access_token token_infos = access_token_infos || http_get_access_token.result
client.access_token = token_infos["access_token"] client.access_token = token_infos["access_token"]
client.expired_at = Time.now.to_i + token_infos["expires_in"].to_i client.expired_at = Time.now.to_i + token_infos["expires_in"].to_i
end end
......
require "weixin_authorize/error_handler/global_code.rb"
require "weixin_authorize/error_handler/result_handler"
# encoding: utf-8
module WeixinAuthorize
GLOBAL_CODES = {
"-1" => "系统繁忙",
"0" => "请求成功",
"40001" => "获取access_token时AppSecret错误,或者access_token无效",
"40002" => "不合法的凭证类型",
"40003" => "不合法的OpenID",
"40004" => "不合法的媒体文件类型",
"40005" => "不合法的文件类型",
"40006" => "不合法的文件大小",
"40007" => "不合法的媒体文件id",
"40008" => "不合法的消息类型",
"40009" => "不合法的图片文件大小",
"40010" => "不合法的语音文件大小",
"40011" => "不合法的视频文件大小",
"40012" => "不合法的缩略图文件大小",
"40013" => "不合法的APPID",
"40014" => "不合法的access_token",
"40015" => "不合法的菜单类型",
"40016" => "不合法的按钮个数",
"40017" => "不合法的按钮个数",
"40018" => "不合法的按钮名字长度",
"40019" => "不合法的按钮KEY长度",
"40020" => "不合法的按钮URL长度",
"40021" => "不合法的菜单版本号",
"40022" => "不合法的子菜单级数",
"40023" => "不合法的子菜单按钮个数",
"40024" => "不合法的子菜单按钮类型",
"40025" => "不合法的子菜单按钮名字长度",
"40026" => "不合法的子菜单按钮KEY长度",
"40027" => "不合法的子菜单按钮URL长度",
"40028" => "不合法的自定义菜单使用用户",
"40029" => "不合法的oauth_code",
"40030" => "不合法的refresh_token",
"40031" => "不合法的openid列表",
"40032" => "不合法的openid列表长度",
"40033" => "不合法的请求字符,不能包含xxxx格式的字符",
"40035" => "不合法的参数",
"40038" => "不合法的请求格式",
"40039" => "不合法的URL长度",
"40050" => "不合法的分组id",
"40051" => "分组名字不合法",
"41001" => "缺少access_token参数",
"41002" => "缺少appid参数",
"41003" => "缺少refresh_token参数",
"41004" => "缺少secret参数",
"41005" => "缺少多媒体文件数据",
"41006" => "缺少media_id参数",
"41007" => "缺少子菜单数据",
"41008" => "缺少oauth code",
"41009" => "缺少openid",
"42001" => "access_token超时",
"42002" => "refresh_token超时",
"42003" => "oauth_code超时",
"43001" => "需要GET请求",
"43002" => "需要POST请求",
"43003" => "需要HTTPS请求",
"43004" => "需要接收者关注",
"43005" => "需要好友关系",
"44001" => "多媒体文件为空",
"44002" => "POST的数据包为空",
"44003" => "图文消息内容为空",
"44004" => "文本消息内容为空",
"45001" => "多媒体文件大小超过限制",
"45002" => "消息内容超过限制",
"45003" => "标题字段超过限制",
"45004" => "描述字段超过限制",
"45005" => "链接字段超过限制",
"45006" => "图片链接字段超过限制",
"45007" => "语音播放时间超过限制",
"45008" => "图文消息超过限制",
"45009" => "接口调用超过限制",
"45010" => "创建菜单个数超过限制",
"45015" => "回复时间超过限制",
"45016" => "系统分组,不允许修改",
"45017" => "分组名字过长",
"45018" => "分组数量超过上限",
"46001" => "不存在媒体数据",
"46002" => "不存在的菜单版本",
"46003" => "不存在的菜单数据",
"46004" => "不存在的用户",
"47001" => "解析JSON/XML内容错误",
"48001" => "api功能未授权",
"50001" => "用户未授权该api"
}unless defined?(GLOBAL_CODES)
end
# encoding: utf-8
module WeixinAuthorize
class ResultHandler
attr_accessor :code, :cn_msg, :en_msg, :result
def initialize(code=nil, en_msg=nil, result={})
@code = code || 0
@en_msg = en_msg || "ok"
@cn_msg = GLOBAL_CODES[@code.to_s]
@result = package_result(result)
end
private
# if define Rails constant
# result = WeixinAuthorize::ResultHandler.new("0", "success", {:ok => "true"})
# result.result["ok"] #=> true
# result.result[:ok] #=> true
# result.result['ok'] #=> true
def package_result(result)
if defined?(Rails)
ActiveSupport::HashWithIndifferentAccess.new(result)
else
result
end
end
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment