seoshop-api 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjY5MWEwOGUzOGQ3MWQ3NDE5MTRhMjdkOWQwYTNjN2RjMDYwZmQ4MQ==
4
+ NjZhOTBlZmI0MDBjMWQwNjRmZjE0MjlmZGQ2NmFlOWM1YThjMzVmNA==
5
5
  data.tar.gz: !binary |-
6
- Y2FiNzcyZTBjOTk3ZjA0MDVkZGZjMDVmYTdiODllMGNmZmJlMjU0Ng==
6
+ NmM4YTNhMTc5M2Y0MTQ1MTk2ZWFlNmNhODc2NGI2ZDUxOGQ5YjE0Ng==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NTViNjVlYzFhZTQ0ZGIyNWEzZmM0YzMwYTY2YjJmOWNiZmQ1NTk0MGJmOTlh
10
- NzZjZjFmMzVkNDJmOWU3Y2Q5OTlhNTEwNGM0MzRkNGVlNzBiYmNiMzE1MDgz
11
- M2QyOWZkMTJiZmFhYTRiZWM2YjBhOTlkMTg3ZDEwMjU3YTlkZmI=
9
+ OWQwZjA3NzA3YzBmNjI2MGE2NThlOWI2NWZjYmI5NzU2NDdkZTdjMWIzZGJi
10
+ ZjYzYWFjYmI2YjIxMmI3NDAwNDkwMWRkMjNhYzdjNWJkNGE3ZjJmMmQxYmVh
11
+ ZGNlNWRlNjE4YTkzNmFjODMyZjBkNDY5NWUyZWRjMzMzOWFkYTI=
12
12
  data.tar.gz: !binary |-
13
- MDFjMzZiYWQzNWExYzI0OGZmMmM5ZjM0M2EwNTNjODVlNjhkMDQzMjAxMWE1
14
- MGE5MmM3MzJlM2Y0Mjk1YzFhM2ZiYmFjNzE2NDQwOGIwNWUxODdhNmQ0N2Rk
15
- NmQzZGRlZGRlZTU4ZmZiNzFhNmRmZjFhNjg3NDhjNTZjODg5YTk=
13
+ NzVmNmY1ZGEyNTMxZmUwMzg5ZjNmOTk2MWJiMGIwN2Y5MmVlZDc1MTRhOGYw
14
+ MTc1MmIzN2I0ZTcxMTU5YjE2YWZiMzRiNzkyOTFjYjQ3YzJhMWY3MTQyZTQ5
15
+ M2U0MjYwODgwMzM2NzBhOWQ0MjY0ZDFkOGViOWIzNDdkNDM3OGQ=
data/.gitignore CHANGED
@@ -1,3 +1,8 @@
1
+ <<<<<<< HEAD
2
+ pkg
3
+ .DS_Store
4
+ .idea/
5
+ =======
1
6
  *.gem
2
7
  *.rbc
3
8
  .bundle
@@ -15,3 +20,4 @@ spec/reports
15
20
  test/tmp
16
21
  test/version_tmp
17
22
  tmp
23
+ >>>>>>> origin/master
data/Gemfile.lock ADDED
@@ -0,0 +1,65 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ seoshop-api (0.0.2)
5
+ activesupport
6
+ faraday
7
+ faraday_middleware
8
+ oauth2
9
+ oj
10
+ rash
11
+ typhoeus
12
+
13
+ GEM
14
+ remote: https://rubygems.org/
15
+ specs:
16
+ activesupport (4.0.0)
17
+ i18n (~> 0.6, >= 0.6.4)
18
+ minitest (~> 4.2)
19
+ multi_json (~> 1.3)
20
+ thread_safe (~> 0.1)
21
+ tzinfo (~> 0.3.37)
22
+ atomic (1.1.12)
23
+ ethon (0.5.12)
24
+ ffi (>= 1.3.0)
25
+ mime-types (~> 1.18)
26
+ faraday (0.8.8)
27
+ multipart-post (~> 1.2.0)
28
+ faraday_middleware (0.9.0)
29
+ faraday (>= 0.7.4, < 0.9)
30
+ ffi (1.9.0)
31
+ hashie (2.0.5)
32
+ httpauth (0.2.0)
33
+ i18n (0.6.4)
34
+ jwt (0.1.8)
35
+ multi_json (>= 1.5)
36
+ mime-types (1.23)
37
+ minitest (4.7.5)
38
+ multi_json (1.7.8)
39
+ multi_xml (0.5.5)
40
+ multipart-post (1.2.0)
41
+ oauth2 (0.9.2)
42
+ faraday (~> 0.8)
43
+ httpauth (~> 0.2)
44
+ jwt (~> 0.1.4)
45
+ multi_json (~> 1.0)
46
+ multi_xml (~> 0.5)
47
+ rack (~> 1.2)
48
+ oj (2.1.4)
49
+ rack (1.5.2)
50
+ rake (10.1.0)
51
+ rash (0.4.0)
52
+ hashie (~> 2.0.0)
53
+ thread_safe (0.1.2)
54
+ atomic
55
+ typhoeus (0.6.3)
56
+ ethon (~> 0.5.11)
57
+ tzinfo (0.3.37)
58
+
59
+ PLATFORMS
60
+ ruby
61
+
62
+ DEPENDENCIES
63
+ bundler (~> 1.3)
64
+ rake
65
+ seoshop-api!
data/README.md CHANGED
@@ -18,7 +18,24 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ Configure:
22
+ ```ruby
23
+
24
+ Seoshop.configure do |conf|
25
+ conf.app_key = 'app_key'
26
+ conf.secret = 'secret'
27
+ end
28
+ ```
29
+
30
+ Use Client:
31
+
32
+ ```ruby
33
+
34
+ shop_api = Seoshop.client('shop_token', 'shop_language')
35
+
36
+ shop_api.get_shop
37
+ ```
38
+
22
39
 
23
40
  ## Contributing
24
41
 
data/lib/seoshop-api.rb CHANGED
@@ -1,7 +1,58 @@
1
- require "seoshop-api/version"
1
+ require 'seoshop-api/version'
2
+ require 'seoshop-api/client'
2
3
 
3
4
  module Seoshop
4
- module Api
5
- # Your code goes here...
5
+ class << self
6
+ # @!attribute url
7
+ # @return [String] the base url of the Seoshop Api
8
+ attr_accessor :url
9
+
10
+ # @!attribute parallel_requests
11
+ # @return [Integer String] defines the maximum parallel request for the gem to preform
12
+ attr_accessor :parallel_requests
13
+
14
+ # @!attribute app_key
15
+ # @return [String] the app key that is registered with Storenvy
16
+ attr_accessor :app_key
17
+
18
+ # @!attribute secret
19
+ # @return [String] the secret that is registered with Storenvy
20
+ attr_accessor :secret
21
+
22
+ # Configuration interface of the gem
23
+ #
24
+ # @yield [self] to accept configuration settings
25
+ def configure
26
+ yield self
27
+ true
28
+ end
29
+
30
+ #
31
+ # Makes sure that the method missing is checked with the Seoshop::Client instance
32
+ #
33
+ # @param method_name [String] the name of the method we want to run
34
+ # @param include_private [Boolean] defines wether to check for private functions as well
35
+ def respond_to_missing?(method_name, include_private=false)
36
+ client.respond_to?(method_name, include_private)
37
+ end
38
+
39
+ #
40
+ # @return an instance of Seoshop::Client
41
+ #
42
+ def client(access_token, shop_language)
43
+ @client ||= Seoshop::Client.new(access_token, shop_language)
44
+ end
45
+
46
+ private
47
+
48
+ #
49
+ # executes any function on the Seoshop::Client instance
50
+ #
51
+ # @param args [*] any argument that we want to pass to the client function
52
+ # @param block [Block] any block that is passed to the client function
53
+ def method_missing(method_name, *args, &block)
54
+ return super unless client.respond_to?(method_name)
55
+ client.send(method_name, *args, &block)
56
+ end
6
57
  end
7
58
  end
@@ -0,0 +1,8 @@
1
+ module Seoshop
2
+ module Account
3
+ def get_rate_limit
4
+ get("#{@shop_language}/account/ratelimit.json")['accountRatelimit']
5
+ end
6
+ end
7
+ end
8
+
@@ -0,0 +1,15 @@
1
+ module Seoshop
2
+ module Customer
3
+ def get_customers(params = {})
4
+ get("#{@shop_language}/customers.json", params)['customers']
5
+ end
6
+
7
+ def get_customers_count
8
+ get("#{@shop_language}/customers/count.json")['count']
9
+ end
10
+
11
+ def get_customer(customer_id)
12
+ get("#{@shop_language}/customers/#{customer_id}.json")['customer']
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module Seoshop
2
+ module Order
3
+ def get_orders(params = {})
4
+ get("#{@shop_language}/orders.json", params)['orders']
5
+ end
6
+
7
+ def get_orders_count
8
+ get("#{@shop_language}/orders/count.json")['count']
9
+ end
10
+
11
+ def get_order(order_id)
12
+ get("#{@shop_language}/orders/#{order_id}.json")['order']
13
+ end
14
+
15
+ def get_order_products(order_id)
16
+ get("#{@shop_language}/orders/#{order_id}/products.json")['order_products']
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ module Seoshop
2
+ module Product
3
+ def get_products(params = {})
4
+ get("#{@shop_language}/products.json", params)['products']
5
+ end
6
+
7
+ def get_products_count
8
+ get("#{@shop_language}/products/count.json")['count']
9
+ end
10
+
11
+ def get_product(product_id)
12
+ get("#{@shop_language}/products/#{product_id}.json")['product']
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ module Seoshop
2
+ module Shop
3
+ def get_shop
4
+ get("#{@shop_language}/shop.json")['shop']
5
+ end
6
+
7
+ def get_shop_website
8
+ get("#{@shop_language}/shop/website.json")['shop_website']
9
+ end
10
+
11
+ def get_shop_company
12
+ get("#{@shop_language}/shop/company.json")['shop_company']
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,149 @@
1
+ require 'active_support/notifications'
2
+ require 'faraday'
3
+ require 'typhoeus'
4
+ require 'typhoeus/adapters/faraday'
5
+ require 'faraday_middleware'
6
+ require 'seoshop-api/core/response_parser'
7
+ require 'seoshop-api/version'
8
+ require 'seoshop-api/api/order'
9
+ require 'seoshop-api/api/shop'
10
+ require 'seoshop-api/api/product'
11
+ require 'seoshop-api/api/customer'
12
+ require 'seoshop-api/api/account'
13
+
14
+ module Seoshop
15
+ class Client
16
+ include Seoshop::Order
17
+ include Seoshop::Shop
18
+ include Seoshop::Product
19
+ include Seoshop::Customer
20
+ include Seoshop::Account
21
+
22
+ attr_accessor :access_token
23
+ attr_accessor :shop_language
24
+
25
+ #
26
+ # Creates a new instance of Seoshop::Client
27
+ #
28
+ # @param url [String] The url to Seoshop api (https://api.webshopapp.com)
29
+ # @param parallel_requests [Integer String] The maximum parallel request to do (5)
30
+ def initialize(access_token, shop_language, url = 'https://api.webshopapp.com', parallel_requests = 5)
31
+ @access_token = access_token
32
+ @shop_language = shop_language
33
+ @url = url
34
+ @parallel_requests = parallel_requests
35
+ end
36
+
37
+ #
38
+ # Does a GET request to the url with the params
39
+ #
40
+ # @param url [String] the relative path in the Seoshop API
41
+ # @param params [Hash] the url params that should be passed in the request
42
+ def get(url, params = {})
43
+ params = params.inject({}){|memo,(k,v)| memo[k.to_s] = v; memo}
44
+ preform(url, :get, params: params) do
45
+ return connection.get(url, params).body
46
+ end
47
+ end
48
+
49
+ #
50
+ # Does a POST request to the url with the params
51
+ #
52
+ # @param url [String] the relative path in the Seoshop API
53
+ # @param params [Hash] the body of the request
54
+ def post(url, params)
55
+ params = convert_hash_keys(params)
56
+ preform(url, :post, params: params) do
57
+ return connection.post(url, params)
58
+ end
59
+ end
60
+
61
+ #
62
+ # Does a PUT request to the url with the params
63
+ #
64
+ # @param url [String] the relative path in the Seoshop API
65
+ # @param params [Hash] the body of the request
66
+ def put(url, params)
67
+ params = convert_hash_keys(params)
68
+ preform(url, :put, params: params) do
69
+ return connection.put(url, params)
70
+ end
71
+ end
72
+
73
+ #
74
+ # Does a DELETE request to the url with the params
75
+ #
76
+ # @param url [String] the relative path in the Seoshop API
77
+ def delete(url, params)
78
+ preform(url, :delete) do
79
+ return connection.delete(url)
80
+ end
81
+ end
82
+
83
+ #
84
+ # Does a parallel request to the api for all of the requests in the block
85
+ #
86
+ # @example block
87
+ # Seoshop.in_parallel do
88
+ # Seoshop.create_review(review_params)
89
+ # Seoshop.update_account(account_params)
90
+ # end
91
+ def in_parallel
92
+ connection.in_parallel do
93
+ yield
94
+ end
95
+ end
96
+
97
+ private
98
+
99
+ #
100
+ # Preforms an HTTP request and notifies the ActiveSupport::Notifications
101
+ #
102
+ # @private
103
+ # @param url [String] the url to which preform the request
104
+ # @param type [String]
105
+ def preform(url, type, params = {}, &block)
106
+ ActiveSupport::Notifications.instrument 'Seoshop', request: type, url: url, params: params do
107
+ if connection.in_parallel?
108
+ block.call
109
+ else
110
+ block.call.body
111
+ end
112
+ end
113
+ end
114
+
115
+ #
116
+ # @return an instance of Faraday initialized with all that this gem needs
117
+ def connection
118
+ @connection ||= Faraday.new(url: @url, parallel_manager: Typhoeus::Hydra.new(max_concurrency: @parallel_requests), headers: {:seoshop_api_connector => 'Ruby'+ Seoshop::VERSION}) do |conn|
119
+
120
+ conn.basic_auth(Seoshop.app_key, Digest::MD5.hexdigest(access_token + Seoshop.secret))
121
+
122
+ conn.use Seoshop::ResponseParser
123
+
124
+ # Set the response to be rashified
125
+ conn.response :rashify
126
+
127
+ # Setting request and response to use JSON/XML
128
+ conn.request :oj
129
+ conn.response :oj
130
+
131
+ # Set to use instrumentals to get time logs
132
+ conn.use :instrumentation
133
+
134
+ conn.adapter :typhoeus
135
+ end
136
+ end
137
+ private
138
+ def convert_hash_keys(value)
139
+ case value
140
+ when Array
141
+ value.map { |v| convert_hash_keys(v) }
142
+ when Hash
143
+ Hash[value.map { |k, v| [k.to_s, convert_hash_keys(v)] }]
144
+ else
145
+ value
146
+ end
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,92 @@
1
+ require 'typhoeus/adapters/faraday'
2
+ require 'faraday_middleware/response_middleware'
3
+
4
+ module Seoshop
5
+ class ResponseParser < Faraday::Response::Middleware
6
+ def call(env)
7
+ # "env" contains the request
8
+ @app.call(env).on_complete do
9
+ body = false
10
+ if env[:status] == 200
11
+ body = env[:response].body.response || env[:response].body
12
+ elsif env[:status] == 401
13
+ raise Seoshop::ResponseParser::HTTPUnauthorized.new 'invalid Seoshop credentials'
14
+ elsif env[:response] && env[:response].body && env[:response].body.status
15
+ body = env[:response].body.status
16
+ end
17
+ env[:body] = body
18
+ end
19
+ end
20
+ end
21
+
22
+ #
23
+ # Response middleware that decodes the response body from JSON.
24
+ #
25
+ class ParseOj < FaradayMiddleware::ResponseMiddleware
26
+ dependency do
27
+ require 'oj' unless defined?(::Oj)
28
+ end
29
+
30
+ define_parser do |body|
31
+ begin
32
+ ::Oj.load(body, mode: :compat) unless body.strip.empty?
33
+ rescue Oj::ParseError => e
34
+ end
35
+ end
36
+ end
37
+
38
+ # Request middleware that encodes the body as JSON.
39
+ #
40
+ # Processes only requests with matching Content-type or those without a type.
41
+ # If a request doesn't have a type but has a body, it sets the Content-type
42
+ # to JSON MIME-type.
43
+ #
44
+ # Doesn't try to encode bodies that already are in string form.
45
+ class EncodeOj < Faraday::Middleware
46
+ CONTENT_TYPE = 'Content-Type'.freeze
47
+ MIME_TYPE = 'application/json'.freeze
48
+
49
+ dependency do
50
+ require 'oj' unless defined?(::Oj)
51
+ end
52
+
53
+ def call(env)
54
+ match_content_type(env) do |data|
55
+ env[:body] = encode data
56
+ end
57
+ @app.call env
58
+ end
59
+
60
+ def encode(data)
61
+ ::Oj.dump data
62
+ end
63
+
64
+ def match_content_type(env)
65
+ if process_request?(env)
66
+ env[:request_headers][CONTENT_TYPE] ||= MIME_TYPE
67
+ yield env[:body] unless env[:body].respond_to?(:to_str)
68
+ end
69
+ end
70
+
71
+ def process_request?(env)
72
+ type = request_type(env)
73
+ has_body?(env) and (type.empty? or type == MIME_TYPE)
74
+ end
75
+
76
+ def has_body?(env)
77
+ body = env[:body] and !(body.respond_to?(:to_str) and body.empty?)
78
+ end
79
+
80
+ def request_type(env)
81
+ type = env[:request_headers][CONTENT_TYPE].to_s
82
+ type = type.split(';', 2).first if type.index(';')
83
+ type
84
+ end
85
+
86
+ class Seoshop::ResponseParser::HTTPUnauthorized < Exception
87
+ end
88
+ end
89
+ end
90
+
91
+ Faraday.register_middleware :response, oj: Seoshop::ParseOj
92
+ Faraday.register_middleware :request, oj: Seoshop::EncodeOj
@@ -1,5 +1,3 @@
1
1
  module Seoshop
2
- module Api
3
- VERSION = "0.0.1"
4
- end
2
+ VERSION = '0.0.2'
5
3
  end
data/seoshop-api.gemspec CHANGED
@@ -3,18 +3,29 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'seoshop-api/version'
5
5
 
6
- Gem::Specification.new do |gem|
7
- gem.name = "seoshop-api"
8
- gem.version = Seoshop::Api::VERSION
9
- gem.authors = ["Nimrod Popper"]
10
- gem.email = ["nimrod@yotpo.com"]
11
- gem.description = %q{Ruby wrapper for SEOshop API - written by Yotpo}
12
- gem.summary = %q{Ruby wrapper for SEOshop API - written by Yotpo}
13
- gem.homepage = "http://developers.webshopapp.com/rest-api/"
14
- gem.license = "MIT"
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "seoshop-api"
8
+ spec.version = Seoshop::VERSION
9
+ spec.authors = ["Nimrod Popper"]
10
+ spec.email = ["nimrod@yotpo.com"]
11
+ spec.description = %q{Ruby wrapper for SEOshop API - written by Yotpo}
12
+ spec.summary = %q{Ruby wrapper for SEOshop API - written by Yotpo}
13
+ spec.homepage = "https://github.com/YotpoLtd/seoshop-api"
14
+ spec.license = "MIT"
15
15
 
16
- gem.files = `git ls-files`.split($/)
17
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
- gem.require_paths = ["lib"]
20
- end
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+
24
+ spec.add_dependency 'oauth2'
25
+ spec.add_dependency 'faraday'
26
+ spec.add_dependency 'typhoeus'
27
+ spec.add_dependency 'faraday_middleware'
28
+ spec.add_dependency 'rash'
29
+ spec.add_dependency 'oj'
30
+ spec.add_dependency 'activesupport'
31
+ end
metadata CHANGED
@@ -1,15 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seoshop-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nimrod Popper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-08 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2013-08-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: oauth2
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: typhoeus
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: faraday_middleware
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rash
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: oj
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: activesupport
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
13
139
  description: Ruby wrapper for SEOshop API - written by Yotpo
14
140
  email:
15
141
  - nimrod@yotpo.com
@@ -19,13 +145,21 @@ extra_rdoc_files: []
19
145
  files:
20
146
  - .gitignore
21
147
  - Gemfile
148
+ - Gemfile.lock
22
149
  - LICENSE.txt
23
150
  - README.md
24
151
  - Rakefile
25
152
  - lib/seoshop-api.rb
153
+ - lib/seoshop-api/api/account.rb
154
+ - lib/seoshop-api/api/customer.rb
155
+ - lib/seoshop-api/api/order.rb
156
+ - lib/seoshop-api/api/product.rb
157
+ - lib/seoshop-api/api/shop.rb
158
+ - lib/seoshop-api/client.rb
159
+ - lib/seoshop-api/core/response_parser.rb
26
160
  - lib/seoshop-api/version.rb
27
161
  - seoshop-api.gemspec
28
- homepage: http://developers.webshopapp.com/rest-api/
162
+ homepage: https://github.com/YotpoLtd/seoshop-api
29
163
  licenses:
30
164
  - MIT
31
165
  metadata: {}