ecwid_api 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -0
  3. data/.rspec +0 -0
  4. data/.travis.yml +0 -0
  5. data/Gemfile +0 -2
  6. data/LICENSE.txt +0 -0
  7. data/README.md +228 -228
  8. data/Rakefile +0 -0
  9. data/ecwid_api.gemspec +4 -4
  10. data/lib/ecwid_api.rb +25 -25
  11. data/lib/ecwid_api/api.rb +8 -30
  12. data/lib/ecwid_api/api/base.rb +17 -16
  13. data/lib/ecwid_api/api/categories.rb +55 -56
  14. data/lib/ecwid_api/api/orders.rb +36 -36
  15. data/lib/ecwid_api/api/product_combinations.rb +2 -5
  16. data/lib/ecwid_api/api/products.rb +61 -63
  17. data/lib/ecwid_api/category.rb +1 -7
  18. data/lib/ecwid_api/client.rb +99 -65
  19. data/lib/ecwid_api/entity.rb +4 -6
  20. data/lib/ecwid_api/error.rb +12 -12
  21. data/lib/ecwid_api/o_auth.rb +105 -105
  22. data/lib/ecwid_api/order.rb +0 -0
  23. data/lib/ecwid_api/order_item.rb +0 -0
  24. data/lib/ecwid_api/paged_ecwid_response.rb +0 -0
  25. data/lib/ecwid_api/paged_enumerator.rb +0 -0
  26. data/lib/ecwid_api/person.rb +0 -0
  27. data/lib/ecwid_api/product.rb +3 -15
  28. data/lib/ecwid_api/product_combination.rb +1 -5
  29. data/lib/ecwid_api/version.rb +1 -1
  30. data/lib/ext/string.rb +12 -12
  31. data/spec/api/categories_spec.rb +30 -30
  32. data/spec/api/orders_spec.rb +29 -29
  33. data/spec/api/products_spec.rb +0 -0
  34. data/spec/category_spec.rb +33 -33
  35. data/spec/client_spec.rb +20 -20
  36. data/spec/entity_spec.rb +0 -0
  37. data/spec/fixtures/categories.json +0 -0
  38. data/spec/fixtures/category.json +0 -0
  39. data/spec/fixtures/order.json +0 -0
  40. data/spec/fixtures/orders.json +0 -0
  41. data/spec/fixtures/products.json +0 -0
  42. data/spec/helpers/client.rb +31 -31
  43. data/spec/oauth_spec.rb +39 -39
  44. data/spec/order_item_spec.rb +11 -11
  45. data/spec/order_spec.rb +0 -0
  46. data/spec/paged_enumerator_spec.rb +0 -0
  47. data/spec/spec_helper.rb +24 -24
  48. metadata +26 -34
data/Rakefile CHANGED
File without changes
@@ -9,7 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["David Biehl"]
10
10
  spec.email = ["me@davidbiehl.com"]
11
11
  spec.summary = %q{A client for the Ecwid REST API}
12
- spec.homepage = ""
12
+ spec.description = %q{A client for the Ecwid REST API in Ruby}
13
+ spec.homepage = "https://github.com/davidbiehl/ecwid_api"
13
14
  spec.license = "MIT"
14
15
 
15
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -18,9 +19,8 @@ Gem::Specification.new do |spec|
18
19
  spec.require_paths = ["lib"]
19
20
 
20
21
  spec.add_development_dependency "bundler", "~> 1.5"
21
- spec.add_development_dependency "rake"
22
- spec.add_development_dependency "rspec", "~> 2.14.1"
23
- spec.add_development_dependency "pry"
22
+ spec.add_development_dependency "rake", "~> 0"
23
+ spec.add_development_dependency "rspec", "~> 2.14", ">= 2.14.1"
24
24
 
25
25
  spec.add_dependency "faraday", "~> 0.9.0"
26
26
  spec.add_dependency "faraday_middleware", "~> 0.9.1"
@@ -1,25 +1,25 @@
1
- require "ecwid_api/version"
2
- require "ext/string"
3
- require 'faraday'
4
- require 'faraday_middleware'
5
-
6
- require_relative "ecwid_api/error"
7
-
8
- # Public: This is the main namespace for the EcwidApi. It can be used to store
9
- # the default client.
10
- #
11
- module EcwidApi
12
- autoload :OAuth, "ecwid_api/o_auth"
13
- autoload :Client, "ecwid_api/client"
14
- autoload :ResponseError, "ecwid_api/error"
15
- autoload :Entity, "ecwid_api/entity"
16
- autoload :Api, "ecwid_api/api"
17
-
18
- autoload :Category, "ecwid_api/category"
19
- autoload :Order, "ecwid_api/order"
20
- autoload :OrderItem, "ecwid_api/order_item"
21
- autoload :Person, "ecwid_api/person"
22
- autoload :ProductCombination, "ecwid_api/product_combination"
23
-
24
- autoload :Product, "ecwid_api/product"
25
- end
1
+ require "ecwid_api/version"
2
+ require "ext/string"
3
+ require 'faraday'
4
+ require 'faraday_middleware'
5
+
6
+ require_relative "ecwid_api/error"
7
+
8
+ # Public: This is the main namespace for the EcwidApi. It can be used to store
9
+ # the default client.
10
+ #
11
+ module EcwidApi
12
+ require_relative "ecwid_api/o_auth"
13
+ require_relative "ecwid_api/client"
14
+ require_relative "ecwid_api/error"
15
+ require_relative "ecwid_api/api"
16
+ require_relative "ecwid_api/entity"
17
+
18
+ require_relative "ecwid_api/category"
19
+ require_relative "ecwid_api/order"
20
+ require_relative "ecwid_api/order_item"
21
+ require_relative "ecwid_api/person"
22
+ require_relative "ecwid_api/product_combination"
23
+
24
+ require_relative "ecwid_api/product"
25
+ end
@@ -1,31 +1,9 @@
1
- module EcwidApi
2
- # Internal: A base class for common API functionality
3
- module Api
4
- autoload :Base, "ecwid_api/api/base"
5
- autoload :Orders, "ecwid_api/api/orders"
6
- autoload :Products, "ecwid_api/api/products"
7
- autoload :Categories, "ecwid_api/api/categories"
8
- autoload :ProductCombinations, "ecwid_api/api/product_combinations"
9
-
10
- # Private: Gets the Client
11
- attr_reader :client
12
- private :client
13
-
14
- # Private: Raises an Error if a request failed, otherwise it will
15
- # yield the block
16
- #
17
- # response - a Faraday::Response object
18
- #
19
- # Yield if the response was successful
20
- #
21
- # Raises an error with the status code and reason if the response failed
22
- #
23
- def raise_on_failure(response)
24
- if response.success?
25
- yield(response) if block_given?
26
- else
27
- raise ResponseError.new(response)
28
- end
29
- end
30
- end
1
+ module EcwidApi
2
+ module Api
3
+ require_relative "api/base"
4
+ require_relative "api/orders"
5
+ require_relative "api/products"
6
+ require_relative "api/categories"
7
+ require_relative "api/product_combinations"
8
+ end
31
9
  end
@@ -1,17 +1,18 @@
1
- module EcwidApi
2
- module Api
3
- # Internal: A base class for common API functionality
4
- class Base
5
- include Api
6
-
7
- # Public: Initializes a new EcwidApi::CategoryApi
8
- #
9
- # client - The EcwidApi::Client to use with the API
10
- #
11
- def initialize(client)
12
- @client = client
13
- raise Error.new("The client cannot be nil") unless client
14
- end
15
- end
16
- end
1
+ module EcwidApi
2
+ module Api
3
+ # Internal: A base class for common API functionality
4
+ class Base
5
+ attr_reader :client
6
+ private :client
7
+
8
+ # Public: Initializes a new EcwidApi::CategoryApi
9
+ #
10
+ # client - The EcwidApi::Client to use with the API
11
+ #
12
+ def initialize(client)
13
+ @client = client
14
+ raise Error.new("The client cannot be nil") unless client
15
+ end
16
+ end
17
+ end
17
18
  end
@@ -1,57 +1,56 @@
1
- require_relative "../paged_ecwid_response"
2
-
3
- module EcwidApi
4
- module Api
5
- class Categories < Base
6
- # Public: Returns all of the sub-categories for a given category
7
- #
8
- # See: http://kb.ecwid.com/w/page/25285101/Product%20API#RESTAPIMethodcategories
9
- #
10
- # parent - The Category ID of the parent category. If the parent is 0 then
11
- # a list of the root categories will be returned. If the parent is
12
- # nil, then all of the categories will be returned
13
- #
14
- # Returns an array of EcwidApi::Category objects
15
- def all(params = {})
16
- PagedEcwidResponse.new(client, "categories", params) do |category_hash|
17
- Category.new(category_hash, client: client)
18
- end.sort_by(&:order_by)
19
- end
20
-
21
- # Public: Returns an Array of the root level EcwidApi::Category objects
22
- def root(params = {})
23
- all(params.merge(parent: 0))
24
- end
25
-
26
- # Public: Returns a single EcwidApi::Category
27
- #
28
- # See: http://kb.ecwid.com/w/page/25285101/Product%20API#RESTAPIMethodcategory
29
- #
30
- # category_id - A Category ID to get
31
- #
32
- # Returns an EcwidApi::Category, or nil if it can't be found
33
- def find(id)
34
- response = client.get("categories/#{id}")
35
-
36
- if response.success?
37
- Category.new(response.body, client: client)
38
- else
39
- nil
40
- end
41
- rescue Zlib::BufError
42
- nil
43
- end
44
-
45
- # Public: Creates a new Category
46
- #
47
- # params - a Hash of API keys and their corresponding values
48
- #
49
- # Returns a new Category entity
50
- def create(params)
51
- response = client.post("categories", params)
52
-
53
- raise_on_failure(response) { |response| find(response.body["id"]) }
54
- end
55
- end
56
- end
1
+ require_relative "../paged_ecwid_response"
2
+
3
+ module EcwidApi
4
+ module Api
5
+ class Categories < Base
6
+ # Public: Returns all of the sub-categories for a given category
7
+ #
8
+ # See: http://kb.ecwid.com/w/page/25285101/Product%20API#RESTAPIMethodcategories
9
+ #
10
+ # parent - The Category ID of the parent category. If the parent is 0 then
11
+ # a list of the root categories will be returned. If the parent is
12
+ # nil, then all of the categories will be returned
13
+ #
14
+ # Returns an array of EcwidApi::Category objects
15
+ def all(params = {})
16
+ PagedEcwidResponse.new(client, "categories", params) do |category_hash|
17
+ Category.new(category_hash, client: client)
18
+ end.sort_by(&:order_by)
19
+ end
20
+
21
+ # Public: Returns an Array of the root level EcwidApi::Category objects
22
+ def root(params = {})
23
+ all(params.merge(parent: 0))
24
+ end
25
+
26
+ # Public: Returns a single EcwidApi::Category
27
+ #
28
+ # See: http://kb.ecwid.com/w/page/25285101/Product%20API#RESTAPIMethodcategory
29
+ #
30
+ # category_id - A Category ID to get
31
+ #
32
+ # Returns an EcwidApi::Category, or nil if it can't be found
33
+ def find(id)
34
+ response = client.get("categories/#{id}")
35
+
36
+ if response.success?
37
+ Category.new(response.body, client: client)
38
+ else
39
+ nil
40
+ end
41
+ rescue Zlib::BufError
42
+ nil
43
+ end
44
+
45
+ # Public: Creates a new Category
46
+ #
47
+ # params - a Hash of API keys and their corresponding values
48
+ #
49
+ # Returns a new Category entity
50
+ def create(params)
51
+ response = client.post("categories", params)
52
+ find(response.body["id"])
53
+ end
54
+ end
55
+ end
57
56
  end
@@ -1,36 +1,36 @@
1
- require_relative "../paged_ecwid_response"
2
-
3
- module EcwidApi
4
- module Api
5
- # Public: This is the Ecwid API for Orders. It abstracts the end-points
6
- # of the Ecwid API that deal with orders.
7
- class Orders < Base
8
- # Public: Gets Orders from the Ecwid API
9
- #
10
- # params - optional parameters that can be used to filter the request.
11
- # For a list of params, please refer to the API documentation:
12
- # http://kb.ecwid.com/w/page/43697230/Order%20API
13
- # Note that the limit and offset parameters will be overridden
14
- # since all orders will be returned and enumerated
15
- #
16
- # Returns a PagedEnumerator of `EcwidApi::Order` objects
17
- def all(params = {})
18
- PagedEcwidResponse.new(client, "orders", params) do |order_hash|
19
- Order.new(order_hash, client: client)
20
- end
21
- end
22
-
23
- # Public: Finds a an Order given an Ecwid order_number
24
- #
25
- # order_number - an Integer that is the Ecwid Order number
26
- #
27
- # Returns an EcwidApi::Order if found, nil if not
28
- def find(order_number)
29
- response = client.get("orders/#{order_number}")
30
- if response.success?
31
- Order.new(response.body, client: client)
32
- end
33
- end
34
- end
35
- end
36
- end
1
+ require_relative "../paged_ecwid_response"
2
+
3
+ module EcwidApi
4
+ module Api
5
+ # Public: This is the Ecwid API for Orders. It abstracts the end-points
6
+ # of the Ecwid API that deal with orders.
7
+ class Orders < Base
8
+ # Public: Gets Orders from the Ecwid API
9
+ #
10
+ # params - optional parameters that can be used to filter the request.
11
+ # For a list of params, please refer to the API documentation:
12
+ # http://kb.ecwid.com/w/page/43697230/Order%20API
13
+ # Note that the limit and offset parameters will be overridden
14
+ # since all orders will be returned and enumerated
15
+ #
16
+ # Returns a PagedEnumerator of `EcwidApi::Order` objects
17
+ def all(params = {})
18
+ PagedEcwidResponse.new(client, "orders", params) do |order_hash|
19
+ Order.new(order_hash, client: client)
20
+ end
21
+ end
22
+
23
+ # Public: Finds a an Order given an Ecwid order_number
24
+ #
25
+ # order_number - an Integer that is the Ecwid Order number
26
+ #
27
+ # Returns an EcwidApi::Order if found, nil if not
28
+ def find(order_number)
29
+ response = client.get("orders/#{order_number}")
30
+ if response.success?
31
+ Order.new(response.body, client: client)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -37,14 +37,11 @@ module EcwidApi
37
37
 
38
38
  def create(params)
39
39
  response = client.post("products/#{product.id}/combinations", params)
40
-
41
- raise_on_failure(response) { find(response.body["id"]) }
40
+ find(response.body["id"])
42
41
  end
43
42
 
44
43
  def delete_all!
45
- client.delete("products/#{product.id}/combinations").tap do |response|
46
- raise_on_failure(response)
47
- end
44
+ client.delete("products/#{product.id}/combinations")
48
45
  end
49
46
  end
50
47
  end
@@ -1,64 +1,62 @@
1
- require_relative "../paged_ecwid_response"
2
-
3
- module EcwidApi
4
- module Api
5
- class Products < Base
6
- # Public: Get all of the Product objects for the Ecwid store
7
- #
8
- # Returns an Array of Product objects
9
- def all(params = {})
10
- PagedEcwidResponse.new(client, "products", params) do |product_hash|
11
- Product.new(product_hash, client: client)
12
- end
13
- end
14
-
15
- # Public: Finds a single product by product ID
16
- #
17
- # id - an Ecwid product ID
18
- #
19
- # Returns a Product object, or nil if one can't be found
20
- def find(id)
21
- response = client.get("products/#{id}")
22
- if response.success?
23
- Product.new(response.body, client: client)
24
- end
25
- end
26
-
27
- # Public: Finds a single Product by SKU
28
- #
29
- # sku - a SKU of a product
30
- #
31
- # Returns a Product object, or nil if one can't be found
32
- def find_by_sku(sku)
33
- all(keyword: sku).find { |product| product[:sku] == sku }
34
- end
35
-
36
- # Public: Creates a new Product
37
- #
38
- # params - a Hash
39
- #
40
- # Raises an Error if there is a problem
41
- #
42
- # Returns a Product object
43
- def create(params)
44
- response = client.post("products", params)
45
-
46
- raise_on_failure(response) {|response| find(response.body["id"]) }
47
- end
48
-
49
- # Public: Updates an existing Product
50
- #
51
- # id - the Ecwid product ID
52
- # params - a Hash
53
- #
54
- # Raises an Error if there is a problem
55
- #
56
- # Returns a Product object
57
- def update(id, params)
58
- response = client.put("products/#{id}", params)
59
-
60
- raise_on_failure(response) { find(id) }
61
- end
62
- end
63
- end
1
+ require_relative "../paged_ecwid_response"
2
+
3
+ module EcwidApi
4
+ module Api
5
+ class Products < Base
6
+ # Public: Get all of the Product objects for the Ecwid store
7
+ #
8
+ # Returns an Array of Product objects
9
+ def all(params = {})
10
+ PagedEcwidResponse.new(client, "products", params) do |product_hash|
11
+ Product.new(product_hash, client: client)
12
+ end
13
+ end
14
+
15
+ # Public: Finds a single product by product ID
16
+ #
17
+ # id - an Ecwid product ID
18
+ #
19
+ # Returns a Product object, or nil if one can't be found
20
+ def find(id)
21
+ response = client.get("products/#{id}")
22
+ if response.success?
23
+ Product.new(response.body, client: client)
24
+ end
25
+ end
26
+
27
+ # Public: Finds a single Product by SKU
28
+ #
29
+ # sku - a SKU of a product
30
+ #
31
+ # Returns a Product object, or nil if one can't be found
32
+ def find_by_sku(sku)
33
+ all(keyword: sku).find { |product| product[:sku] == sku }
34
+ end
35
+
36
+ # Public: Creates a new Product
37
+ #
38
+ # params - a Hash
39
+ #
40
+ # Raises an Error if there is a problem
41
+ #
42
+ # Returns a Product object
43
+ def create(params)
44
+ response = client.post("products", params)
45
+ find(response.body["id"])
46
+ end
47
+
48
+ # Public: Updates an existing Product
49
+ #
50
+ # id - the Ecwid product ID
51
+ # params - a Hash
52
+ #
53
+ # Raises an Error if there is a problem
54
+ #
55
+ # Returns a Product object
56
+ def update(id, params)
57
+ client.put("products/#{id}", params)
58
+ find(id)
59
+ end
60
+ end
61
+ end
64
62
  end