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