celery 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 +7 -0
- data/.gitignore +20 -0
- data/.rspec +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +54 -0
- data/Rakefile +1 -0
- data/celery.gemspec +28 -0
- data/lib/celery.rb +186 -0
- data/lib/celery/.DS_Store +0 -0
- data/lib/celery/errors.rb +18 -0
- data/lib/celery/resources/coupon.rb +136 -0
- data/lib/celery/resources/order.rb +297 -0
- data/lib/celery/resources/product.rb +121 -0
- data/lib/celery/resources/shop.rb +100 -0
- data/lib/celery/resources/user.rb +44 -0
- data/lib/celery/version.rb +3 -0
- data/rails/init.rb +1 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 24259f8a1be95e104f3fcc0467eca253f0304acb
|
4
|
+
data.tar.gz: ee77758970c43f9848787a0e764427629e9b6017
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d61101aebd1da8b573feeba2720ff360a0c0a674ca0e934d5d961e13e21f70d3b5170580e9dfcb4c689e89e3f53ef59241569b001898556efcd45392682d1eb2
|
7
|
+
data.tar.gz: 3b60efc37783096140ffe98c2da52986033ed1875b74559141c6d1187bd085aca860c95c2b4337e883acba1661431220e454f9b7991caf39671d1a60e3e04515
|
data/.gitignore
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
.ruby-version
|
19
|
+
.rbenv-gemsets
|
20
|
+
.rbenv-vars
|
data/.rspec
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Brian Getting
|
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,54 @@
|
|
1
|
+
# Celery
|
2
|
+
|
3
|
+
A Ruby gem for interacting with the Celery API.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'celery'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
bundle
|
17
|
+
```
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
gem install celery
|
23
|
+
```
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
To get started, you'll need to create a Celery account to get your API access token.
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
require 'celery'
|
31
|
+
|
32
|
+
celery = Celery::API.new ('CELERY_API_TOKEN')
|
33
|
+
# Also looks in ENV['CELERY_API_TOKEN']
|
34
|
+
# celery = Celery::API.new
|
35
|
+
|
36
|
+
coupons = celery.coupon.all
|
37
|
+
# => {"total"=>0, "count"=>0, "limit"=>0, "offset"=>0, "has_more"=>false, "coupons"=>[]}
|
38
|
+
|
39
|
+
orders = celery.order.all(limit: 100, skip: 2, sort: 'created')
|
40
|
+
# => {"total"=>0, "count"=>0, "limit"=>100, "offset"=>2, "has_more"=>false, "orders"=>[]}
|
41
|
+
|
42
|
+
me = celery.user.me
|
43
|
+
me['user']['name']
|
44
|
+
# => "Joe Public"
|
45
|
+
|
46
|
+
```
|
47
|
+
|
48
|
+
## Contributing
|
49
|
+
|
50
|
+
1. Fork it
|
51
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
52
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
53
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
54
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/celery.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'celery/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "celery"
|
8
|
+
spec.version = Celery::VERSION
|
9
|
+
spec.platform = Gem::Platform::RUBY
|
10
|
+
spec.authors = ["Brian Getting"]
|
11
|
+
spec.email = ["brian@tatem.ae"]
|
12
|
+
spec.description = %q{Ruby wrapper for the Celery API}
|
13
|
+
spec.summary = %q{Ruby wrapper for the Celery API}
|
14
|
+
spec.homepage = "https://github.com/tatemae-consultancy/celery-ruby"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_dependency 'excon', "~> 0.31.0"
|
23
|
+
spec.add_dependency 'json', "~> 1.8.1"
|
24
|
+
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
26
|
+
spec.add_development_dependency "rspec", "~> 2.14.1"
|
27
|
+
spec.add_development_dependency "rake"
|
28
|
+
end
|
data/lib/celery.rb
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'excon'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
require "celery/errors"
|
6
|
+
require "celery/version"
|
7
|
+
require "celery/resources/coupon"
|
8
|
+
require "celery/resources/order"
|
9
|
+
require "celery/resources/product"
|
10
|
+
require "celery/resources/shop"
|
11
|
+
require "celery/resources/user"
|
12
|
+
|
13
|
+
module Celery
|
14
|
+
class API
|
15
|
+
|
16
|
+
attr_accessor :debug, :host, :path, :session, :token
|
17
|
+
|
18
|
+
def initialize(token=nil, debug=false)
|
19
|
+
@host = 'https://api.trycelery.com'
|
20
|
+
@path = '/v1'
|
21
|
+
@session = Excon.new @host
|
22
|
+
@debug = debug
|
23
|
+
if not token
|
24
|
+
token = ENV['CELERY_API_TOKEN'] if ENV['CELERY_API_TOKEN']
|
25
|
+
# TODO: Could put feedback warning here that some methods
|
26
|
+
# require an API key.
|
27
|
+
end
|
28
|
+
@token = token
|
29
|
+
end
|
30
|
+
|
31
|
+
# Make a request to the Celery API
|
32
|
+
#
|
33
|
+
# @param [Symbol] verb the HTTP request method
|
34
|
+
# @param [String] path the HTTP URL path of the request
|
35
|
+
# @param [Hash] opts the options to make the request with
|
36
|
+
#
|
37
|
+
def call(method, path, opts={}, &block) # :nodoc:
|
38
|
+
# Ensure the body is JSON
|
39
|
+
opts[:body] = JSON.generate(opts[:body]) if opts[:body]
|
40
|
+
# Set the headers
|
41
|
+
opts[:headers] ||= {}
|
42
|
+
opts[:headers].merge!(headers)
|
43
|
+
# Set the path
|
44
|
+
opts[:path] = "#{@path}/#{path}"
|
45
|
+
# Set the access token
|
46
|
+
# TODO: Remove and use HTTP Basic Authorization
|
47
|
+
opts[:query] ||= {}
|
48
|
+
opts[:query].merge!(access_token: @token)
|
49
|
+
# Make the request
|
50
|
+
req = @session.send(method, opts)
|
51
|
+
# Handle the response
|
52
|
+
handle_response(req)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Make a GET request
|
56
|
+
# @see #call
|
57
|
+
#
|
58
|
+
def get(path, opts={}, &block) # :nodoc:
|
59
|
+
call(:get, path, opts, &block)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Make a POST request
|
63
|
+
# @see #call
|
64
|
+
#
|
65
|
+
def post(path, opts={}, &block) # :nodoc:
|
66
|
+
call(:post, path, opts, &block)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Make a PUT request
|
70
|
+
# @see #call
|
71
|
+
#
|
72
|
+
def put(path, opts={}, &block) # :nodoc:
|
73
|
+
call(:put, path, opts, &block)
|
74
|
+
end
|
75
|
+
|
76
|
+
# Make a PATCH request
|
77
|
+
# @see #call
|
78
|
+
#
|
79
|
+
def patch(path, opts={}, &block) # :nodoc:
|
80
|
+
call(:patch, path, opts, &block)
|
81
|
+
end
|
82
|
+
|
83
|
+
# Make a DELETE request
|
84
|
+
# @see #call
|
85
|
+
#
|
86
|
+
def delete(path, opts={}, &block) # :nodoc:
|
87
|
+
call(:delete, path, opts, &block)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Handle the response of a request
|
91
|
+
def handle_response(response) # :nodoc:
|
92
|
+
case response.status
|
93
|
+
when 400
|
94
|
+
raise BadRequest.new JSON.parse(response.body)["error"]
|
95
|
+
when 401
|
96
|
+
raise Unauthorized.new
|
97
|
+
when 404
|
98
|
+
raise NotFound.new
|
99
|
+
when 400...500
|
100
|
+
raise ClientError.new JSON.parse(response.body)["error"]
|
101
|
+
when 500...600
|
102
|
+
raise ServerError.new
|
103
|
+
else
|
104
|
+
if response.body.is_a?(Integer)
|
105
|
+
response.body
|
106
|
+
else
|
107
|
+
JSON.parse(response.body)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# Create an coupons object
|
113
|
+
#
|
114
|
+
# @return [Celery::Coupons]
|
115
|
+
#
|
116
|
+
# @example
|
117
|
+
#
|
118
|
+
# coupons = celery.coupons
|
119
|
+
#
|
120
|
+
def coupon
|
121
|
+
Coupon.new self
|
122
|
+
end
|
123
|
+
|
124
|
+
# Create an orders object
|
125
|
+
#
|
126
|
+
# @return [Celery::Orders]
|
127
|
+
#
|
128
|
+
# @example
|
129
|
+
#
|
130
|
+
# orders = celery.orders
|
131
|
+
#
|
132
|
+
def order
|
133
|
+
Order.new self
|
134
|
+
end
|
135
|
+
|
136
|
+
# Create an products object
|
137
|
+
#
|
138
|
+
# @return [Celery::Products]
|
139
|
+
#
|
140
|
+
# @example
|
141
|
+
#
|
142
|
+
# products = celery.products
|
143
|
+
#
|
144
|
+
def product
|
145
|
+
Product.new self
|
146
|
+
end
|
147
|
+
|
148
|
+
# Create an shop object
|
149
|
+
#
|
150
|
+
# @return [Celery::Shop]
|
151
|
+
#
|
152
|
+
# @example
|
153
|
+
#
|
154
|
+
# shop = celery.shop
|
155
|
+
#
|
156
|
+
def shop
|
157
|
+
Shop.new self
|
158
|
+
end
|
159
|
+
|
160
|
+
# Create an users object
|
161
|
+
#
|
162
|
+
# @return [Celery::Users]
|
163
|
+
#
|
164
|
+
# @example
|
165
|
+
#
|
166
|
+
# users = celery.users
|
167
|
+
#
|
168
|
+
def user
|
169
|
+
User.new self
|
170
|
+
end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
# Set the request headers
|
175
|
+
def headers # :nodoc:
|
176
|
+
{
|
177
|
+
# TODO: Use HTTP Basic Authorization instead.
|
178
|
+
#'Authorization' => "Basic #{Base64.encode64(@token+':X')}",
|
179
|
+
'User-Agent' => "celery-ruby-#{VERSION}",
|
180
|
+
'Content-Type' => 'application/json; charset=utf-8',
|
181
|
+
'Accept' => 'application/json'
|
182
|
+
}
|
183
|
+
end
|
184
|
+
|
185
|
+
end
|
186
|
+
end
|
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Celery
|
2
|
+
class Error < StandardError
|
3
|
+
end
|
4
|
+
class BadRequest < Error
|
5
|
+
end
|
6
|
+
class ClientError < Error
|
7
|
+
end
|
8
|
+
class NotFound < Error
|
9
|
+
end
|
10
|
+
class ServerError < Error
|
11
|
+
end
|
12
|
+
class TooManyRequests < Error
|
13
|
+
end
|
14
|
+
class Unauthorized < Error
|
15
|
+
end
|
16
|
+
class Unavailable < Error
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
module Celery
|
2
|
+
class Coupon
|
3
|
+
attr_accessor :api
|
4
|
+
|
5
|
+
def initialize(api)
|
6
|
+
@api = api
|
7
|
+
end
|
8
|
+
|
9
|
+
# Returns a list of coupons you have. The coupons are returned
|
10
|
+
# in sorted order, with the most recent coupons appearing first.
|
11
|
+
#
|
12
|
+
# @param [Integer] limit (optional) Limit the number of results.
|
13
|
+
# @param [Integer] skip (optional) Skip n results.
|
14
|
+
# @param [String] sort (optional) Field name to sort on.
|
15
|
+
# @param [String] order (optional) Either `asc` or `desc`.
|
16
|
+
#
|
17
|
+
# @return [JSON] A JSON object with the following attributes:
|
18
|
+
# * total [Integer]
|
19
|
+
# * count [Integer]
|
20
|
+
# * offset [Integer]
|
21
|
+
# * limit [Integer]
|
22
|
+
# * has_more [Boolean]
|
23
|
+
# * coupons [Array]
|
24
|
+
#
|
25
|
+
# @see https://www.trycelery.com/developer#list_coupons
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
#
|
29
|
+
# coupons = celery.coupon.all(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
30
|
+
# coupons["total"]
|
31
|
+
# => 28
|
32
|
+
#
|
33
|
+
def all(params = {})
|
34
|
+
@api.get("coupons", query: params)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Retrieves a coupon that has previously been created.
|
38
|
+
#
|
39
|
+
# @param [String] coupon_id (required) The identifier of the Coupon to be retrieved.
|
40
|
+
#
|
41
|
+
# @return [JSON] A Coupon object with the following attributes:
|
42
|
+
# * code [String]
|
43
|
+
# * type [String]
|
44
|
+
# * discount [Integer]
|
45
|
+
#
|
46
|
+
# @see https://www.trycelery.com/developer#retrieve_coupon
|
47
|
+
#
|
48
|
+
# @example
|
49
|
+
#
|
50
|
+
# coupon = celery.coupon.find("123abc")
|
51
|
+
# coupon["code"]
|
52
|
+
# => "Test Coupon Code"
|
53
|
+
#
|
54
|
+
def find(coupon_id)
|
55
|
+
@api.get("coupons/#{coupon_id}")
|
56
|
+
end
|
57
|
+
|
58
|
+
# Creates a new coupon object.
|
59
|
+
#
|
60
|
+
# @param [Hash] coupon A hash of coupon attributes.
|
61
|
+
# @option coupon [String] code (required) the coupon code.
|
62
|
+
# @option coupon [String] type (required) the type of coupon.
|
63
|
+
# @option coupon [Integer] discount (required) the amount discounted.
|
64
|
+
#
|
65
|
+
# @return [JSON] A Coupon object with the following attributes:
|
66
|
+
# * code [String]
|
67
|
+
# * type [String]
|
68
|
+
# * discount [Integer]
|
69
|
+
#
|
70
|
+
# @see https://www.trycelery.com/developer#create_coupon
|
71
|
+
#
|
72
|
+
# @example
|
73
|
+
#
|
74
|
+
# coupon = {
|
75
|
+
# code: "New Coupon Code",
|
76
|
+
# type: "percent",
|
77
|
+
# discount: 10
|
78
|
+
# }
|
79
|
+
# new_coupon = celery.coupon.new(coupon)
|
80
|
+
# new_coupon["code"]
|
81
|
+
# => "New Coupon Code"
|
82
|
+
#
|
83
|
+
def new(coupon)
|
84
|
+
@api.post("coupons", body: {coupon: coupon})
|
85
|
+
end
|
86
|
+
|
87
|
+
# Updates an existing coupon object.
|
88
|
+
#
|
89
|
+
# @param [String] coupon_id (required) The identifier of the Coupon to be updated.
|
90
|
+
# @param [Hash] coupon A hash of coupon attributes.
|
91
|
+
# @option coupon [String] code (optional) the coupon code.
|
92
|
+
# @option coupon [String] type (optional) the type of coupon.
|
93
|
+
# @option coupon [Integer] discount (optional) the amount discounted.
|
94
|
+
#
|
95
|
+
# @return [JSON] A Coupon object with the following attributes:
|
96
|
+
# * code [String]
|
97
|
+
# * type [String]
|
98
|
+
# * discount [Integer]
|
99
|
+
#
|
100
|
+
# @see https://www.trycelery.com/developer#update_coupon
|
101
|
+
#
|
102
|
+
# @example
|
103
|
+
#
|
104
|
+
# updated_coupon = {
|
105
|
+
# code: "Another Coupon Code",
|
106
|
+
# type: "percent",
|
107
|
+
# discount: 15
|
108
|
+
# }
|
109
|
+
# coupon = celery.coupon.update("123abc", updated_coupon)
|
110
|
+
# coupon["code"]
|
111
|
+
# => "Another Coupon Code"
|
112
|
+
#
|
113
|
+
def update(coupon_id, coupon)
|
114
|
+
@api.put("coupons/#{coupon_id}", body: {coupon: coupon})
|
115
|
+
end
|
116
|
+
|
117
|
+
# Deletes an existing coupon object.
|
118
|
+
#
|
119
|
+
# @param [String] coupon_id (required) The identifier of the Coupon to be deleted.
|
120
|
+
#
|
121
|
+
# @return [JSON] A JSON object with the following attributes:
|
122
|
+
# * status [Boolean]
|
123
|
+
#
|
124
|
+
# @see https://www.trycelery.com/developer#delete_coupon
|
125
|
+
#
|
126
|
+
# @example
|
127
|
+
#
|
128
|
+
# result = celery.coupon.destroy("123abc")
|
129
|
+
# result["status"]
|
130
|
+
# => true
|
131
|
+
#
|
132
|
+
def destroy(coupon_id)
|
133
|
+
@api.delete("coupons/#{coupon_id}")
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
@@ -0,0 +1,297 @@
|
|
1
|
+
module Celery
|
2
|
+
class Order
|
3
|
+
attr_accessor :api
|
4
|
+
|
5
|
+
def initialize(api)
|
6
|
+
@api = api
|
7
|
+
end
|
8
|
+
|
9
|
+
# Returns a list of orders you have. The orders are returned
|
10
|
+
# in sorted order, with the most recent orders appearing first.
|
11
|
+
#
|
12
|
+
# @param [Integer] limit (optional) Limit the number of results.
|
13
|
+
# @param [Integer] skip (optional) Skip n results.
|
14
|
+
# @param [String] sort (optional) Field name to sort on.
|
15
|
+
# @param [String] order (optional) Either `asc` or `desc`.
|
16
|
+
# @param [String] since (optional) Based on updated. Unix time in milliseconds (ms).
|
17
|
+
# @param [String] until (optional) Based on updated. Unix time in milliseconds (ms).
|
18
|
+
# @param [String] status (optional) Once of `paid`, `paid_balance`, `paid_deposit`, `refunded`, `shipped`.
|
19
|
+
#
|
20
|
+
# @return [JSON] A JSON object with the following attributes:
|
21
|
+
# * total [Integer]
|
22
|
+
# * count [Integer]
|
23
|
+
# * offset [Integer]
|
24
|
+
# * limit [Integer]
|
25
|
+
# * has_more [Boolean]
|
26
|
+
# * orders [Array]
|
27
|
+
#
|
28
|
+
# @see https://www.trycelery.com/developer#list_orders
|
29
|
+
#
|
30
|
+
# @example
|
31
|
+
#
|
32
|
+
# orders = celery.order.all(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
33
|
+
# orders["total"]
|
34
|
+
# => 158
|
35
|
+
#
|
36
|
+
def all(params = {})
|
37
|
+
@api.get("orders", query: params)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns a list of `paid` orders.
|
41
|
+
# @see #all
|
42
|
+
#
|
43
|
+
# @example
|
44
|
+
#
|
45
|
+
# paid = celery.order.paid(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
46
|
+
# paid["total"]
|
47
|
+
# => 5
|
48
|
+
#
|
49
|
+
def paid(params = {})
|
50
|
+
params[:status] = 'paid'
|
51
|
+
all(params)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Returns a list of `paid_balance` orders.
|
55
|
+
# @see #all
|
56
|
+
#
|
57
|
+
# @example
|
58
|
+
#
|
59
|
+
# paid = celery.order.paid_balance(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
60
|
+
# paid["total"]
|
61
|
+
# => 5
|
62
|
+
#
|
63
|
+
def paid_balance(params = {})
|
64
|
+
params[:status] = 'paid_balance'
|
65
|
+
all(params)
|
66
|
+
end
|
67
|
+
|
68
|
+
# Returns a list of `paid_deposit` orders.
|
69
|
+
# @see #all
|
70
|
+
#
|
71
|
+
# @example
|
72
|
+
#
|
73
|
+
# paid = celery.order.paid_deposit(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
74
|
+
# paid["total"]
|
75
|
+
# => 5
|
76
|
+
#
|
77
|
+
def paid_deposit(params = {})
|
78
|
+
params[:status] = 'paid_deposit'
|
79
|
+
all(params)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Returns a list of `refunded` orders.
|
83
|
+
# @see #all
|
84
|
+
#
|
85
|
+
# @example
|
86
|
+
#
|
87
|
+
# paid = celery.order.refunded(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
88
|
+
# paid["total"]
|
89
|
+
# => 5
|
90
|
+
#
|
91
|
+
def refunded(params = {})
|
92
|
+
params[:status] = 'refunded'
|
93
|
+
all(params)
|
94
|
+
end
|
95
|
+
|
96
|
+
# Returns a list of `shipped` orders.
|
97
|
+
# @see #all
|
98
|
+
#
|
99
|
+
# @example
|
100
|
+
#
|
101
|
+
# paid = celery.order.shipped(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
102
|
+
# paid["total"]
|
103
|
+
# => 5
|
104
|
+
#
|
105
|
+
def shipped(params = {})
|
106
|
+
params[:status] = 'shipped'
|
107
|
+
all(params)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Retrieves an order that has previously been created.
|
111
|
+
#
|
112
|
+
# @param [String] order_id (required) The identifier of the Order to be retrieved.
|
113
|
+
#
|
114
|
+
# @return [JSON] An Order object.
|
115
|
+
#
|
116
|
+
# @see https://www.trycelery.com/developer#retrieve_order
|
117
|
+
#
|
118
|
+
# @example
|
119
|
+
#
|
120
|
+
# order = celery.order.find("123abc")
|
121
|
+
# order["_id"]
|
122
|
+
# => "51ad40901a7e9b0200000006"
|
123
|
+
#
|
124
|
+
def find(order_id)
|
125
|
+
@api.get("orders/#{order_id}")
|
126
|
+
end
|
127
|
+
|
128
|
+
# Creates a new order object.
|
129
|
+
#
|
130
|
+
# @param [Hash] order A hash of order attributes.
|
131
|
+
#
|
132
|
+
# @return [JSON] An Order object.
|
133
|
+
#
|
134
|
+
# @see https://www.trycelery.com/developer#create_order
|
135
|
+
#
|
136
|
+
# @example
|
137
|
+
#
|
138
|
+
# order = {
|
139
|
+
# seller_id: "123abc456",
|
140
|
+
# buyer: {
|
141
|
+
# email: "joe@public.com",
|
142
|
+
# ...
|
143
|
+
# },
|
144
|
+
# ...
|
145
|
+
# }
|
146
|
+
# new_order = celery.order.new(order)
|
147
|
+
# new_order["_id"]
|
148
|
+
# => "51ad40901a7e9b0200000006"
|
149
|
+
#
|
150
|
+
def new(order)
|
151
|
+
@api.post("orders", body: {order: order})
|
152
|
+
end
|
153
|
+
|
154
|
+
# Updates an existing order object.
|
155
|
+
#
|
156
|
+
# @param [String] order_id (required) The identifier of the Order to be updated.
|
157
|
+
# @param [Hash] order A hash of order attributes.
|
158
|
+
#
|
159
|
+
# @return [JSON] An Order object.
|
160
|
+
#
|
161
|
+
# @see https://www.trycelery.com/developer#update_order
|
162
|
+
#
|
163
|
+
# @example
|
164
|
+
#
|
165
|
+
# updated_order = {
|
166
|
+
# status: "refunded"
|
167
|
+
# }
|
168
|
+
# order = celery.order.update("123abc", updated_order)
|
169
|
+
# order["status"]
|
170
|
+
# => "refunded"
|
171
|
+
#
|
172
|
+
def update(order_id, order)
|
173
|
+
@api.put("orders/#{order_id}", body: {order: order})
|
174
|
+
end
|
175
|
+
|
176
|
+
# Deletes an existing order object.
|
177
|
+
#
|
178
|
+
# @param [String] order_id (required) The identifier of the Order to be deleted.
|
179
|
+
#
|
180
|
+
# @return [JSON] A JSON object with the following attributes:
|
181
|
+
# * status [Boolean]
|
182
|
+
#
|
183
|
+
# @see https://www.trycelery.com/developer#delete_order
|
184
|
+
#
|
185
|
+
# @example
|
186
|
+
#
|
187
|
+
# result = celery.order.destroy("123abc")
|
188
|
+
# result["status"]
|
189
|
+
# => true
|
190
|
+
#
|
191
|
+
def destroy(order_id)
|
192
|
+
@api.delete("orders/#{order_id}")
|
193
|
+
end
|
194
|
+
|
195
|
+
# TODO: There is no way that this is a get request!
|
196
|
+
# TODO: Is "cancelled" and order status?
|
197
|
+
# Cancels an order.
|
198
|
+
#
|
199
|
+
# @param [String] order_id (required) The identifier of the Order to be cancelled.
|
200
|
+
#
|
201
|
+
# @return [JSON] An Order object.
|
202
|
+
#
|
203
|
+
# @see https://www.trycelery.com/developer#cancel_order
|
204
|
+
#
|
205
|
+
# @example
|
206
|
+
#
|
207
|
+
# cancelled_order = celery.order.cancel("123abc")
|
208
|
+
# cancelled_order["status"]
|
209
|
+
# => cancelled
|
210
|
+
#
|
211
|
+
def cancel(order_id)
|
212
|
+
@api.get("orders/#{order_id}/cancel")
|
213
|
+
end
|
214
|
+
|
215
|
+
# Charges deposit.
|
216
|
+
#
|
217
|
+
# @param [String] order_id (required) The identifier of the Order to charge.
|
218
|
+
#
|
219
|
+
# @return [JSON] An Order object.
|
220
|
+
#
|
221
|
+
# @see https://www.trycelery.com/developer#charge_order_deposit
|
222
|
+
#
|
223
|
+
# @example
|
224
|
+
#
|
225
|
+
# charge = celery.order.charge_deposit("123abc")
|
226
|
+
#
|
227
|
+
def charge_deposit(order_id)
|
228
|
+
@api.post("orders/#{order_id}/charge_deposit")
|
229
|
+
end
|
230
|
+
|
231
|
+
# Charges balance.
|
232
|
+
#
|
233
|
+
# @param [String] order_id (required) The identifier of the Order to charge.
|
234
|
+
#
|
235
|
+
# @return [JSON] An Order object.
|
236
|
+
#
|
237
|
+
# @see https://www.trycelery.com/developer#charge_order_balance
|
238
|
+
#
|
239
|
+
# @example
|
240
|
+
#
|
241
|
+
# charge = celery.order.charge_balance("123abc")
|
242
|
+
#
|
243
|
+
def charge_balance(order_id)
|
244
|
+
@api.post("orders/#{order_id}/charge_balance")
|
245
|
+
end
|
246
|
+
|
247
|
+
# Refunds deposit.
|
248
|
+
#
|
249
|
+
# @param [String] order_id (required) The identifier of the Order to charge.
|
250
|
+
#
|
251
|
+
# @return [JSON] An Order object.
|
252
|
+
#
|
253
|
+
# @see https://www.trycelery.com/developer#refund_order_deposit
|
254
|
+
#
|
255
|
+
# @example
|
256
|
+
#
|
257
|
+
# refund = celery.order.refund_deposit("123abc")
|
258
|
+
#
|
259
|
+
def refund_deposit(order_id)
|
260
|
+
@api.post("orders/#{order_id}/refund_deposit")
|
261
|
+
end
|
262
|
+
|
263
|
+
# Refunds balance.
|
264
|
+
#
|
265
|
+
# @param [String] order_id (required) The identifier of the Order to charge.
|
266
|
+
#
|
267
|
+
# @return [JSON] An Order object.
|
268
|
+
#
|
269
|
+
# @see https://www.trycelery.com/developer#refund_order_balance
|
270
|
+
#
|
271
|
+
# @example
|
272
|
+
#
|
273
|
+
# refund = celery.order.refund_balance("123abc")
|
274
|
+
#
|
275
|
+
def refund_balance(order_id)
|
276
|
+
@api.post("orders/#{order_id}/refund_balance")
|
277
|
+
end
|
278
|
+
|
279
|
+
# TODO: There is no way that this is a get request!
|
280
|
+
# TODO: Is "cancelled" and order status?
|
281
|
+
# Changes order status to `shipped `.
|
282
|
+
#
|
283
|
+
# @param [String] order_id (required) The identifier of the Order to ship.
|
284
|
+
#
|
285
|
+
# @return [JSON] An Order object.
|
286
|
+
#
|
287
|
+
# @see https://www.trycelery.com/developer#ship_order
|
288
|
+
#
|
289
|
+
# @example
|
290
|
+
#
|
291
|
+
# refund = celery.order.ship("123abc")
|
292
|
+
#
|
293
|
+
def ship(order_id)
|
294
|
+
@api.get("orders/#{order_id}/ship")
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module Celery
|
2
|
+
class Product
|
3
|
+
attr_accessor :api
|
4
|
+
|
5
|
+
def initialize(api)
|
6
|
+
@api = api
|
7
|
+
end
|
8
|
+
|
9
|
+
# Returns a list of products you have.
|
10
|
+
#
|
11
|
+
# @param [Integer] limit (optional) Limit the number of results.
|
12
|
+
# @param [Integer] skip (optional) Skip n results.
|
13
|
+
# @param [String] sort (optional) Field name to sort on.
|
14
|
+
# @param [String] order (optional) Either `asc` or `desc`.
|
15
|
+
#
|
16
|
+
# @return [JSON] A JSON object with the following attributes:
|
17
|
+
# * total [Integer]
|
18
|
+
# * count [Integer]
|
19
|
+
# * offset [Integer]
|
20
|
+
# * limit [Integer]
|
21
|
+
# * has_more [Boolean]
|
22
|
+
# * products [Array]
|
23
|
+
#
|
24
|
+
# @see https://www.trycelery.com/developer#list_products
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
#
|
28
|
+
# products = celery.product.all(limit: 25, skip: 2, sort: 'created', order: 'asc')
|
29
|
+
# products.total
|
30
|
+
# => 28
|
31
|
+
#
|
32
|
+
def all(params = {})
|
33
|
+
@api.get("products", query: params)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Retrieves a product that has previously been created.
|
37
|
+
#
|
38
|
+
# @param [String] product_id (required) The identifier of the Product to be retrieved.
|
39
|
+
#
|
40
|
+
# @return [JSON] A Product object.
|
41
|
+
#
|
42
|
+
# @see https://www.trycelery.com/developer#retrieve_product
|
43
|
+
#
|
44
|
+
# @example
|
45
|
+
#
|
46
|
+
# product = celery.product.find("123abc")
|
47
|
+
# product["slug"]
|
48
|
+
# => "test-product"
|
49
|
+
#
|
50
|
+
def find(product_id)
|
51
|
+
@api.get("products/#{product_id}")
|
52
|
+
end
|
53
|
+
|
54
|
+
# Creates a new product object.
|
55
|
+
#
|
56
|
+
# @param [Hash] product A hash of product attributes.
|
57
|
+
# @option product [String] name (optional) the product name.
|
58
|
+
# @option product [Integer] price (optional) in cents.
|
59
|
+
# @option product [Integer] deposit (optional) in cents.
|
60
|
+
# @option product [Array] options (optional)
|
61
|
+
#
|
62
|
+
# @return [JSON] A Product object.
|
63
|
+
#
|
64
|
+
# @see https://www.trycelery.com/developer#create_product
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
#
|
68
|
+
# product = {
|
69
|
+
# name: "New Product",
|
70
|
+
# price: 1999,
|
71
|
+
# }
|
72
|
+
# new_product = celery.product.new(product)
|
73
|
+
# new_product["name"]
|
74
|
+
# => "New Product"
|
75
|
+
#
|
76
|
+
def new(product)
|
77
|
+
@api.post("products", body: {product: product})
|
78
|
+
end
|
79
|
+
|
80
|
+
# Updates an existing product object.
|
81
|
+
#
|
82
|
+
# @param [String] product_id (required) The identifier of the Product to be updated.
|
83
|
+
# @param [Hash] product A hash of product attributes.
|
84
|
+
#
|
85
|
+
# @return [JSON] A Product object.
|
86
|
+
#
|
87
|
+
# @see https://www.trycelery.com/developer#update_product
|
88
|
+
#
|
89
|
+
# @example
|
90
|
+
#
|
91
|
+
# product = {
|
92
|
+
# name: "New Name"
|
93
|
+
# }
|
94
|
+
# updated = celery.product.update("123abc", product)
|
95
|
+
# updated["name"]
|
96
|
+
# => "New Name"
|
97
|
+
#
|
98
|
+
def update(product_id, product)
|
99
|
+
@api.put("products/#{product_id}", body: {product: product})
|
100
|
+
end
|
101
|
+
|
102
|
+
# Deletes an existing product object.
|
103
|
+
#
|
104
|
+
# @param [String] product_id (required) The identifier of the Product to be deleted.
|
105
|
+
#
|
106
|
+
# @return [JSON] A JSON object with the following attributes:
|
107
|
+
# * status [Boolean]
|
108
|
+
#
|
109
|
+
# @see https://www.trycelery.com/developer#delete_product
|
110
|
+
#
|
111
|
+
# @example
|
112
|
+
#
|
113
|
+
# result = celery.product.destroy("123abc")
|
114
|
+
# result["status"]
|
115
|
+
# => true
|
116
|
+
#
|
117
|
+
def destroy(product_id)
|
118
|
+
@api.delete("products/#{product_id}")
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module Celery
|
2
|
+
class Shop
|
3
|
+
attr_accessor :api
|
4
|
+
|
5
|
+
def initialize(api)
|
6
|
+
@api = api
|
7
|
+
end
|
8
|
+
|
9
|
+
# Retrieves the public details of a Product or Collection that has
|
10
|
+
# previously been created.
|
11
|
+
#
|
12
|
+
# @param [String] slug (required) The identifier of the Product or Collection to be retrieved.
|
13
|
+
#
|
14
|
+
# @return [JSON] A Product or Collection object
|
15
|
+
#
|
16
|
+
# @see https://www.trycelery.com/developer#retrieve_shop
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
#
|
20
|
+
# shop = celery.shop.find("product-slug")
|
21
|
+
# => { "product": { "_id": "123abc", ... } }
|
22
|
+
#
|
23
|
+
def find(slug)
|
24
|
+
@api.get("shop/#{slug}")
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns whether a product slug is being used.
|
28
|
+
#
|
29
|
+
# @param [String] slug (required) The identifier of the slug to check.
|
30
|
+
#
|
31
|
+
# @return [JSON] A JSON object with the following attributes:
|
32
|
+
# * slugify [Boolean]
|
33
|
+
#
|
34
|
+
# @see https://www.trycelery.com/developer#check_slug
|
35
|
+
#
|
36
|
+
# @example
|
37
|
+
#
|
38
|
+
# check = celery.shop.check("test-slug")
|
39
|
+
# check["slugify"]
|
40
|
+
# => false
|
41
|
+
#
|
42
|
+
def check(slug)
|
43
|
+
@api.get("slugify", query: {slug: slug})
|
44
|
+
end
|
45
|
+
|
46
|
+
# TODO: This seems like a duplicate of Order#new.
|
47
|
+
# Checkout with credit card and creates a new order object.
|
48
|
+
#
|
49
|
+
# @param [Hash] order A hash of order attributes.
|
50
|
+
#
|
51
|
+
# @return [JSON] An Order object.
|
52
|
+
#
|
53
|
+
# @see https://www.trycelery.com/developer#checkout
|
54
|
+
#
|
55
|
+
# @example
|
56
|
+
#
|
57
|
+
# order = {
|
58
|
+
# seller_id: "123abc456",
|
59
|
+
# buyer: {
|
60
|
+
# email: "joe@public.com",
|
61
|
+
# ...
|
62
|
+
# },
|
63
|
+
# ...
|
64
|
+
# }
|
65
|
+
# checkout = celery.shop.checkout(order)
|
66
|
+
# checkout["_id"]
|
67
|
+
# => "51ad40901a7e9b0200000006"
|
68
|
+
#
|
69
|
+
def checkout(order)
|
70
|
+
@api.post("checkout", body: {order: order})
|
71
|
+
end
|
72
|
+
|
73
|
+
# TODO: This seems like a duplicate of Order#new.
|
74
|
+
# Checkout with PayPal and creates a new order object with PayPal.
|
75
|
+
#
|
76
|
+
# @param [Hash] order A hash of order attributes.
|
77
|
+
#
|
78
|
+
# @return [JSON] An Order object.
|
79
|
+
#
|
80
|
+
# @see https://www.trycelery.com/developer#checkout_paypal
|
81
|
+
#
|
82
|
+
# @example
|
83
|
+
#
|
84
|
+
# order = {
|
85
|
+
# seller_id: "123abc456",
|
86
|
+
# buyer: {
|
87
|
+
# email: "joe@public.com",
|
88
|
+
# ...
|
89
|
+
# },
|
90
|
+
# ...
|
91
|
+
# }
|
92
|
+
# checkout = celery.shop.checkout_paypal(order)
|
93
|
+
# checkout["_id"]
|
94
|
+
# => "51ad40901a7e9b0200000006"
|
95
|
+
#
|
96
|
+
def checkout_paypal(order)
|
97
|
+
@api.post("checkout/paypal", body: {order: order})
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Celery
|
2
|
+
class User
|
3
|
+
attr_accessor :api
|
4
|
+
|
5
|
+
def initialize(api)
|
6
|
+
@api = api
|
7
|
+
end
|
8
|
+
|
9
|
+
# Retrieves seller information about yourself.
|
10
|
+
#
|
11
|
+
# @return [JSON] A User object.
|
12
|
+
#
|
13
|
+
# @see https://www.trycelery.com/developer#retrieve_yourself
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
#
|
17
|
+
# profile = celery.user.me
|
18
|
+
# profile["email"]
|
19
|
+
# => "joe@public.com"
|
20
|
+
#
|
21
|
+
def me
|
22
|
+
@api.get("users/me")
|
23
|
+
end
|
24
|
+
|
25
|
+
# TODO: Need to get the arguments for this method.
|
26
|
+
# Updates seller information about yourself.
|
27
|
+
#
|
28
|
+
# @param [Hash] user A hash of user attributes.
|
29
|
+
#
|
30
|
+
# @return [JSON] A User object.
|
31
|
+
#
|
32
|
+
# @see https://www.trycelery.com/developer#update_yourself
|
33
|
+
#
|
34
|
+
# @example
|
35
|
+
#
|
36
|
+
# profile = celery.user.update(email: 'john@public.com')
|
37
|
+
# profile["email"]
|
38
|
+
# => "john@public.com"
|
39
|
+
#
|
40
|
+
def update(user)
|
41
|
+
@api.put("users/me", body: {user: user})
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/rails/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'celery'
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: celery
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brian Getting
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: excon
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.31.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.31.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.8.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.8.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.14.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.14.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Ruby wrapper for the Celery API
|
84
|
+
email:
|
85
|
+
- brian@tatem.ae
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- .rspec
|
92
|
+
- Gemfile
|
93
|
+
- LICENSE.txt
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- celery.gemspec
|
97
|
+
- lib/celery.rb
|
98
|
+
- lib/celery/.DS_Store
|
99
|
+
- lib/celery/errors.rb
|
100
|
+
- lib/celery/resources/coupon.rb
|
101
|
+
- lib/celery/resources/order.rb
|
102
|
+
- lib/celery/resources/product.rb
|
103
|
+
- lib/celery/resources/shop.rb
|
104
|
+
- lib/celery/resources/user.rb
|
105
|
+
- lib/celery/version.rb
|
106
|
+
- rails/init.rb
|
107
|
+
homepage: https://github.com/tatemae-consultancy/celery-ruby
|
108
|
+
licenses:
|
109
|
+
- MIT
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.0.14
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: Ruby wrapper for the Celery API
|
131
|
+
test_files: []
|