ebaytr.rb 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. require "ebaytr/version"
  2. # require 'yaml'
  3. require "net/http"
  4. require "uri"
  5. module Ebaytr
  6. # CONFIG_FILE_PATH = %w(ebay_client.yml)
  7. # yml = YAML.load_file(Rails.root.join(*CONFIG_FILE_PATH))
  8. # yml = YAML::load(IO.read(path_to_yaml_file))
  9. mattr_accessor :token, :url, :api, :site, :app_name, :global_id
  10. @@token = ''#yml[Rails.env]["token"]
  11. @@app_name = ''#yml[Rails.env]["appid"]
  12. @@url = "https://api.sandbox.ebay.com/ws/api.dll"
  13. @@api = "967"
  14. @@site = "0"
  15. @@global_id = "EBAY-US"
  16. def self.trading(request_name,hash = {})
  17. url = URI.parse(@@url)
  18. https = Net::HTTP.new(url.host,url.port)
  19. https.use_ssl = true
  20. req = Net::HTTP::Post.new(url.path)
  21. req.add_field("X-EBAY-API-SITEID", @@site)
  22. req.add_field("X-EBAY-API-COMPATIBILITY-LEVEL", @@api)
  23. req.add_field("X-EBAY-API-CALL-NAME", request_name)
  24. main_hash = {
  25. RequesterCredentials: {
  26. eBayAuthToken: @@token
  27. },
  28. ErrorLanguage: "en_US",
  29. WarningLevel: "High"
  30. }.merge(hash)
  31. # body = main_hash.to_xml(root: 'ReplaceRoot', skip_instruct: true).gsub('<ReplaceRoot>','').gsub('</ReplaceRoot>','')
  32. body = Gyoku.xml(main_hash, { key_converter: :camelcase })
  33. req.body = <<-XML
  34. <?xml version="1.0" encoding="utf-8"?>
  35. <#{request_name}Request xmlns="urn:ebay:apis:eBLBaseComponents">
  36. #{body}
  37. </#{request_name}Request>
  38. XML
  39. req.body = req.body.gsub("&#39;","'")
  40. # puts req.body
  41. main_str = ''
  42. main_str += " #{hash[:ItemID]}" if hash[:ItemID].present?
  43. main_str += " #{hash[:SKU]}" if hash[:SKU].present?
  44. if hash[:Item].present?
  45. main_str += " #{hash[:Item][:SKU]}" if hash[:Item][:SKU].present?
  46. end
  47. if main_str.blank?
  48. main_str = hash.to_s[0,100]
  49. end
  50. puts " "
  51. puts "========================================"
  52. puts "| Trading #{Time.now.to_s(:db)}"
  53. puts "| [#{@@site}][#{request_name}]#{main_str}"
  54. puts "----------------------------------------"
  55. res = https.request(req)
  56. object_hash = Hash.from_xml(res.body)["#{request_name}Response"]
  57. object_hash
  58. end
  59. def self.finding(request_name,hash = {})
  60. api_url = "http://svcs.ebay.com/services/search/FindingService/v1"
  61. url = URI.parse(api_url)
  62. https = Net::HTTP.new(url.host,url.port)
  63. # https.use_ssl = true
  64. req = Net::HTTP::Post.new(url.path)
  65. req.add_field("X-EBAY-SOA-SECURITY-APPNAME", @@app_name)
  66. req.add_field("X-EBAY-SOA-OPERATION-NAME", request_name)
  67. req.add_field("X-EBAY-SOA-GLOBAL-ID", @@global_id)
  68. body = Gyoku.xml(hash)
  69. req.body = <<-XML
  70. <#{request_name}Request xmlns="http://www.ebay.com/marketplace/search/v1/services">
  71. #{body}
  72. </#{request_name}Request>
  73. XML
  74. req.body = req.body.gsub("&#39;","'")
  75. # puts req.body
  76. main_str = ''
  77. main_str += " #{hash[:itemID]}" if hash[:itemID].present?
  78. main_str += " #{hash[:SKU]}" if hash[:SKU].present?
  79. if hash[:item].present?
  80. main_str += " #{hash[:item][:SKU]}" if hash[:item][:SKU].present?
  81. end
  82. if main_str.blank?
  83. main_str = hash.to_s[0,100]
  84. end
  85. puts " "
  86. puts "========================================"
  87. puts "| Finding #{Time.now.to_s(:db)}"
  88. puts "| [#{@@global_id}][#{request_name}]#{main_str}"
  89. puts "----------------------------------------"
  90. res = https.request(req)
  91. object_hash = Hash.from_xml(res.body)["#{request_name}Response"]
  92. object_hash
  93. end
  94. end