lib/haruna/api.rb in haruna-0.0.1.2 vs lib/haruna/api.rb in haruna-0.0.2

- old
+ new

@@ -1,43 +1,53 @@ module Haruna class API - # config req header - API_VER = 1 - END_POINT = 'http://125.6.189.215' - USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36' - REFERER = 'http://125.6.189.215/kcs/port.swf?version=1.5.5' - ACCEPT_ENCODING = 'gzip,deflate,sdch' - ACCEPT_LANGUAGE = 'ja,en-US;q=0.8,en;q=0.6' - CONTENT_TYPE = 'application/x-www-form-urlencoded' + attr_writer :conn # for testing, not really need to rewrite this + attr_accessor :proxy, :api_ver, :user_agent, :referer, :accept_enc, :accept_lang, :content_type - def initialize(token, proxy=nil) + DEFAULT_OPTS = { + proxy: nil, + api_ver: 1, + user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36', + referer: '/kcs/port.swf?version=1.5.5', # 'http://125.6.189.215/kcs/port.swf?version=1.5.5' + accept_enc: 'gzip,deflate,sdch', + accept_lang: 'ja,en-US;q=0.8,en;q=0.6', + content_type: 'application/x-www-form-urlencoded' + } + + def initialize(token, end_point, opts={}) require 'faraday' @token = token + @end_point = end_point - @conn = Faraday.new(:url => END_POINT, :proxy => proxy) do |faraday| + self.setup(opts || {}) + + @conn = Faraday.new(:url => @end_point, :proxy => @proxy) do |faraday| faraday.request :url_encoded # faraday.response :logger faraday.adapter Faraday.default_adapter end end - attr_writer :conn # for testing, not really need to rewrite - def call(action, target, param={}) @conn.post do |req| req.url "/kcsapi/#{action}/#{target}" - req.headers['User-Agent'] = USER_AGENT - req.headers['Referer'] = REFERER - req.headers['Accept-Encoding'] = ACCEPT_ENCODING - req.headers['Accept-Language'] = ACCEPT_LANGUAGE - req.headers['Content-Type'] = CONTENT_TYPE + req.headers['User-Agent'] = @user_agent + req.headers['Referer'] = "#{@end_point}#{@referer}" + req.headers['Accept-Encoding'] = @accept_enc + req.headers['Accept-Language'] = @accept_lang + req.headers['Content-Type'] = @content_type req.body = setup_param(param) end end def setup_param(param) - param.merge(api_verno: API_VER, api_token: @token) + param.merge(api_verno: @api_ver, api_token: @token) + end + + def setup(opts) + DEFAULT_OPTS.merge(opts).each { |key, value| instance_variable_set("@#{key}", value) } + self end end end