storenvy-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/.gitignore +4 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +65 -0
- data/LICENSE.txt +22 -0
- data/README.md +87 -0
- data/Rakefile +1 -0
- data/lib/storenvy.rb +58 -0
- data/lib/storenvy/api/order.rb +25 -0
- data/lib/storenvy/api/product.rb +24 -0
- data/lib/storenvy/api/store.rb +13 -0
- data/lib/storenvy/api/template.rb +12 -0
- data/lib/storenvy/api/user.rb +8 -0
- data/lib/storenvy/client.rb +150 -0
- data/lib/storenvy/core/response_parser.rb +84 -0
- data/lib/storenvy/version.rb +3 -0
- data/storenvy-api.gemspec +31 -0
- metadata +214 -0
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
storenvy-api-ruby
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p429
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
storenvy-api (0.0.1)
|
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.9)
|
23
|
+
ethon (0.5.12)
|
24
|
+
ffi (>= 1.3.0)
|
25
|
+
mime-types (~> 1.18)
|
26
|
+
faraday (0.8.7)
|
27
|
+
multipart-post (~> 1.1)
|
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.7)
|
39
|
+
multi_xml (0.5.4)
|
40
|
+
multipart-post (1.2.0)
|
41
|
+
oauth2 (0.9.1)
|
42
|
+
faraday (~> 0.8)
|
43
|
+
httpauth (~> 0.1)
|
44
|
+
jwt (~> 0.1.4)
|
45
|
+
multi_json (~> 1.0)
|
46
|
+
multi_xml (~> 0.5)
|
47
|
+
rack (~> 1.2)
|
48
|
+
oj (2.1.2)
|
49
|
+
rack (1.5.2)
|
50
|
+
rake (10.0.4)
|
51
|
+
rash (0.4.0)
|
52
|
+
hashie (~> 2.0.0)
|
53
|
+
thread_safe (0.1.0)
|
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
|
+
storenvy-api!
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Omri Cohen
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
# Storenvy::Api::Ruby
|
2
|
+
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
|
6
|
+
Add this line to your application's Gemfile:
|
7
|
+
|
8
|
+
gem 'storenvy-api-ruby'
|
9
|
+
|
10
|
+
And then execute:
|
11
|
+
|
12
|
+
$ bundle
|
13
|
+
|
14
|
+
Or install it yourself as:
|
15
|
+
|
16
|
+
$ gem install storenvy-api-ruby
|
17
|
+
|
18
|
+
## Usage
|
19
|
+
|
20
|
+
This is the flow you need to follow in order to communicate with Storenvy API.
|
21
|
+
|
22
|
+
The first thing you wanna do, is to have Storenvy store owners authorize your application.
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
|
26
|
+
require 'oauth2'
|
27
|
+
|
28
|
+
|
29
|
+
oauth_client = OAuth2::Client.new "app_key",
|
30
|
+
"secret",
|
31
|
+
{:site => "https://www.storenvy.com/oauth"}
|
32
|
+
|
33
|
+
authorize_uri = oauth_client.authorize_url :redirect_uri => "redirect_url", #must be consistent with the one defined in Storenvy API
|
34
|
+
:response_type => "code",
|
35
|
+
:scope => "user store_read store_write",
|
36
|
+
:client_id => oauth_client.client_credentials.client_params['client_id']
|
37
|
+
|
38
|
+
```
|
39
|
+
|
40
|
+
|
41
|
+
The users will be then redirected to the redirect_uri with the oauth2 code, you will need to convert the code to access_token for the future requests we are about to make.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
|
45
|
+
oauth_client = OAuth2::Client.new "app_key",
|
46
|
+
"secret",
|
47
|
+
{:site => "https://api.storenvy.com/oauth"}
|
48
|
+
|
49
|
+
access_token = oauth_client.auth_code.get_token params[:code], {:redirect_uri => redirect_uri}
|
50
|
+
shop_token = access_token.token
|
51
|
+
|
52
|
+
```
|
53
|
+
|
54
|
+
That's it, from now on, we will assume you have an access_token for the store your application is going to be integrated in.
|
55
|
+
|
56
|
+
What we will do now, is to make some calls to the API. As mentioned before, each such call should get access_token as one of the parameters. Lets get all the shop products.
|
57
|
+
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
|
61
|
+
products = []
|
62
|
+
pagination_argument = nil
|
63
|
+
begin
|
64
|
+
hsh = {:access_token => self.shop_token}
|
65
|
+
hsh[pagination_argument[0].to_sym] = pagination_argument[1] if pagination_argument
|
66
|
+
|
67
|
+
tmp_products = Storenvy.get_products hsh
|
68
|
+
products += tmp_products.body.data.products
|
69
|
+
|
70
|
+
pagination_argument = tmp_products.body.pagination.next_url.match(/newer_than_id=[0-9]+/).to_s.split("=") if tmp_products.body.pagination.next_url
|
71
|
+
end while tmp_products.body.data.products.count > 0
|
72
|
+
|
73
|
+
```
|
74
|
+
|
75
|
+
That's it for now. We would love if you contribute more examples, as well as more functionality to this humble wrapper of us.
|
76
|
+
|
77
|
+
We would also love it if some can help us write some tests.
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
## Contributing
|
82
|
+
|
83
|
+
1. Fork it
|
84
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
85
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
86
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
87
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/storenvy.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'storenvy/version'
|
2
|
+
require 'storenvy/client'
|
3
|
+
|
4
|
+
module Storenvy
|
5
|
+
class << self
|
6
|
+
# @!attribute url
|
7
|
+
# @return [String] the base url of the Storenvy 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 Storenvy::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 Storenvy::Client
|
41
|
+
#
|
42
|
+
def client
|
43
|
+
@client ||= Storenvy::Client.new()
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
#
|
49
|
+
# executes any function on the Storenvy::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
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Storenvy
|
2
|
+
module Order
|
3
|
+
|
4
|
+
#def update_account(params)
|
5
|
+
# request = {
|
6
|
+
# account: {
|
7
|
+
# minisite_website_name: params[:minisite_website_name],
|
8
|
+
# minisite_website: params[:minisite_website],
|
9
|
+
# minisite_subdomain: params[:minisite_subdomain],
|
10
|
+
# minisite_cname: params[:minisite_cname],
|
11
|
+
# minisite_subdomain_active: params[:minisite_subdomain_active]
|
12
|
+
# },
|
13
|
+
# utoken: params[:utoken]
|
14
|
+
# }
|
15
|
+
# app_key = params[:app_key]
|
16
|
+
# put("/apps/#{app_key}", request)
|
17
|
+
#end
|
18
|
+
|
19
|
+
def get_orders(params)
|
20
|
+
get("/v1/orders", params)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Storenvy
|
2
|
+
module Product
|
3
|
+
def get_products(params)
|
4
|
+
get("/v1/products", params)
|
5
|
+
end
|
6
|
+
|
7
|
+
def create_product(params)
|
8
|
+
post("/v1/products", params)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_product(product_id, params)
|
12
|
+
get("/v1/products/#{product_id}", params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def update_product(product_id, params)
|
16
|
+
put("/v1/products/#{product_id}", params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def delete_product(product_id, params)
|
20
|
+
delete("/v1/products/#{product_id}", params)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'active_support/notifications'
|
2
|
+
require 'faraday'
|
3
|
+
require 'typhoeus'
|
4
|
+
require 'typhoeus/adapters/faraday'
|
5
|
+
require 'faraday_middleware'
|
6
|
+
require 'storenvy/core/response_parser'
|
7
|
+
require 'storenvy/version'
|
8
|
+
require 'storenvy/api/order'
|
9
|
+
require 'storenvy/api/store'
|
10
|
+
require 'storenvy/api/template'
|
11
|
+
require 'storenvy/api/user'
|
12
|
+
require 'storenvy/api/product'
|
13
|
+
|
14
|
+
|
15
|
+
module Storenvy
|
16
|
+
class Client
|
17
|
+
include Storenvy::Order
|
18
|
+
include Storenvy::Store
|
19
|
+
include Storenvy::Template
|
20
|
+
include Storenvy::User
|
21
|
+
include Storenvy::Product
|
22
|
+
|
23
|
+
attr_accessor :access_token
|
24
|
+
|
25
|
+
#
|
26
|
+
# Creates a new instance of Storenvy::Client
|
27
|
+
#
|
28
|
+
# @param url [String] The url to Storenvy api (https://api.storenvy.com)
|
29
|
+
# @param parallel_requests [Integer String] The maximum parallel request to do (5)
|
30
|
+
def initialize(url = 'https://api.storenvy.com', parallel_requests = 5)
|
31
|
+
@url = url
|
32
|
+
@parallel_requests = parallel_requests
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Does a GET request to the url with the params
|
37
|
+
#
|
38
|
+
# @param url [String] the relative path in the Storenvy API
|
39
|
+
# @param params [Hash] the url params that should be passed in the request
|
40
|
+
def get(url, params = {})
|
41
|
+
params = params.inject({}){|memo,(k,v)| memo[k.to_s] = v; memo}
|
42
|
+
params[:access_token] = @access_token if @access_token
|
43
|
+
preform(url, :get, params: params) do
|
44
|
+
return connection.get(url, params)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
# Does a POST request to the url with the params
|
50
|
+
#
|
51
|
+
# @param url [String] the relative path in the Storenvy API
|
52
|
+
# @param params [Hash] the body of the request
|
53
|
+
def post(url, params)
|
54
|
+
params = convert_hash_keys(params)
|
55
|
+
params[:access_token] = @access_token if @access_token
|
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 Storenvy API
|
65
|
+
# @param params [Hash] the body of the request
|
66
|
+
def put(url, params)
|
67
|
+
params = convert_hash_keys(params)
|
68
|
+
params[:access_token] = @access_token if @access_token
|
69
|
+
preform(url, :put, params: params) do
|
70
|
+
return connection.put(url, params)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
#
|
75
|
+
# Does a DELETE request to the url with the params
|
76
|
+
#
|
77
|
+
# @param url [String] the relative path in the Storenvy API
|
78
|
+
def delete(url, params)
|
79
|
+
params = convert_hash_keys(params)
|
80
|
+
params[:access_token] = @access_token if @access_token
|
81
|
+
preform(url, :delete) do
|
82
|
+
return connection.delete(url)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
#
|
87
|
+
# Does a parallel request to the api for all of the requests in the block
|
88
|
+
#
|
89
|
+
# @example block
|
90
|
+
# Storenvy.in_parallel do
|
91
|
+
# Storenvy.create_review(review_params)
|
92
|
+
# Storenvy.update_account(account_params)
|
93
|
+
# end
|
94
|
+
def in_parallel
|
95
|
+
connection.in_parallel do
|
96
|
+
yield
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
#
|
103
|
+
# Preforms an HTTP request and notifies the ActiveSupport::Notifications
|
104
|
+
#
|
105
|
+
# @private
|
106
|
+
# @param url [String] the url to which preform the request
|
107
|
+
# @param type [String]
|
108
|
+
def preform(url, type, params = {}, &block)
|
109
|
+
ActiveSupport::Notifications.instrument 'Storenvy', request: type, url: url, params: params do
|
110
|
+
if connection.in_parallel?
|
111
|
+
block.call
|
112
|
+
else
|
113
|
+
block.call.body
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
#
|
119
|
+
# @return an instance of Faraday initialized with all that this gem needs
|
120
|
+
def connection
|
121
|
+
@connection ||= Faraday.new(url: @url, parallel_manager: Typhoeus::Hydra.new(max_concurrency: @parallel_requests), headers: {:storenvy_api_connector => 'Ruby'+ Storenvy::VERSION}) do |conn|
|
122
|
+
|
123
|
+
conn.use Storenvy::ResponseParser
|
124
|
+
|
125
|
+
# Set the response to be rashified
|
126
|
+
conn.response :rashify
|
127
|
+
|
128
|
+
# Setting request and response to use JSON/XML
|
129
|
+
conn.request :oj
|
130
|
+
conn.response :oj
|
131
|
+
|
132
|
+
# Set to use instrumentals to get time logs
|
133
|
+
conn.use :instrumentation
|
134
|
+
|
135
|
+
conn.adapter :typhoeus
|
136
|
+
end
|
137
|
+
end
|
138
|
+
private
|
139
|
+
def convert_hash_keys(value)
|
140
|
+
case value
|
141
|
+
when Array
|
142
|
+
value.map { |v| convert_hash_keys(v) }
|
143
|
+
when Hash
|
144
|
+
Hash[value.map { |k, v| [k.to_s, convert_hash_keys(v)] }]
|
145
|
+
else
|
146
|
+
value
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'typhoeus/adapters/faraday'
|
2
|
+
require 'faraday_middleware/response_middleware'
|
3
|
+
|
4
|
+
module Storenvy
|
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[:response] && env[:response].body && env[:response].body.status
|
13
|
+
body = env[:response].body.status
|
14
|
+
end
|
15
|
+
env[:body] = body
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
# Response middleware that decodes the response body from JSON.
|
22
|
+
#
|
23
|
+
class ParseOj < FaradayMiddleware::ResponseMiddleware
|
24
|
+
dependency do
|
25
|
+
require 'oj' unless defined?(::Oj)
|
26
|
+
end
|
27
|
+
|
28
|
+
define_parser do |body|
|
29
|
+
::Oj.load(body, mode: :compat) unless body.strip.empty?
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Request middleware that encodes the body as JSON.
|
34
|
+
#
|
35
|
+
# Processes only requests with matching Content-type or those without a type.
|
36
|
+
# If a request doesn't have a type but has a body, it sets the Content-type
|
37
|
+
# to JSON MIME-type.
|
38
|
+
#
|
39
|
+
# Doesn't try to encode bodies that already are in string form.
|
40
|
+
class EncodeOj < Faraday::Middleware
|
41
|
+
CONTENT_TYPE = 'Content-Type'.freeze
|
42
|
+
MIME_TYPE = 'application/json'.freeze
|
43
|
+
|
44
|
+
dependency do
|
45
|
+
require 'oj' unless defined?(::Oj)
|
46
|
+
end
|
47
|
+
|
48
|
+
def call(env)
|
49
|
+
match_content_type(env) do |data|
|
50
|
+
env[:body] = encode data
|
51
|
+
end
|
52
|
+
@app.call env
|
53
|
+
end
|
54
|
+
|
55
|
+
def encode(data)
|
56
|
+
::Oj.dump data
|
57
|
+
end
|
58
|
+
|
59
|
+
def match_content_type(env)
|
60
|
+
if process_request?(env)
|
61
|
+
env[:request_headers][CONTENT_TYPE] ||= MIME_TYPE
|
62
|
+
yield env[:body] unless env[:body].respond_to?(:to_str)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def process_request?(env)
|
67
|
+
type = request_type(env)
|
68
|
+
has_body?(env) and (type.empty? or type == MIME_TYPE)
|
69
|
+
end
|
70
|
+
|
71
|
+
def has_body?(env)
|
72
|
+
body = env[:body] and !(body.respond_to?(:to_str) and body.empty?)
|
73
|
+
end
|
74
|
+
|
75
|
+
def request_type(env)
|
76
|
+
type = env[:request_headers][CONTENT_TYPE].to_s
|
77
|
+
type = type.split(';', 2).first if type.index(';')
|
78
|
+
type
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
Faraday.register_middleware :response, oj: Storenvy::ParseOj
|
84
|
+
Faraday.register_middleware :request, oj: Storenvy::EncodeOj
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'storenvy/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "storenvy-api"
|
8
|
+
spec.version = Storenvy::VERSION
|
9
|
+
spec.authors = ["Omri Cohen"]
|
10
|
+
spec.email = ["omri@yotpo.com"]
|
11
|
+
spec.description = %q{Ruby wrapper for Sotrenvy API - written by Yotpo}
|
12
|
+
spec.summary = %q{Ruby wrapper for Sotrenvy API - written by Yotpo}
|
13
|
+
spec.homepage = "https://developers.storenvy.com/docs"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
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
ADDED
@@ -0,0 +1,214 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: storenvy-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Omri Cohen
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-07-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: oauth2
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: faraday
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: typhoeus
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: faraday_middleware
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rash
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
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
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: oj
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: activesupport
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
description: Ruby wrapper for Sotrenvy API - written by Yotpo
|
159
|
+
email:
|
160
|
+
- omri@yotpo.com
|
161
|
+
executables: []
|
162
|
+
extensions: []
|
163
|
+
extra_rdoc_files: []
|
164
|
+
files:
|
165
|
+
- .gitignore
|
166
|
+
- .ruby-gemset
|
167
|
+
- .ruby-version
|
168
|
+
- Gemfile
|
169
|
+
- Gemfile.lock
|
170
|
+
- LICENSE.txt
|
171
|
+
- README.md
|
172
|
+
- Rakefile
|
173
|
+
- lib/storenvy.rb
|
174
|
+
- lib/storenvy/api/order.rb
|
175
|
+
- lib/storenvy/api/product.rb
|
176
|
+
- lib/storenvy/api/store.rb
|
177
|
+
- lib/storenvy/api/template.rb
|
178
|
+
- lib/storenvy/api/user.rb
|
179
|
+
- lib/storenvy/client.rb
|
180
|
+
- lib/storenvy/core/response_parser.rb
|
181
|
+
- lib/storenvy/version.rb
|
182
|
+
- storenvy-api.gemspec
|
183
|
+
homepage: https://developers.storenvy.com/docs
|
184
|
+
licenses:
|
185
|
+
- MIT
|
186
|
+
post_install_message:
|
187
|
+
rdoc_options: []
|
188
|
+
require_paths:
|
189
|
+
- lib
|
190
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
191
|
+
none: false
|
192
|
+
requirements:
|
193
|
+
- - ! '>='
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
segments:
|
197
|
+
- 0
|
198
|
+
hash: 439492878140209227
|
199
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
|
+
none: false
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
segments:
|
206
|
+
- 0
|
207
|
+
hash: 439492878140209227
|
208
|
+
requirements: []
|
209
|
+
rubyforge_project:
|
210
|
+
rubygems_version: 1.8.25
|
211
|
+
signing_key:
|
212
|
+
specification_version: 3
|
213
|
+
summary: Ruby wrapper for Sotrenvy API - written by Yotpo
|
214
|
+
test_files: []
|