veeqo_api_ruby 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9d89f532e9a482385d86d41f4a42a9ca9064bc49
4
+ data.tar.gz: b5abe9360c21f2a23de53e449c997fbe286285b3
5
+ SHA512:
6
+ metadata.gz: 3a27ae249ad58cac59c3a95675ca7d1de8449c093f7884b8528f2e357f365cb7327119527d868b24a8aaa2c8436521fb31abec4703c3d5d0ba36d719af296e2e
7
+ data.tar.gz: d8b04a6402367408da4c740114c39c5b4f208980001b2e21506f6a1de85823e5b2997cf4612007d0b8df79a974ae56dca3833080427813ab0ff3f4b5cdfe44e8
data/README.md ADDED
@@ -0,0 +1,55 @@
1
+ # VeeqoApiRuby
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/veeqo_api_ruby`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'veeqo_api_ruby'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install veeqo_api_ruby
22
+
23
+ ## Usage
24
+
25
+ For full examples of using the API client, please see the [examples folder](examples) and refer to Veeqo [developer documentation](https://developers.veeqo.com/docs/versions/1-0-0-beta).
26
+
27
+ Example:
28
+
29
+ ```rb
30
+ # Configure the client to talk to a given store
31
+ Veeqo.configure do |config|
32
+ config.api_key = ENV['VEEQO_API_KEY']
33
+ end
34
+
35
+ # Make an API request for a given resource
36
+ Veeqo::Company.info
37
+ => #<Veeqo::Company id=1234>
38
+ ```
39
+
40
+
41
+ ## Development
42
+
43
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
44
+
45
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
46
+
47
+ ## Contributing
48
+
49
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/veeqo_api_ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
50
+
51
+
52
+ ## License
53
+
54
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
55
+
data/lib/veeqo.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'hashie'
2
+ require 'faraday_middleware'
3
+ require 'veeqo/version'
4
+ require 'veeqo/config'
5
+ require 'veeqo/connection'
6
+ require 'veeqo/exception'
7
+ require 'veeqo/request'
8
+ require 'veeqo/resource_actions'
9
+ require 'veeqo/subresource_actions'
10
+ require 'veeqo/middleware/auth'
11
+ require 'veeqo/middleware/http_exception'
12
+ require 'veeqo/resources/resource'
13
+
14
+ module Veeqo
15
+ resources = File.join(File.dirname(__FILE__), 'veeqo', 'resources', '**', '*.rb')
16
+ Dir.glob(resources, &method(:require))
17
+
18
+ class << self
19
+ attr_reader :api, :config
20
+
21
+ def configure
22
+ @config = Veeqo::Config.new.tap { |h| yield(h) }
23
+ @api = Veeqo::Connection.build(@config)
24
+ end
25
+ end
26
+ # Your code goes here...
27
+ end
@@ -0,0 +1,11 @@
1
+ module Veeqo
2
+ class Config < Hashie::Mash
3
+ DEFAULTS = {
4
+ base_url: 'https://api.veeqo.com'
5
+ }.freeze
6
+
7
+ def api_url
8
+ DEFAULTS[:base_url]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module Veeqo
2
+ module Connection
3
+ HEADERS = {
4
+ 'accept' => 'application/json'
5
+ }.freeze
6
+
7
+ def self.build(config)
8
+ Faraday.new(url: config.api_url) do |conn|
9
+ conn.request :json
10
+ conn.headers = HEADERS
11
+ conn.use Veeqo::Middleware::Auth, config
12
+ conn.use Veeqo::Middleware::HttpException
13
+ conn.adapter Faraday.default_adapter
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,58 @@
1
+ module Veeqo
2
+ class HttpError < StandardError
3
+ attr_accessor :response_headers
4
+ def initialize(headers)
5
+ @response_headers = headers
6
+ end
7
+ end
8
+
9
+ class BadRequest < HttpError; end
10
+ class Unauthorized < HttpError; end
11
+ class Forbidden < HttpError; end
12
+ class NotFound < HttpError; end
13
+ class MethodNotAllowed < HttpError; end
14
+ class NotAccepted < HttpError; end
15
+ class TimeOut < HttpError; end
16
+ class ResourceConflict < HttpError; end
17
+ class TooManyRequests < HttpError; end
18
+ class InternalServerError < HttpError; end
19
+ class BadGateway < HttpError; end
20
+ class ServiceUnavailable < HttpError; end
21
+ class GatewayTimeout < HttpError; end
22
+ class BandwidthLimitExceeded < HttpError; end
23
+
24
+ module HttpErrors
25
+ ERRORS = {
26
+ 400 => Veeqo::BadRequest,
27
+ 401 => Veeqo::Unauthorized,
28
+ 403 => Veeqo::Forbidden,
29
+ 404 => Veeqo::NotFound,
30
+ 405 => Veeqo::MethodNotAllowed,
31
+ 406 => Veeqo::NotAccepted,
32
+ 408 => Veeqo::TimeOut,
33
+ 409 => Veeqo::ResourceConflict,
34
+ 429 => Veeqo::TooManyRequests,
35
+ 500 => Veeqo::InternalServerError,
36
+ 502 => Veeqo::BadGateway,
37
+ 503 => Veeqo::ServiceUnavailable,
38
+ 504 => Veeqo::GatewayTimeout,
39
+ 509 => Veeqo::BandwidthLimitExceeded
40
+ }.freeze
41
+
42
+ def throw_http_exception!(code, env)
43
+ return unless ERRORS.keys.include? code
44
+ response_headers = {}
45
+ unless env.body.empty?
46
+ response_headers = begin
47
+ JSON.parse(env.body, symbolize_names: true)
48
+ rescue
49
+ {}
50
+ end
51
+ end
52
+ unless env[:response_headers] && env[:response_headers]['X-Retry-After'].nil?
53
+ response_headers[:retry_after] = env[:response_headers]['X-Retry-After'].to_i
54
+ end
55
+ raise ERRORS[code].new(response_headers), env.body
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,15 @@
1
+ module Veeqo
2
+ module Middleware
3
+ class Auth < Faraday::Middleware
4
+ def initialize(app, options = {})
5
+ @app = app
6
+ @options = options
7
+ end
8
+
9
+ def call(env)
10
+ env[:request_headers]['x-api-key'] = @options[:api_key]
11
+ @app.call env
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ require 'veeqo/exception'
2
+
3
+ module Veeqo
4
+ module Middleware
5
+ class HttpException < Faraday::Response::Middleware
6
+ include Veeqo::HttpErrors
7
+
8
+ def on_complete(env)
9
+ throw_http_exception! env[:status].to_i, env
10
+ env
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,88 @@
1
+ require 'json'
2
+
3
+ module Veeqo
4
+ class PathBuilder
5
+ attr_reader :uri
6
+
7
+ def initialize(uri)
8
+ @uri = uri
9
+ end
10
+
11
+ # This takes the @uri and inserts the keys to form a path.
12
+ # To start we make sure that for nil/numeric values, we wrap those into an
13
+ # array. We then scan the string for %d and %s to find the number of times
14
+ # we possibly need to insert keys into the URI. Next, we check the size of
15
+ # the keys array, if the keys size is less than the number of possible keys
16
+ # in the URI, we will remove the trailing %d or %s, then remove the
17
+ # trailing /. We then pass the keys into the uri to form the path.
18
+ # ex. foo/%d/bar/%d => foo/1/bar/2
19
+ def build(keys = [])
20
+ keys = [] if keys.nil?
21
+ keys = [keys] if keys.is_a? Numeric
22
+ ids = uri.scan('%d').count + uri.scan('%s').count
23
+ str = ids > keys.size ? uri.chomp('%d').chomp('%s').chomp('/') : uri
24
+ (str % keys).chomp('/')
25
+ end
26
+
27
+ def to_s
28
+ @uri
29
+ end
30
+ end
31
+
32
+ class Request < Module
33
+ def initialize(uri)
34
+ @uri = uri
35
+ end
36
+
37
+ def included(base)
38
+ base.extend ClassMethods
39
+ path_builder = PathBuilder.new @uri
40
+ base.define_singleton_method :path do
41
+ path_builder
42
+ end
43
+ end
44
+
45
+ module ClassMethods
46
+ def get(path, params = {})
47
+ response = raw_request(:get, path, params)
48
+ build_response_object response
49
+ end
50
+
51
+ def delete(path, params = {})
52
+ response = raw_request(:delete, path, params)
53
+ response.body
54
+ end
55
+
56
+ def post(path, params = {})
57
+ response = raw_request(:post, path, params)
58
+ build_response_object response
59
+ end
60
+
61
+ def put(path, params = {})
62
+ response = raw_request(:put, path, params)
63
+ build_response_object response
64
+ end
65
+
66
+ def raw_request(method, path, params = {})
67
+ client = params.delete(:connection) || Veeqo.api
68
+ client.send(method, path.to_s, params)
69
+ end
70
+
71
+ private
72
+
73
+ def build_response_object(response)
74
+ json = parse response.body
75
+ if json.is_a? Array
76
+ json.map { |obj| new obj }
77
+ else
78
+ new json
79
+ end
80
+ end
81
+
82
+ def parse(json)
83
+ return [] if json.empty?
84
+ JSON.parse(json, symbolize_names: true)
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,51 @@
1
+ module Veeqo
2
+ class ResourceActions < Module
3
+ attr_reader :options
4
+
5
+ def initialize(options = {})
6
+ @options = options
7
+ tap do |mod|
8
+ mod.define_singleton_method :_options do
9
+ mod.options
10
+ end
11
+ end
12
+ end
13
+
14
+ def included(base)
15
+ base.send(:include, Request.new(options[:uri]))
16
+ base.extend(ClassMethods)
17
+ options[:disable_methods] ||= []
18
+ methods = ClassMethods.public_instance_methods & options[:disable_methods]
19
+ methods.each { |name| base.send(:remove_method, name) }
20
+ end
21
+
22
+ module ClassMethods
23
+ def all(params = {})
24
+ get path.build, params
25
+ end
26
+
27
+ def find(resource_id, params = {})
28
+ raise ArgumentError if resource_id.nil?
29
+ get path.build(resource_id), params
30
+ end
31
+
32
+ def create(params = {})
33
+ post path.build, params
34
+ end
35
+
36
+ def update(resource_id, params = {})
37
+ raise ArgumentError if resource_id.nil?
38
+ put path.build(resource_id), params
39
+ end
40
+
41
+ def destroy(resource_id, params = {})
42
+ raise ArgumentError if resource_id.nil?
43
+ delete path.build(resource_id), params
44
+ end
45
+
46
+ def destroy_all(params = {})
47
+ delete path.build, params
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,71 @@
1
+ # Channels
2
+ # Resources related to the channels in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/channels
4
+
5
+ module Veeqo
6
+ class Channel < Resource
7
+ include Veeqo::ResourceActions.new(uri: 'channels/%d', disable: [:destroy_all])
8
+
9
+ property :id
10
+ property :type_code
11
+ property :created_by_id
12
+ property :name
13
+ property :currency_code
14
+ property :state
15
+ property :url
16
+ property :shopify_url
17
+ property :ebay_url
18
+ property :ebay_site_code_id
19
+ property :country
20
+ property :region
21
+ property :city
22
+ property :address_line_1
23
+ property :address_line_2
24
+ property :post_code
25
+ property :pulled_products_at
26
+ property :pulled_orders_at
27
+ property :pending_setup
28
+ property :seller_id
29
+ property :marketplace_id
30
+ property :mws_auth_token
31
+ property :deleted_at
32
+ property :deleted_by_id
33
+ property :api2cart_store_key
34
+ property :bridge_url
35
+ property :bridge_verified
36
+ property :pull_pending_orders
37
+ property :default_send_shipment_email
38
+ property :automatic_product_linking_disabled
39
+ property :update_remote_order
40
+ property :successfully_fetched_stock_levels_at
41
+ property :create_product_if_unmatched
42
+ property :skip_title_matching
43
+ property :email
44
+ property :skip_fba_orders_and_products
45
+ property :pull_stock_level_required
46
+ property :pull_historical_orders
47
+ property :adjust_orders_tax_rate
48
+ property :send_notification_emails_to_customers
49
+ property :end_ebay_listing_on_out_of_stock
50
+ property :update_product_attributes
51
+ property :max_qty_to_advert
52
+ property :min_threshold_qty
53
+ property :percent_of_qty
54
+ property :always_set_qty
55
+ property :veeqo_dictates_stock_level
56
+ property :with_fba
57
+ property :first_sync_finish_notice_marked_as_read
58
+ property :pull_unpaid_shopify_orders
59
+ property :create_product_on_ended_listings
60
+ property :channel_warehouses
61
+ property :warehouses
62
+ property :stock_level_update_requests
63
+ property :channel_specific
64
+ property :time_since_product_sync
65
+ property :time_since_order_sync
66
+ property :time_since_tried_fetch_stock_level
67
+ property :time_since_successfully_fetch_stock_level
68
+ property :default_warehouse
69
+ property :remote
70
+ end
71
+ end
@@ -0,0 +1,22 @@
1
+ # Company
2
+ # Metadata that describes the Company.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/company
4
+
5
+ module Veeqo
6
+ class Company < Resource
7
+ include Veeqo::Request.new 'current_company'
8
+
9
+ property :id
10
+
11
+ def self.info(params = {})
12
+ get path.build, params
13
+ end
14
+
15
+ def self.check_connection
16
+ info
17
+ true
18
+ rescue Veeqo::Unauthorized
19
+ false
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ # customers
2
+ # Resources related to the customers in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/customers
4
+
5
+ module Veeqo
6
+ class Customer < Resource
7
+ include Veeqo::ResourceActions.new(uri: 'customers/%d', disable: [:destroy, :destroy_all])
8
+
9
+ property :id
10
+ property :email
11
+ property :phone
12
+ property :mobile
13
+ property :created_by_id
14
+ property :billing_address
15
+ property :shipping_addresses
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ # DeliveryMethods
2
+ # Resources related to the DeliveryMethods in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/delivery_methods
4
+
5
+ module Veeqo
6
+ class DeliveryMethod < Resource
7
+ include Veeqo::ResourceActions.new(uri: 'delivery_methods/%d', disable: [:destroy_all])
8
+
9
+ property :id
10
+ property :cost
11
+ property :name
12
+ property :user_id
13
+ property :created_at
14
+ property :updated_at
15
+ end
16
+ end
@@ -0,0 +1,51 @@
1
+ # Orders
2
+ # Resources related to the orders in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/orders
4
+
5
+ module Veeqo
6
+ class Order < Resource
7
+ include Veeqo::ResourceActions.new(uri: 'orders/%d', disable: [:destroy, :destroy_all])
8
+
9
+ property :id
10
+ property :allocated_completely
11
+ property :allocations
12
+ property :buyer_user_id
13
+ property :cancel_reason
14
+ property :cancelled_at
15
+ property :cancelled_by
16
+ property :channel
17
+ property :created_at
18
+ property :created_by
19
+ property :customer
20
+ property :customer_note
21
+ property :customer_viewable_notes
22
+ property :deliver_to
23
+ property :delivery_cost
24
+ property :delivery_method
25
+ property :due_date
26
+ property :employee_notes
27
+ property :fulfilled_by_amazon
28
+ property :international
29
+ property :line_items
30
+ property :notes
31
+ property :number
32
+ property :packed_completely
33
+ property :payment
34
+ property :picked_completely
35
+ property :receipt_printed
36
+ property :refund_amount
37
+ property :returns
38
+ property :send_notification_email
39
+ property :send_refund_email
40
+ property :shipped_at
41
+ property :status
42
+ property :subtotal_price
43
+ property :tags
44
+ property :till_id
45
+ property :total_discounts
46
+ property :total_price
47
+ property :total_tax
48
+ property :updated_at
49
+ property :updated_by
50
+ end
51
+ end
@@ -0,0 +1,46 @@
1
+ # Products
2
+ # Resources related to the products in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/products
4
+
5
+ module Veeqo
6
+ class Product < Resource
7
+ include Veeqo::ResourceActions.new uri: 'products/%d'
8
+
9
+ property :id
10
+ property :active_channels
11
+ property :brand
12
+ property :channel_products
13
+ property :created_at
14
+ property :created_by_id
15
+ property :deleted_at
16
+ property :deleted_by_id
17
+ property :description
18
+ property :estimated_delivery
19
+ property :hs_tariff_number
20
+ property :image
21
+ property :inventory
22
+ property :main_image
23
+ property :main_image_src
24
+ property :notes
25
+ property :on_hand_value
26
+ property :origin_country
27
+ property :product_tax_rate_id
28
+ property :sellables
29
+ property :stock_level_sync_status
30
+ property :tags
31
+ property :tax_rate
32
+ property :title
33
+ property :total_allocated_stock_level
34
+ property :total_available_stock_level
35
+ property :total_quantity_sold
36
+ property :total_stock_level
37
+ property :updated_at
38
+ property :updated_by_id
39
+ property :web_meta_description
40
+ property :web_meta_keywords
41
+ property :web_meta_title
42
+ property :web_page_title
43
+ property :web_page_url
44
+ property :weight
45
+ end
46
+ end
@@ -0,0 +1,34 @@
1
+ # PurchaseOrder
2
+ # Resources related to the purchase order in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/purchase_orders
4
+
5
+ module Veeqo
6
+ class PurchaseOrder < Resource
7
+ include Veeqo::ResourceActions.new(uri: 'purchase_orders/%d', disable: [:create, :update, :destroy, :destroy_all])
8
+
9
+ property :id
10
+ property :number
11
+ property :user_id
12
+ property :supplier_id
13
+ property :destination_warehouse_id
14
+ property :state
15
+ property :estimated_delivery_days
16
+ property :actual_delivery_days
17
+ property :estimated_return_days
18
+ property :actual_return_days
19
+ property :started_at
20
+ property :received_at
21
+ property :returned_at
22
+ property :completed_at
23
+ property :started_or_returned_at_calc
24
+ property :arrival_at_calc
25
+ property :total_calc
26
+ property :created_by_id
27
+ property :updated_by_id
28
+ property :created_at
29
+ property :updated_at
30
+ property :send_to_supplier
31
+ property :line_items
32
+ property :supplier
33
+ end
34
+ end
@@ -0,0 +1,10 @@
1
+ require 'veeqo/request'
2
+ require 'veeqo/resource_actions'
3
+ require 'veeqo/subresource_actions'
4
+
5
+ module Veeqo
6
+ class Resource < Hashie::Trash
7
+ include Hashie::Extensions::MethodAccess
8
+ include Hashie::Extensions::IgnoreUndeclared
9
+ end
10
+ end
@@ -0,0 +1,35 @@
1
+ # customers
2
+ # Resources related to the customers in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/customers
4
+
5
+ module Veeqo
6
+ class Supplier < Resource
7
+ include Veeqo::ResourceActions.new(uri: 'suppliers/%d', disable: [:find, :destroy, :destroy_all])
8
+
9
+ property :id
10
+ property :name
11
+ property :address_line_1
12
+ property :address_line_2
13
+ property :city
14
+ property :region
15
+ property :country
16
+ property :post_code
17
+ property :sales_contact_name
18
+ property :sales_contact_email
19
+ property :accounting_contact_name
20
+ property :accounting_contact_email
21
+ property :credit_limit
22
+ property :currency_code
23
+ property :created_by_id
24
+ property :updated_by_id
25
+ property :deleted_at
26
+ property :deleted_by_id
27
+ property :created_at
28
+ property :updated_at
29
+ property :sales_phone_number
30
+ property :accounting_phone_number
31
+ property :bank_account_number
32
+ property :bank_sort_code
33
+ property :bank_name
34
+ end
35
+ end
@@ -0,0 +1,31 @@
1
+ # Warehouses
2
+ # Resources related to the Warehouses in the API.
3
+ # https://developers.veeqo.com/docs/versions/1-0-0-beta/resources/warehouses
4
+
5
+ module Veeqo
6
+ class Warehouse < Resource
7
+ include Veeqo::ResourceActions.new(uri: 'warehouses/%d', disable: [:create, :update, :destroy, :destroy_all])
8
+
9
+ property :id
10
+ property :address_line_1
11
+ property :address_line_2
12
+ property :city
13
+ property :click_and_collect_days
14
+ property :click_and_collect_enabled
15
+ property :country
16
+ property :created_at
17
+ property :created_by_id
18
+ property :default_min_reorder
19
+ property :deleted_at
20
+ property :deleted_by_id
21
+ property :inventory_type_code
22
+ property :name
23
+ property :phone
24
+ property :post_code
25
+ property :region
26
+ property :updated_at
27
+ property :updated_by_id
28
+ property :requested_carrier_account
29
+ property :on_hand_value
30
+ end
31
+ end
@@ -0,0 +1,43 @@
1
+ module Veeqo
2
+ class SubresourceActions < ResourceActions
3
+ def included(base)
4
+ base.send(:include, Request.new(options[:uri]))
5
+ base.extend(ClassMethods)
6
+ options[:disable_methods] ||= []
7
+ methods = ClassMethods.public_instance_methods & options[:disable_methods]
8
+ methods.each { |name| base.send(:remove_method, name) }
9
+ end
10
+
11
+ module ClassMethods
12
+ def all(parent_id, params = {})
13
+ raise ArgumentError if parent_id.nil?
14
+ get path.build(parent_id), params
15
+ end
16
+
17
+ def find(parent_id, resource_id, params = {})
18
+ raise ArgumentError if [parent_id, resource_id].any?(&:nil?)
19
+ get path.build([parent_id, resource_id]), params
20
+ end
21
+
22
+ def create(parent_id, params = {})
23
+ raise ArgumentError if parent_id.nil?
24
+ post path.build(parent_id), params
25
+ end
26
+
27
+ def update(parent_id, resource_id, params = {})
28
+ raise ArgumentError if [parent_id, resource_id].any?(&:nil?)
29
+ put path.build([parent_id, resource_id]), params
30
+ end
31
+
32
+ def destroy(parent_id, resource_id, params = {})
33
+ raise ArgumentError if [parent_id, resource_id].any?(&:nil?)
34
+ delete path.build([parent_id, resource_id]), params
35
+ end
36
+
37
+ def destroy_all(parent_id, params = {})
38
+ raise ArgumentError if parent_id.nil?
39
+ delete path.build(parent_id), params
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,3 @@
1
+ module Veeqo
2
+ VERSION = '0.1.1'.freeze
3
+ end
metadata ADDED
@@ -0,0 +1,177 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: veeqo_api_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Yurkiv Misha
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-17 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: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
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: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
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: rspec-nc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
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: faraday
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.9'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.9'
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.10.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.10.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: hashie
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.4'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.4'
111
+ - !ruby/object:Gem::Dependency
112
+ name: jwt
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.5.4
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.5.4
125
+ description: Ruby client library for the Veeqo API
126
+ email:
127
+ - m.yurkiv@coaxsoft.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - README.md
133
+ - lib/veeqo.rb
134
+ - lib/veeqo/config.rb
135
+ - lib/veeqo/connection.rb
136
+ - lib/veeqo/exception.rb
137
+ - lib/veeqo/middleware/auth.rb
138
+ - lib/veeqo/middleware/http_exception.rb
139
+ - lib/veeqo/request.rb
140
+ - lib/veeqo/resource_actions.rb
141
+ - lib/veeqo/resources/channel.rb
142
+ - lib/veeqo/resources/company.rb
143
+ - lib/veeqo/resources/customer.rb
144
+ - lib/veeqo/resources/delivery_method.rb
145
+ - lib/veeqo/resources/order.rb
146
+ - lib/veeqo/resources/product.rb
147
+ - lib/veeqo/resources/purchase_order.rb
148
+ - lib/veeqo/resources/resource.rb
149
+ - lib/veeqo/resources/supplier.rb
150
+ - lib/veeqo/resources/warehouse.rb
151
+ - lib/veeqo/subresource_actions.rb
152
+ - lib/veeqo/version.rb
153
+ homepage: https://github.com/coaxsoft/veeqo_api_ruby
154
+ licenses:
155
+ - MIT
156
+ metadata: {}
157
+ post_install_message:
158
+ rdoc_options: []
159
+ require_paths:
160
+ - lib
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 2.0.0
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ requirements: []
172
+ rubyforge_project:
173
+ rubygems_version: 2.6.8
174
+ signing_key:
175
+ specification_version: 4
176
+ summary: Ruby client library for the Veeqo API
177
+ test_files: []