module Util::Wechat
  BASE_SITE = 'https://api.weixin.qq.com'.freeze

  Error = Class.new(StandardError)

  class << self
    attr_accessor :appid, :secret

    def js_sdk_signature(url, noncestr, timestamp)
      data = { jsapi_ticket: jsapi_ticket, noncestr: noncestr, timestamp: timestamp, url: url }
      str = data.map { |k, v| "#{k}=#{v}" }.join('&')
      Digest::SHA1.hexdigest(str)
    end

    def access_token
      wechat_store.access_token
    end

    def jsapi_ticket
      wechat_store.jsapi_ticket
    end

    def wechat_store
      @_wechat_store ||= ::Util::WechatStore.new(appid, secret)
    end
  end
end