Sha256: fffe288f9b4f02ccae7e2e7efe4853c30d8c81e21e8b5de38f3a5d824d6eeed0
Contents?: true
Size: 1.89 KB
Versions: 1
Compression:
Stored size: 1.89 KB
Contents
require 'net/http' require 'uri' require 'md5' require 'timeout' module TaobaoApi module BaseApi class ConfigKeysError < StandardError; end class ConfigValuesError < StandardError; end mattr_reader :config def self.included(receiver) receiver.extend ClassMethods receiver.send :include, InstanceMethods end def self.init_config @@config = YAML::load_file("#{RAILS_ROOT}/config/taobao_api.yml")['taobao_api'].symbolize_keys valid_config end def self.valid_config @@config.assert_valid_keys :api_url, :secret_code, :pid, :api_key, :timeout, :outer_code rescue raise ConfigKeysError.new @@config.values.map { |v| raise ConfigValuesError.new if v.blank? } end init_config module ClassMethods #获得淘宝API返回的json数据 #返回结果是Hash def taobao_api_get(options = {}) Timeout::timeout(BaseApi.config[:timeout].to_f) do return ActiveResource::Formats::JsonFormat.decode(Net::HTTP.post_form(URI::parse(BaseApi.config[:api_url]), get_taobao_options(options)).body) end rescue Exception => e ActiveRecord::Base.logger.error("#{e}\n#{e.backtrace.join('\n')}") return {} end protected #get taobao request options def get_taobao_options(options = {}) taobao_options = taobao_config_options.merge(options) taobao_options[:sign] = encrypt(taobao_options.stringify_keys.sort.flatten.join).upcase taobao_options end def taobao_config_options { :api_key => BaseApi.config[:api_key], :format => 'json', :v => '2.0', :sign_method => 'md5' } end def encrypt(str) MD5.hexdigest(BaseApi.config[:secret_code] + str + BaseApi.config[:secret_code]) end end module InstanceMethods end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
taobao_api-0.2.1 | lib/taobao_api/base_api.rb |