class WechatPublic::Api

Constants

API_BASE
FILE_BASE

Attributes

access_token[R]
client[R]

Public Class Methods

new(appid, secret, token_file) click to toggle source
# File lib/wechat/api.rb, line 10
def initialize appid, secret, token_file
  @client = WechatPublic::Client.new(API_BASE)
  @access_token = WechatPublic::AccessToken.new(@client, appid, secret, token_file)
end

Public Instance Methods

custom_message_send(message) click to toggle source
# File lib/wechat/api.rb, line 45
def custom_message_send message
  post "message/custom/send", message.to_json, content_type: :json
end
media(media_id) click to toggle source
# File lib/wechat/api.rb, line 37
def media media_id
  response = get "media/get", params:{media_id: media_id}, base: FILE_BASE, as: :file
end
media_create(type, file) click to toggle source
# File lib/wechat/api.rb, line 41
def media_create type, file
  post "media/upload", {upload:{media: file}}, params:{type: type}, base: FILE_BASE
end
menu() click to toggle source
menu_create(menu) click to toggle source
menu_delete() click to toggle source
template_message_send(message) click to toggle source
# File lib/wechat/api.rb, line 49
def template_message_send message
  post "message/template/send", message.to_json, content_type: :json
end
user(openid) click to toggle source
# File lib/wechat/api.rb, line 20
def user openid
  get("user/info", params:{openid: openid})
end
users(nextid = nil) click to toggle source
# File lib/wechat/api.rb, line 15
def users nextid = nil
  params = {params: {next_openid: nextid}} if nextid.present?
  get('user/get', params||{})
end

Protected Instance Methods

get(path, headers={}) click to toggle source
# File lib/wechat/api.rb, line 54
def get path, headers={}
  with_access_token(headers[:params]){|params| client.get path, headers.merge(params: params)}
end
post(path, payload, headers = {}) click to toggle source
# File lib/wechat/api.rb, line 58
def post path, payload, headers = {}
  with_access_token(headers[:params]){|params| client.post path, payload, headers.merge(params: params)}
end
with_access_token(params={}) { |merge(access_token: token)| ... } click to toggle source
# File lib/wechat/api.rb, line 62
def with_access_token params={}, tries=2
  begin
    params ||= {}
    yield(params.merge(access_token: access_token.token))
  rescue WechatPublic::AccessTokenExpiredError => ex
    access_token.refresh
    retry unless (tries -= 1).zero?
  end 
end