seoshop-api 0.0.1 → 0.0.2

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.
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: {}