americommerce-api 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ americommerce-api
2
+ =================
@@ -0,0 +1,16 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "americommerce/version"
3
+ Gem::Specification.new do |s|
4
+ s.name = "americommerce-api"
5
+ s.version = Americommerce::VERSION
6
+ s.date = Time.now.strftime("%Y-%m-%d")
7
+ s.summary = "Enables Ruby applications to communicate with the Americommerce API"
8
+ s.email = "omri@yotpo.com"
9
+ s.homepage = "https://github.com/YotpoLtd/americommerce-api"
10
+ s.description = "Enables Ruby applications to communicate with the Ebay Trading API."
11
+ s.has_rdoc = false
12
+ s.require_paths = ['lib']
13
+ s.authors = ["Yotpo/avichay@yotpo"]
14
+ s.files = ["README.md", "americommerce-api.gemspec"] + Dir['**/*.rb'] + Dir['**/*.crt']
15
+ s.add_dependency 'savon'
16
+ end
@@ -0,0 +1,10 @@
1
+ require 'savon'
2
+
3
+ require 'americommerce/api'
4
+ require 'americommerce/response'
5
+ require 'americommerce/exceptions'
6
+ require 'americommerce/configuration'
7
+
8
+ module AmericommerceApi
9
+
10
+ end
@@ -0,0 +1,75 @@
1
+ module AmericommerceApi
2
+ class Api
3
+
4
+ AUTHENTICATE_WSDL = File.read(File.expand_path('../wsdl/americommercedb.asmx.wsdl', __FILE__))
5
+ WSDL_POSTFIX = '/store/ws/AmeriCommerceDb.asmx?wsdl'
6
+
7
+ NAMESPACES = {
8
+ 'xmlns' => 'http://www.americommerce.com'
9
+ }
10
+
11
+
12
+ def initialize(options)
13
+
14
+ @ac_header = {
15
+ 'AmeriCommerceHeaderInfo' => {
16
+ 'UserName' => options[:username],
17
+ 'Password' => options[:password],
18
+ 'SecurityToken' => options[:token]
19
+ }
20
+ }
21
+
22
+ @store_domain = options[:store_domain] + WSDL_POSTFIX
23
+
24
+ @client = AmericommerceApi::Api.init_client(@ac_header, @store_domain)
25
+ end
26
+
27
+ def get_orders(options = {})
28
+ start_date = options[:start_date] || DateTime.new
29
+ end_date = options[:end_date] || DateTime.now
30
+ request(:order_get_by_edit_date_range_pre_filled, {'pdtStartDateTime' => start_date.to_datetime, 'pdtEndDateTime' => end_date.to_datetime})
31
+ end
32
+
33
+ def get_product_by_id(product_id)
34
+ request(:product_get_by_key, {'piitemID' => product_id})
35
+ end
36
+
37
+ def get_product_url(product_id)
38
+ request(:product_get_current_url, {'piProductID' => product_id})
39
+ end
40
+
41
+ def get_all_order_statuses
42
+ request(:order_status_get_all)
43
+ end
44
+
45
+ def ping
46
+ begin
47
+ wsdl = AUTHENTICATE_WSDL % {store_domain: @store_domain}
48
+ @client = AmericommerceApi::Api.init_client(@ac_header,wsdl)
49
+ response = request(:authenticate)
50
+ raise AmericommerceApi::Exceptions::InvalidCredentials unless response == true
51
+ rescue
52
+ raise AmericommerceApi::Exceptions::InvalidCredentials
53
+ ensure
54
+ @client = AmericommerceApi::Api.init_client(@ac_header, @store_domain)
55
+ end
56
+ end
57
+
58
+ private
59
+
60
+ def request(call_action, request_params={})
61
+ response = @client.call(call_action, message: request_params)
62
+ return AmericommerceApi::Response.format(response, call_action)
63
+ end
64
+
65
+ def self.init_client(ac_header, wsdl)
66
+ return Savon.client({
67
+ :ssl_verify_mode => :none,
68
+ :wsdl => wsdl,
69
+ :soap_header => ac_header,
70
+ :namespaces => NAMESPACES
71
+ })
72
+ end
73
+
74
+ end
75
+ end
@@ -0,0 +1,15 @@
1
+ module AmericommerceApi
2
+ # Configures Plugin.
3
+ def self.configure(configuration = AmericommerceApi::Configuration.new)
4
+ yield configuration if block_given?
5
+ @@configuration = configuration
6
+ end
7
+
8
+ def self.configuration
9
+ @@configuration ||= AmericommerceApi::Configuration.new
10
+ end
11
+
12
+ class Configuration
13
+ end
14
+
15
+ end
@@ -0,0 +1,5 @@
1
+ module AmericommerceApi
2
+ module Exceptions
3
+ class InvalidCredentials < StandardError; end
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ module AmericommerceApi
2
+ class Response
3
+ def self.format(response, call_action)
4
+ call_action = call_action.to_s
5
+ response = response.body ? response.body["#{call_action}_response".to_sym] : nil
6
+ return response ? response["#{call_action}_result".to_sym] : nil
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Americommerce
2
+ VERSION = '0.0.1'
3
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: americommerce-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Yotpo/avichay@yotpo
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-11-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: savon
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Enables Ruby applications to communicate with the Ebay Trading API.
31
+ email: omri@yotpo.com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - README.md
37
+ - americommerce-api.gemspec
38
+ - lib/americommerce/api.rb
39
+ - lib/americommerce/configuration.rb
40
+ - lib/americommerce/exceptions.rb
41
+ - lib/americommerce/response.rb
42
+ - lib/americommerce/version.rb
43
+ - lib/americommerce-api.rb
44
+ homepage: https://github.com/YotpoLtd/americommerce-api
45
+ licenses: []
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 1.8.24
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Enables Ruby applications to communicate with the Americommerce API
68
+ test_files: []