Browse Source

加入site map並調整輸入的參數

ANX 6 years ago
parent
commit
0864c2a638
1 changed files with 46 additions and 4 deletions
  1. 46 4
      lib/ebaytr.rb

+ 46 - 4
lib/ebaytr.rb

@@ -6,21 +6,28 @@ module Ebaytr
   # CONFIG_FILE_PATH = %w(ebay_client.yml)
   # yml = YAML.load_file(Rails.root.join(*CONFIG_FILE_PATH))
   # yml = YAML::load(IO.read(path_to_yaml_file))
-  mattr_accessor :token, :url, :api, :site, :app_name, :global_id
+  mattr_accessor :token, :app_name, :env, :url, :api, :site,  :global_id
 
   @@token = ''#yml[Rails.env]["token"]
   @@app_name = ''#yml[Rails.env]["appid"]
+  @@env = "development"
   @@url = "https://api.sandbox.ebay.com/ws/api.dll"
   @@api = "967"
-  @@site = "0"
+  @@site = "US"
   @@global_id = "EBAY-US"
 
-  def self.trading(request_name,hash = {})
+  def self.trading(request_name, hash={})
+    if @@env=='production'
+      @@url = "https://api.ebay.com/ws/api.dll" 
+    else
+      @@url = "https://api.sandbox.ebay.com/ws/api.dll" 
+    end
     url = URI.parse(@@url)
     https = Net::HTTP.new(url.host,url.port)
     https.use_ssl = true
     req = Net::HTTP::Post.new(url.path)
-    req.add_field("X-EBAY-API-SITEID", @@site)
+    site_id = trading_site_map.select{|x| x[:site_code]==@@site }[0][:site_id]
+    req.add_field("X-EBAY-API-SITEID", site_id)
     req.add_field("X-EBAY-API-COMPATIBILITY-LEVEL", @@api)
     req.add_field("X-EBAY-API-CALL-NAME", request_name)
 
@@ -106,4 +113,39 @@ module Ebaytr
     object_hash = Hash.from_xml(res.body)["#{request_name}Response"]
     object_hash
   end
+
+  def self.site_map
+    trading_site_map
+  end
+
+  private
+
+  def trading_site_map
+    # http://developer.ebay.com/devzone/xml/docs/reference/ebay/types/sitecodetype.html
+    [
+      { site_id: 15,  site_code: 'Australia' },
+      { site_id: 16,  site_code: 'Austria' },
+      { site_id: 123, site_code: 'Belgium_Dutch' },
+      { site_id: 23,  site_code: 'Belgium_French' },
+      { site_id: 2,   site_code: 'Canada' },
+      { site_id: 210, site_code: 'CanadaFrench' },
+      { site_id: 100, site_code: 'eBayMotors' },
+      { site_id: 71,  site_code: 'France' },
+      { site_id: 77,  site_code: 'Germany' },
+      { site_id: 201, site_code: 'HongKong' },
+      { site_id: 203, site_code: 'India' },
+      { site_id: 205, site_code: 'Ireland' },
+      { site_id: 101, site_code: 'Italy' },
+      { site_id: 207, site_code: 'Malaysia' },
+      { site_id: 146, site_code: 'Netherlands' },
+      { site_id: 211, site_code: 'Philippines' },
+      { site_id: 212, site_code: 'Poland' },
+      { site_id: 215, site_code: 'Russia' },
+      { site_id: 216, site_code: 'Singapore' },
+      { site_id: 186, site_code: 'Spain' },
+      { site_id: 193, site_code: 'Switzerland' },
+      { site_id: 3,   site_code: 'UK' },
+      { site_id: 0,   site_code: 'US' },
+    ]
+  end
 end