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 +8 -8
- data/.gitignore +6 -0
- data/Gemfile.lock +65 -0
- data/README.md +18 -1
- data/lib/seoshop-api.rb +54 -3
- data/lib/seoshop-api/api/account.rb +8 -0
- data/lib/seoshop-api/api/customer.rb +15 -0
- data/lib/seoshop-api/api/order.rb +19 -0
- data/lib/seoshop-api/api/product.rb +15 -0
- data/lib/seoshop-api/api/shop.rb +16 -0
- data/lib/seoshop-api/client.rb +149 -0
- data/lib/seoshop-api/core/response_parser.rb +92 -0
- data/lib/seoshop-api/version.rb +1 -3
- data/seoshop-api.gemspec +25 -14
- metadata +138 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjZhOTBlZmI0MDBjMWQwNjRmZjE0MjlmZGQ2NmFlOWM1YThjMzVmNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmM4YTNhMTc5M2Y0MTQ1MTk2ZWFlNmNhODc2NGI2ZDUxOGQ5YjE0Ng==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWQwZjA3NzA3YzBmNjI2MGE2NThlOWI2NWZjYmI5NzU2NDdkZTdjMWIzZGJi
|
10
|
+
ZjYzYWFjYmI2YjIxMmI3NDAwNDkwMWRkMjNhYzdjNWJkNGE3ZjJmMmQxYmVh
|
11
|
+
ZGNlNWRlNjE4YTkzNmFjODMyZjBkNDY5NWUyZWRjMzMzOWFkYTI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzVmNmY1ZGEyNTMxZmUwMzg5ZjNmOTk2MWJiMGIwN2Y5MmVlZDc1MTRhOGYw
|
14
|
+
MTc1MmIzN2I0ZTcxMTU5YjE2YWZiMzRiNzkyOTFjYjQ3YzJhMWY3MTQyZTQ5
|
15
|
+
M2U0MjYwODgwMzM2NzBhOWQ0MjY0ZDFkOGViOWIzNDdkNDM3OGQ=
|
data/.gitignore
CHANGED
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
|
-
|
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
|
1
|
+
require 'seoshop-api/version'
|
2
|
+
require 'seoshop-api/client'
|
2
3
|
|
3
4
|
module Seoshop
|
4
|
-
|
5
|
-
#
|
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,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
|
data/lib/seoshop-api/version.rb
CHANGED
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 |
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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.
|
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-
|
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:
|
162
|
+
homepage: https://github.com/YotpoLtd/seoshop-api
|
29
163
|
licenses:
|
30
164
|
- MIT
|
31
165
|
metadata: {}
|