Browse Source

initial commit

ANX 7 years ago
commit
79257dc514
14 changed files with 240 additions and 0 deletions
  1. 9 0
      .gitignore
  2. 2 0
      .rspec
  3. 5 0
      .travis.yml
  4. 4 0
      Gemfile
  5. 21 0
      LICENSE.txt
  6. 41 0
      README.md
  7. 6 0
      Rakefile
  8. 14 0
      bin/console
  9. 8 0
      bin/setup
  10. 35 0
      ebaytr.gemspec
  11. 79 0
      lib/ebaytr.rb
  12. 3 0
      lib/ebaytr/version.rb
  13. 11 0
      spec/ebaytr_spec.rb
  14. 2 0
      spec/spec_helper.rb

+ 9 - 0
.gitignore

@@ -0,0 +1,9 @@
+/.bundle/
+/.yardoc
+/Gemfile.lock
+/_yardoc/
+/coverage/
+/doc/
+/pkg/
+/spec/reports/
+/tmp/

+ 2 - 0
.rspec

@@ -0,0 +1,2 @@
+--format documentation
+--color

+ 5 - 0
.travis.yml

@@ -0,0 +1,5 @@
+sudo: false
+language: ruby
+rvm:
+  - 2.3.1
+before_install: gem install bundler -v 1.12.5

+ 4 - 0
Gemfile

@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+
+# Specify your gem's dependencies in ebaytr.gemspec
+gemspec

+ 21 - 0
LICENSE.txt

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 ANXGANG
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 41 - 0
README.md

@@ -0,0 +1,41 @@
+# Ebaytr
+
+Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/ebaytr`. To experiment with that code, run `bin/console` for an interactive prompt.
+
+TODO: Delete this and the text above, and describe your gem
+
+## Installation
+
+Add this line to your application's Gemfile:
+
+```ruby
+gem 'ebaytr'
+```
+
+And then execute:
+
+    $ bundle
+
+Or install it yourself as:
+
+    $ gem install ebaytr
+
+## Usage
+
+TODO: Write usage instructions here
+
+## Development
+
+After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
+
+To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
+
+## Contributing
+
+Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ebaytr.
+
+
+## License
+
+The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
+

+ 6 - 0
Rakefile

@@ -0,0 +1,6 @@
+require "bundler/gem_tasks"
+require "rspec/core/rake_task"
+
+RSpec::Core::RakeTask.new(:spec)
+
+task :default => :spec

+ 14 - 0
bin/console

@@ -0,0 +1,14 @@
+#!/usr/bin/env ruby
+
+require "bundler/setup"
+require "ebaytr"
+
+# You can add fixtures and/or initialization code here to make experimenting
+# with your gem easier. You can also use a different console, if you like.
+
+# (If you use this, don't forget to add pry to your Gemfile!)
+# require "pry"
+# Pry.start
+
+require "irb"
+IRB.start

+ 8 - 0
bin/setup

@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+set -euo pipefail
+IFS=$'\n\t'
+set -vx
+
+bundle install
+
+# Do any other automated setup that you need to do here

+ 35 - 0
ebaytr.gemspec

@@ -0,0 +1,35 @@
+# coding: utf-8
+lib = File.expand_path('../lib', __FILE__)
+$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
+require 'ebaytr/version'
+
+Gem::Specification.new do |spec|
+  spec.name          = "ebaytr"
+  spec.version       = Ebaytr::VERSION
+  spec.authors       = ["Anxgang"]
+  spec.email         = ["anxgang@gmail.com"]
+
+  spec.summary       = %q{ebay Trading API}
+  spec.description   = %q{ebay Trading API}
+  spec.homepage      = "TODO: Put your gem's website or public repo URL here."
+  spec.license       = "MIT"
+
+  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
+  # to allow pushing to a single host or delete this section to allow pushing to any host.
+  if spec.respond_to?(:metadata)
+    spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
+  else
+    raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
+  end
+
+  spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
+  spec.bindir        = "exe"
+  spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
+  spec.require_paths = ["lib"]
+
+  spec.add_dependency 'gyoku', '~> 1.0'
+
+  spec.add_development_dependency "bundler", "~> 1.12"
+  spec.add_development_dependency "rake", "~> 10.0"
+  spec.add_development_dependency "rspec", "~> 3.0"
+end

+ 79 - 0
lib/ebaytr.rb

@@ -0,0 +1,79 @@
+require "ebaytr/version"
+# require 'yaml'
+require "net/http"
+require "uri"
+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
+
+  @@token = ''#yml[Rails.env]["token"]
+  @@app_name = ''#yml[Rails.env]["appid"]
+  @@url = "https://api.sandbox.ebay.com/ws/api.dll"
+  @@api = "967"
+  @@site = "0"
+
+  def self.trading(request_name,hash = {})
+    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)
+    req.add_field("X-EBAY-API-COMPATIBILITY-LEVEL", @@api)
+    req.add_field("X-EBAY-API-CALL-NAME", request_name)
+
+    main_hash = {
+      RequesterCredentials: {
+        eBayAuthToken: @@token
+      },
+      ErrorLanguage: "en_US",
+      WarningLevel: "High"
+    }.merge(hash)
+
+    # body = main_hash.to_xml(root: 'ReplaceRoot', skip_instruct: true).gsub('<ReplaceRoot>','').gsub('</ReplaceRoot>','')
+    body = Gyoku.xml(main_hash, { key_converter: :camelcase })
+
+    req.body = <<-XML
+        <?xml version="1.0" encoding="utf-8"?>
+        <#{request_name}Request xmlns="urn:ebay:apis:eBLBaseComponents">
+        #{body}
+        </#{request_name}Request>
+      XML
+
+    req.body = req.body.gsub("&#39;","'")
+
+    puts req.body
+
+    res = https.request(req)
+    object_hash = Hash.from_xml(res.body)["#{request_name}Response"]
+    object_hash
+  end
+
+  def self.finding(request_name,hash = {})
+    api_url = "http://svcs.ebay.com/services/search/FindingService/v1"
+
+    url = URI.parse(api_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-SOA-SECURITY-APPNAME", @@app_name)
+    req.add_field("X-EBAY-SOA-OPERATION-NAME", request_name)
+
+    body = Gyoku.xml(hash)
+
+    req.body = <<-XML
+        <#{request_name}Request xmlns="http://www.ebay.com/marketplace/search/v1/services">
+        #{body}
+        </#{request_name}Request>
+      XML
+
+    req.body = req.body.gsub("&#39;","'")
+
+    puts req.body
+
+    res = https.request(req)
+    object_hash = Hash.from_xml(res.body)["#{request_name}Response"]
+    object_hash
+  end
+end

+ 3 - 0
lib/ebaytr/version.rb

@@ -0,0 +1,3 @@
+module Ebaytr
+  VERSION = "0.1.0"
+end

+ 11 - 0
spec/ebaytr_spec.rb

@@ -0,0 +1,11 @@
+require 'spec_helper'
+
+describe Ebaytr do
+  it 'has a version number' do
+    expect(Ebaytr::VERSION).not_to be nil
+  end
+
+  it 'does something useful' do
+    expect(false).to eq(true)
+  end
+end

+ 2 - 0
spec/spec_helper.rb

@@ -0,0 +1,2 @@
+$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
+require 'ebaytr'