plenty_client 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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +43 -0
  5. data/.travis.yml +5 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +154 -0
  10. data/Rakefile +6 -0
  11. data/lib/plenty_client/config.rb +15 -0
  12. data/lib/plenty_client/constants.rb +362 -0
  13. data/lib/plenty_client/endpoint.rb +73 -0
  14. data/lib/plenty_client/item/attribute/name.rb +52 -0
  15. data/lib/plenty_client/item/attribute/value.rb +52 -0
  16. data/lib/plenty_client/item/attribute/value_name.rb +52 -0
  17. data/lib/plenty_client/item/attribute.rb +36 -0
  18. data/lib/plenty_client/item/barcode.rb +56 -0
  19. data/lib/plenty_client/item/cross_selling.rb +26 -0
  20. data/lib/plenty_client/item/image/availability.rb +37 -0
  21. data/lib/plenty_client/item/image/name.rb +57 -0
  22. data/lib/plenty_client/item/image.rb +53 -0
  23. data/lib/plenty_client/item/manufacturer/commission.rb +52 -0
  24. data/lib/plenty_client/item/manufacturer.rb +36 -0
  25. data/lib/plenty_client/item/property/market_reference.rb +52 -0
  26. data/lib/plenty_client/item/property/name.rb +52 -0
  27. data/lib/plenty_client/item/property.rb +36 -0
  28. data/lib/plenty_client/item/property_group.rb +36 -0
  29. data/lib/plenty_client/item/property_group_name.rb +44 -0
  30. data/lib/plenty_client/item/sales_price.rb +37 -0
  31. data/lib/plenty_client/item/shipping_profile.rb +26 -0
  32. data/lib/plenty_client/item/unit.rb +35 -0
  33. data/lib/plenty_client/item/unit_name.rb +38 -0
  34. data/lib/plenty_client/item/variation/barcode.rb +53 -0
  35. data/lib/plenty_client/item/variation/bundle.rb +52 -0
  36. data/lib/plenty_client/item/variation/category.rb +52 -0
  37. data/lib/plenty_client/item/variation/client.rb +37 -0
  38. data/lib/plenty_client/item/variation/default_category.rb +45 -0
  39. data/lib/plenty_client/item/variation/description.rb +53 -0
  40. data/lib/plenty_client/item/variation/image.rb +49 -0
  41. data/lib/plenty_client/item/variation/market.rb +37 -0
  42. data/lib/plenty_client/item/variation/market_ident_number.rb +53 -0
  43. data/lib/plenty_client/item/variation/sales_price.rb +53 -0
  44. data/lib/plenty_client/item/variation/sku.rb +52 -0
  45. data/lib/plenty_client/item/variation/stock.rb +57 -0
  46. data/lib/plenty_client/item/variation/supplier.rb +52 -0
  47. data/lib/plenty_client/item/variation/warehouse.rb +52 -0
  48. data/lib/plenty_client/item/variation.rb +35 -0
  49. data/lib/plenty_client/item/variation_property.rb +36 -0
  50. data/lib/plenty_client/item/variation_property_value.rb +48 -0
  51. data/lib/plenty_client/item.rb +24 -0
  52. data/lib/plenty_client/item_set/component.rb +54 -0
  53. data/lib/plenty_client/item_set/config.rb +20 -0
  54. data/lib/plenty_client/item_set.rb +44 -0
  55. data/lib/plenty_client/order/contact_wish.rb +17 -0
  56. data/lib/plenty_client/order/coupon_code/contact.rb +20 -0
  57. data/lib/plenty_client/order/coupon_code/validation.rb +20 -0
  58. data/lib/plenty_client/order/coupon_code.rb +19 -0
  59. data/lib/plenty_client/order/currency.rb +32 -0
  60. data/lib/plenty_client/order/date.rb +32 -0
  61. data/lib/plenty_client/order/item/date.rb +20 -0
  62. data/lib/plenty_client/order/item/property.rb +20 -0
  63. data/lib/plenty_client/order/item/serial_number.rb +25 -0
  64. data/lib/plenty_client/order/item.rb +18 -0
  65. data/lib/plenty_client/order/property.rb +21 -0
  66. data/lib/plenty_client/order/referrer.rb +22 -0
  67. data/lib/plenty_client/order/shipping/country.rb +18 -0
  68. data/lib/plenty_client/order/shipping/information.rb +45 -0
  69. data/lib/plenty_client/order/shipping/package.rb +54 -0
  70. data/lib/plenty_client/order/shipping/profile.rb +23 -0
  71. data/lib/plenty_client/order/shipping/service_provider.rb +27 -0
  72. data/lib/plenty_client/order/shipping.rb +12 -0
  73. data/lib/plenty_client/order.rb +43 -0
  74. data/lib/plenty_client/request.rb +128 -0
  75. data/lib/plenty_client/sales_price/account.rb +30 -0
  76. data/lib/plenty_client/sales_price/country.rb +26 -0
  77. data/lib/plenty_client/sales_price/currency.rb +26 -0
  78. data/lib/plenty_client/sales_price/customer_class.rb +31 -0
  79. data/lib/plenty_client/sales_price/name.rb +36 -0
  80. data/lib/plenty_client/sales_price/online_store.rb +29 -0
  81. data/lib/plenty_client/sales_price/referrer.rb +25 -0
  82. data/lib/plenty_client/version.rb +3 -0
  83. data/lib/plenty_client.rb +108 -0
  84. data/plenty_client.gemspec +29 -0
  85. metadata +204 -0
@@ -0,0 +1,54 @@
1
+ module PlentyClient
2
+ module Order
3
+ module Shipping
4
+ class Package
5
+ extend PlentyClient::Endpoint
6
+ extend PlentyClient::Request
7
+
8
+ BASE_ORDERS_SHIPPING_PATH = '/orders/{orderId}/shipping'.freeze
9
+
10
+ FIND_ORDERS_SHIPPING_PACKAGE = '/packages/{orderShippingPackageId}'.freeze
11
+ LIST_ORDERS_SHIPPING_PACKAGE = '/packages'.freeze
12
+ CREATE_ORDER_SHIPPING_PACKAGE = '/packages'.freeze
13
+ UPDATE_ORDER_SHIPPING_PACKAGE = '/packages/{orderShippingPackageId}'.freeze
14
+ DELETE_ORDER_SHIPPING_PACKAGE = '/packages/{orderShippingPackageId}'.freeze
15
+ DELETE_ORDER_SHIPPING_PACKAGES = '/packages'.freeze
16
+
17
+ class << self
18
+ def list(order_id, headers = {}, &block)
19
+ get(build_endpoint("#{BASE_ORDERS_SHIPPING_PATH}#{LIST_ORDERS_SHIPPING_PACKAGE}",
20
+ order: order_id), headers, &block)
21
+ end
22
+
23
+ def find(order_id, package_id, headers = {}, &block)
24
+ get(build_endpoint("#{BASE_ORDERS_SHIPPING_PATH}#{FIND_ORDERS_SHIPPING_PACKAGE}",
25
+ order: order_id,
26
+ shipping_package: package_id), headers, &block)
27
+ end
28
+
29
+ def create(order_id, body = {})
30
+ post(build_endpoint("#{BASE_ORDERS_SHIPPING_PATH}#{CREATE_ORDER_SHIPPING_PACKAGE}",
31
+ order: order_id), body)
32
+ end
33
+
34
+ def update(order_id, package_id, body = {})
35
+ put(build_endpoint("#{BASE_ORDERS_SHIPPING_PATH}#{CREATE_ORDER_SHIPPING_PACKAGE}",
36
+ order: order_id,
37
+ shipping_package: package_id), body)
38
+ end
39
+
40
+ def delete(order_id, package_id, body = {})
41
+ delete(build_endpoint("#{BASE_ORDERS_SHIPPING_PATH}#{DELETE_ORDER_SHIPPING_PACKAGE}",
42
+ order: order_id,
43
+ shipping_package: package_id), body)
44
+ end
45
+
46
+ def delete_all(order_id, body = {})
47
+ delete(build_endpoint("#{BASE_ORDERS_SHIPPING_PATH}#{DELETE_ORDER_SHIPPING_PACKAGES}",
48
+ order: order_id), body)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,23 @@
1
+ module PlentyClient
2
+ module Order
3
+ module Shipping
4
+ class Profile
5
+ extend PlentyClient::Endpoint
6
+ extend PlentyClient::Request
7
+
8
+ LIST_SHIPPING_PRESET = '/orders/shipping/presets'.freeze
9
+ FIND_SHIPPING_PRESETS = '/orders/shipping/presets/{presetId}'.freeze
10
+
11
+ class << self
12
+ def list(headers = {}, &block)
13
+ get(build_endpoint(LIST_SHIPPING_PRESET), headers, &block)
14
+ end
15
+
16
+ def find(preset_id, headers = {}, &block)
17
+ get(build_endpoint(FIND_SHIPPING_PRESETS, preset: preset_id), headers, &block)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ module PlentyClient
2
+ module Order
3
+ module Shipping
4
+ class ServiceProvider
5
+ extend PlentyClient::Endpoint
6
+ extend PlentyClient::Request
7
+
8
+ BASE_ORDERS_SHIPPING_SERVICE_PROVIDER_PATH = '/orders/shipping'.freeze
9
+
10
+ LIST_ORDERS_SHIPPING_SERVICE_PROVIDER = '/shipping_service_providers'.freeze
11
+ FIND_ORDER_SHIPPING_SERVICE_PROVIDER = '/shipping_service_providers/{shippingServiceProviderID}'.freeze
12
+
13
+ class << self
14
+ def list(headers = {}, &block)
15
+ get(build_endpoint("#{BASE_ORDERS_SHIPPING_SERVICE_PROVIDER_PATH}#{LIST_ORDERS_SHIPPING_SERVICE_PROVIDER}"),
16
+ headers, &block)
17
+ end
18
+
19
+ def find(service_provider_id, headers = {}, &block)
20
+ get(build_endpoint("#{BASE_ORDERS_SHIPPING_SERVICE_PROVIDER_PATH}#{FIND_ORDER_SHIPPING_SERVICE_PROVIDER}",
21
+ shipping_service_provider: service_provider_id), headers, &block)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,12 @@
1
+ module PlentyClient
2
+ module Order
3
+ module Shipping
4
+ extend PlentyClient::Endpoint
5
+ extend PlentyClient::Request
6
+
7
+ class << self
8
+ end
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,43 @@
1
+ module PlentyClient
2
+ module Order
3
+ extend PlentyClient::Endpoint
4
+ extend PlentyClient::Request
5
+
6
+ CREATE_ORDER = '/orders'.freeze
7
+ LIST_ORDERS = '/orders'.freeze
8
+ FIND_ORDER = '/orders/{orderId}'.freeze
9
+ LIST_CONTACTS_ORDERS = '/orders/contacts/{contactId}'.freeze
10
+ UPDATE_ORDER = '/orders/{orderId}'.freeze
11
+ LIST_ORDERS_PACKAGE_NUMBERS = '/orders/{orderId}/packagenumbers'.freeze
12
+ DELETE_ORDER = '/orders/{orderId}'.freeze
13
+
14
+ class << self
15
+ def create(body = {})
16
+ post(build_endpoint(CREATE_ORDER), body)
17
+ end
18
+
19
+ def list(headers = {}, &block)
20
+ get(build_endpoint(LIST_ORDERS), headers, &block)
21
+ end
22
+
23
+ def list_contacts_orders(contact_id, headers = {}, &block)
24
+ get(build_endpoint(LIST_CONTACTS_ORDERS, contact: contact_id), headers, &block)
25
+ end
26
+ def list_contacts_orders(order_id, headers = {}, &block)
27
+ get(build_endpoint(LIST_ORDERS_PACKAGE_NUMBERS, order: order_id), headers, &block)
28
+ end
29
+
30
+ def find(order_id = nil, headers = {}, &block)
31
+ get(build_endpoint(FIND_ORDER, order: order_id), headers, &block)
32
+ end
33
+
34
+ def update(order_id, body = {})
35
+ put(build_endpoint(UPDATE_ORDER, order: order_id), body)
36
+ end
37
+
38
+ def delete(order_id, body = {})
39
+ delete(build_endpoint(DELETE_ORDER, order: order_id), body)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,128 @@
1
+ require 'curl'
2
+ module PlentyClient
3
+ module Request
4
+ def request(http_method, path, params = {})
5
+ return false if http_method.nil? || path.nil?
6
+ return false unless %w(post put patch delete get).include?(http_method.to_s)
7
+
8
+ login if PlentyClient::Config.access_token.nil?
9
+ start_time = Time.now
10
+ response = perform(http_method, path, params)
11
+ body = parse_body(response, http_method, path, params)
12
+ if PlentyClient::Config.log
13
+ log_output(http_method, base_url(path), params, time_diff_ms(start_time, Time.now))
14
+ end
15
+ body
16
+ end
17
+
18
+ def post(path, body = {})
19
+ request(:post, path, body)
20
+ end
21
+
22
+ def put(path, body = {})
23
+ request(:put, path, body)
24
+ end
25
+
26
+ def patch(path, body = {})
27
+ request(:patch, path, body)
28
+ end
29
+
30
+ def delete(path, body = {})
31
+ request(:delete, path, body)
32
+ end
33
+
34
+ def get(path, params = {}, &block)
35
+ page = 1
36
+ rval_array = []
37
+ if block_given?
38
+ loop do
39
+ response = request(:get, path, params.merge(page: page))
40
+ yield response['entries'] if block_given?
41
+ page += 1
42
+ break if response['isLastPage'] == true
43
+ end
44
+ else
45
+ response = request(:get, path, params.merge(page: page))
46
+ rval_array << rval
47
+ end
48
+ rval_array.flatten
49
+ end
50
+
51
+ private
52
+
53
+ def login
54
+ response = perform(:post, "/login?username=#{PlentyClient::Config.api_user}" \
55
+ "&password=#{PlentyClient::Config.api_password}")
56
+ result = parse_body(response, :post, 'login')
57
+ PlentyClient::Config.access_token = result['accessToken']
58
+ PlentyClient::Config.refresh_token = result['refreshToken']
59
+ end
60
+
61
+ def perform(http_method, path, params = {})
62
+ case http_method.to_s.downcase
63
+ when 'get'
64
+ Curl.get(base_url(path), params) do |curl|
65
+ curl_options(curl)
66
+ end
67
+ when 'post'
68
+ Curl.post(base_url(path), params) do |curl|
69
+ curl_options(curl)
70
+ end
71
+ when 'put'
72
+ Curl.put(base_url(path), params) do |curl|
73
+ curl_options(curl)
74
+ end
75
+ when 'delete'
76
+ Curl.delete(base_url(path), params) do |curl|
77
+ curl_options(curl)
78
+ end
79
+ when 'patch'
80
+ Curl.patch(base_url(path), params) do |curl|
81
+ curl_options(curl)
82
+ end
83
+ end
84
+ end
85
+
86
+ def curl_options(curl)
87
+ curl.headers['Content-type'] = 'application/json'
88
+ unless PlentyClient::Config.access_token.nil?
89
+ curl.headers['Authorization'] = "Bearer #{PlentyClient::Config.access_token}"
90
+ end
91
+ curl.headers['Accept'] = 'application/x.plentymarkets.v1+json'
92
+ curl
93
+ end
94
+
95
+ def base_url(path)
96
+ uri = URI(PlentyClient::Config.site_url)
97
+ url = "#{uri.scheme}://#{uri.host}/rest"
98
+ url += path.start_with?('/') ? path : "/#{path}"
99
+ url
100
+ end
101
+
102
+ def login_required?(path)
103
+ return false if defined?(Rails) && Rails.env == 'testing'
104
+ return true unless path.include?('login')
105
+ false
106
+ end
107
+
108
+ def parse_body(response, http_method, rest_path, params = {})
109
+ result = JSON.parse(response.body)
110
+ raise InvalidResponseException.new(http_method, rest_path, params) if result.nil?
111
+ result
112
+ end
113
+
114
+ def log_output(http_method, path, params, duration)
115
+ puts [Time.now, "#{duration} ms", http_method.upcase, path, params].join(' # ')
116
+ end
117
+
118
+ def time_diff_ms(start, finish)
119
+ ((finish - start) * 1000.0).round(2)
120
+ end
121
+ end
122
+ end
123
+
124
+ class InvalidResponseException < StandardError
125
+ def initialize(http_method, rest_path, params)
126
+ super("The response was null. http_Method: #{http_method}, Path: #{rest_path}, options: #{params}")
127
+ end
128
+ end
@@ -0,0 +1,30 @@
1
+ module PlentyClient
2
+ module SalesPrice
3
+ class Account
4
+ extend PlentyClient::Endpoint
5
+ extend PlentyClient::Request
6
+
7
+
8
+ LIST_REFERRER_ACCOUNTS = '/items/sales_prices/{salesPriceId}/accounts'.freeze
9
+ ACTIVATE_REFERRER_ACCOUNT = '/items/sales_prices/{salesPriceId}/accounts'.freeze
10
+ DEACTIVATE_REFERRER_ACCOUNT = '/items/sales_prices/{salesPriceId}/accounts/{accountType}/{accountId}'.freeze
11
+
12
+ class << self
13
+ def list(sales_price_id, headers = {}, &block)
14
+ get(build_endpoint(LIST_REFERRER_ACCOUNTS, sales_price: sales_price_id), headers, &block)
15
+ end
16
+
17
+ def activate(sales_price_id, headers = {})
18
+ post(build_endpoint(ACTIVATE_REFERRER_ACCOUNT, sales_price: sales_price_id), headers)
19
+ end
20
+
21
+ def deactivate(sales_price_id, account_type_id, account_id)
22
+ delete(build_endpoint(DEACTIVATE_REFERRER_ACCOUNT,
23
+ sales_price: sales_price_id,
24
+ account_type: account_type_id,
25
+ account: account_id))
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ module PlentyClient
2
+ module SalesPrice
3
+ class Country
4
+ extend PlentyClient::Endpoint
5
+ extend PlentyClient::Request
6
+
7
+ LIST_SALES_PRICE_COUNTRIES = '/items/sales_prices/{salesPriceId}/countries'.freeze
8
+ ACTIVATE_SALES_PRICE_COUNTRY = '/items/sales_prices/{salesPriceId}/countries'.freeze
9
+ DEACTIVATE_SALES_PRICE_COUNTRY = '/items/sales_prices/{salesPriceId}/countries/{countryId}'.freeze
10
+
11
+ class << self
12
+ def list(sales_price_id, headers = {}, &block)
13
+ get(build_endpoint(LIST_SALES_PRICE_COUNTRIES, sales_price: sales_price_id), headers, &block)
14
+ end
15
+
16
+ def activate(sales_price_id, headers = {})
17
+ post(build_endpoint(ACTIVATE_SALES_PRICE_COUNTRY, sales_price: sales_price_id), headers)
18
+ end
19
+
20
+ def deactivate(sales_price_id, country_id)
21
+ delete(build_endpoint(DEACTIVATE_SALES_PRICE_COUNTRY, sales_price: sales_price_id, country: country_id))
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module PlentyClient
2
+ module SalesPrice
3
+ class Currency
4
+ extend PlentyClient::Endpoint
5
+ extend PlentyClient::Request
6
+
7
+ LIST_SALES_PRICE_CURRENCIES = '/items/sales_prices/{salesPriceId}/currencies'.freeze
8
+ ACTIVATE_SALES_PRICE_CURRENCY = '/items/sales_prices/{salesPriceId}/currencies'.freeze
9
+ DEACTIVATE_SALES_PRICE_CURRENCY = '/items/sales_prices/{salesPriceId}/currencies/{currencyIso}'.freeze
10
+
11
+ class << self
12
+ def list(sales_price_id, headers = {}, &block)
13
+ get(build_endpoint(LIST_SALES_PRICE_CURRENCIES, sales_price: sales_price_id), headers, &block)
14
+ end
15
+
16
+ def activate(sales_price_id, headers = {})
17
+ post(build_endpoint(ACTIVATE_SALES_PRICE_CURRENCY, sales_price: sales_price_id), headers)
18
+ end
19
+
20
+ def deactivate(sales_price_id, currency_iso)
21
+ delete(build_endpoint(DEACTIVATE_SALES_PRICE_CURRENCY, sales_price: sales_price_id, currency: currency_iso))
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ module PlentyClient
2
+ module SalesPrice
3
+ class CustomerClass
4
+ extend PlentyClient::Endpoint
5
+ extend PlentyClient::Request
6
+
7
+ SALES_PRICE_PATH = '/items/sales_prices/{salesPriceId}'.freeze
8
+ LIST_SALES_PRICE_CUSTOMER_CLASSES = '/customer_classes'.freeze
9
+ ACTIVATE_SALES_PRICE_CUSTOMER_CLASSES = '/customer_classes'.freeze
10
+ DEACTIVATE_SALES_PRICE_CUSTOMER_CLASSES = '/customer_classes/{customerClassId}'.freeze
11
+
12
+ class << self
13
+ def list(sales_price_id, headers = {}, &block)
14
+ get(build_endpoint("#{SALES_PRICE_PATH}#{LIST_SALES_PRICE_CUSTOMER_CLASSES}",
15
+ sales_price: sales_price_id), headers, &block)
16
+ end
17
+
18
+ def activate(sales_price_id, headers = {})
19
+ post(build_endpoint("#{SALES_PRICE_PATH}#{ACTIVATE_SALES_PRICE_CUSTOMER_CLASSES}",
20
+ sales_price: sales_price_id), headers)
21
+ end
22
+
23
+ def deactivate(sales_price_id, customer_class_id)
24
+ delete(build_endpoint("#{SALES_PRICE_PATH}#{DEACTIVATE_SALES_PRICE_CUSTOMER_CLASSES}",
25
+ sales_price: sales_price_id,
26
+ customer_class: customer_class_id))
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,36 @@
1
+ module PlentyClient
2
+ module SalesPrice
3
+ class Name
4
+ extend PlentyClient::Endpoint
5
+ extend PlentyClient::Request
6
+
7
+ LIST_SALES_PRICE_NAMES = '/items/sales_prices/{salesPriceId}/names'.freeze
8
+ GET_SALES_PRICE_NAMES_BY_LANG = '/items/sales_prices/{salesPriceId}/names/{lang}'.freeze
9
+ CREATE_SALES_PRICE_NAME = '/items/sales_prices/{salesPriceId}/names'.freeze
10
+ UPDATE_SALES_PRICE_NAME = '/items/sales_prices/{salesPriceId}/names/{lang}'.freeze
11
+ DELETE_SALES_PRICE_NAME = '/items/sales_prices/{salesPriceId}/names/{lang}'.freeze
12
+
13
+ class << self
14
+ def list(sales_price_id, headers = {}, &block)
15
+ get(build_endpoint(LIST_SALES_PRICE_NAMES, sales_price: sales_price_id), headers, &block)
16
+ end
17
+
18
+ def list_by_lang(sales_price_id, lang, headers = {}, &block)
19
+ get(build_endpoint(GET_SALES_PRICE_NAMES_BY_LANG, sales_price: sales_price_id, lang: lang), headers, &block)
20
+ end
21
+
22
+ def create(sales_price_id, headers = {})
23
+ post(build_endpoint(CREATE_SALES_PRICE_NAME, sales_price: sales_price_id), headers)
24
+ end
25
+
26
+ def update(sales_price_id, lang, headers = {})
27
+ post(build_endpoint(UPDATE_SALES_PRICE_NAME, sales_price: sales_price_id, lang: lang), headers)
28
+ end
29
+
30
+ def delete(sales_price_id, lang, cross_sales_price_id)
31
+ delete(build_endpoint(DELETE_SALES_PRICE_NAME, sales_price: sales_price_id, lang: lang))
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ module PlentyClient
2
+ module SalesPrice
3
+ class OnlineStore
4
+ extend PlentyClient::Endpoint
5
+ extend PlentyClient::Request
6
+
7
+ LIST_SALES_PRICE_ONLINE_STORES = '/items/sales_prices/{salesPriceId}/online_stores'.freeze
8
+ ACTIVATE_SALES_PRICE_ONLINE_STORE = '/items/sales_prices/{salesPriceId}/online_stores'.freeze
9
+ DEACTIVATE_SALES_PRICE_ONLINE_STORE = '/items/sales_prices/{salesPriceId}/online_stores/{webstoreId}'.freeze
10
+
11
+ class << self
12
+ def list(sales_price_id, headers = {}, &block)
13
+ get(build_endpoint(LIST_SALES_PRICE_ONLINE_STORES, sales_price: sales_price_id), headers, &block)
14
+ end
15
+
16
+ def activate(sales_price_id, headers = {})
17
+ post(build_endpoint(ACTIVATE_SALES_PRICE_ONLINE_STORE, sales_price: sales_price_id), headers)
18
+ end
19
+
20
+ def deactivate(sales_price_id, webstore_id)
21
+ delete(build_endpoint(DEACTIVATE_SALES_PRICE_ONLINE_STORE,
22
+ sales_price: sales_price_id,
23
+ webstore: webstore_id))
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
@@ -0,0 +1,25 @@
1
+ module PlentyClient
2
+ module SalesPrice
3
+ class Referrer
4
+ include Endpoint
5
+ LIST_SALES_PRICE_REFERRER = '/items/sales_prices/{salesPriceId}/referrers'.freeze
6
+ ACTIVATE_SALES_PRICE_REFERRER = '/items/sales_prices/{salesPriceId}/referrers'.freeze
7
+ DEACTIVATE_SALES_PRICE_REFERRER = '/items/sales_prices/{salesPriceId}/referrers/{referrerId}'.freeze
8
+
9
+ class << self
10
+ def list(sales_price_id, headers = {}, &block)
11
+ get(build_endpoint(LIST_SALES_PRICE_REFERRER, sales_price: sales_price_id), headers, &block)
12
+ end
13
+
14
+ def activate(sales_price_id, headers = {})
15
+ post(build_endpoint(ACTIVATE_SALES_PRICE_REFERRER, sales_price: sales_price_id), headers)
16
+ end
17
+
18
+ def deactivate(sales_price_id, country_id)
19
+ delete(build_endpoint(DEACTIVATE_SALES_PRICE_REFERRER, sales_price: sales_price_id, country: country_id))
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,3 @@
1
+ module PlentyClient
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,108 @@
1
+ require 'curl'
2
+ require 'json'
3
+
4
+ module PlentyClient
5
+ autoload :Version, 'plenty_client/version'
6
+ autoload :Config, 'plenty_client/config'
7
+ autoload :Endpoint, 'plenty_client/endpoint'
8
+ autoload :Request, 'plenty_client/request'
9
+ autoload :Constants, 'plenty_client/constants'
10
+
11
+ autoload :Item, 'plenty_client/item'
12
+ autoload :Order, 'plenty_client/order'
13
+ autoload :ItemSet, 'plenty_client/item_set'
14
+
15
+ module Item
16
+ autoload :Attribute, 'plenty_client/item/attribute'
17
+ autoload :Barcode, 'plenty_client/item/barcode'
18
+ autoload :CrossSelling, 'plenty_client/item/cross_selling'
19
+ autoload :Image, 'plenty_client/item/image'
20
+ autoload :Manufacturer, 'plenty_client/item/manufacturer'
21
+ autoload :Property, 'plenty_client/item/property'
22
+ autoload :PropertyGroup, 'plenty_client/item/property_group'
23
+ autoload :PropertyGroupName, 'plenty_client/item/property_group_name'
24
+ autoload :SalesPrice, 'plenty_client/item/sales_price'
25
+ autoload :SalesPriceShippingProfile, 'plenty_client/item/sales_price_shipping_profile'
26
+ autoload :Unit, 'plenty_client/item/unit'
27
+ autoload :UnitName, 'plenty_client/item/unit_name'
28
+ autoload :Variation, 'plenty_client/item/variation'
29
+ autoload :VariationProperty, 'plenty_client/item/variation_property'
30
+ autoload :VariationPropertyValue, 'plenty_client/item/variation_property_value'
31
+
32
+ module Attribute
33
+ autoload :Name, 'plenty_client/item/attribute/name'
34
+ autoload :Value, 'plenty_client/item/attribute/value'
35
+ autoload :ValueName, 'plenty_client/item/attribute/value_name'
36
+ end
37
+
38
+ module Image
39
+ autoload :Availability, 'plenty_client/item/image/availability'
40
+ autoload :Name, 'plenty_client/item/attribute/name'
41
+ end
42
+
43
+ module Manufacturer
44
+ autoload :Commission, 'plenty_client/item/image/commission'
45
+ end
46
+
47
+ module Property
48
+ autoload :MarketReference, 'plenty_client/item/property/market_reference'
49
+ autoload :Name, 'plenty_client/item/property/name'
50
+ end
51
+
52
+ module Variation
53
+ autoload :Barcode, 'plenty_client/item/variation/barcode'
54
+ autoload :Bundle, 'plenty_client/item/variation/bundle'
55
+ autoload :Category, 'plenty_client/item/variation/category'
56
+ autoload :Client, 'plenty_client/item/variation/client'
57
+ autoload :DefaultCategory, 'plenty_client/item/variation/default_category'
58
+ autoload :Description, 'plenty_client/item/variation/description'
59
+ autoload :Image, 'plenty_client/item/variation/image'
60
+ autoload :Market, 'plenty_client/item/variation/market'
61
+ autoload :MarketIdentNumber, 'plenty_client/item/variation/market_ident_number'
62
+ autoload :SalesPrice, 'plenty_client/item/variation/sales_price'
63
+ autoload :Sku, 'plenty_client/item/variation/sku'
64
+ autoload :Stock, 'plenty_client/item/variation/stock'
65
+ autoload :Supplier, 'plenty_client/item/variation/supplier'
66
+ autoload :Warehouse, 'plenty_client/item/variation/warehouse'
67
+ end
68
+ end
69
+
70
+ module ItemSet
71
+ autoload :Component, 'plenty_client/item_set/component'
72
+ autoload :Config, 'plenty_client/item_set/config'
73
+ end
74
+
75
+ module Order
76
+ autoload :CouponCode, 'plenty_client/order/coupon_code'
77
+ autoload :Currency, 'plenty_client/order/currency'
78
+ autoload :Date, 'plenty_client/order/date'
79
+ autoload :Item, 'plenty_client/order/item'
80
+ autoload :Property, 'plenty_client/order/property'
81
+ autoload :Referrer, 'plenty_client/order/referrer'
82
+ autoload :Shipping, 'plenty_client/order/shipping'
83
+
84
+ module Item
85
+ autoload :Date, 'plenty_client/order/item/date'
86
+ autoload :Property, 'plenty_client/order/item/property'
87
+ autoload :SerialNumber, 'plenty_client/order/item/serial_number'
88
+ end
89
+
90
+ module Shipping
91
+ autoload :Country, 'plenty_client/order/shipping/country'
92
+ autoload :Information, 'plenty_client/order/shipping/information'
93
+ autoload :Package, 'plenty_client/order/shipping/package'
94
+ autoload :Profile, 'plenty_client/order/shipping/profile'
95
+ autoload :ServiceProvider, 'plenty_client/order/shipping/service_provider'
96
+ end
97
+ end
98
+
99
+ module SalesPrice
100
+ autoload :Account, 'plenty_client/sales_price/account'
101
+ autoload :Country, 'plenty_client/sales_price/country'
102
+ autoload :Currency, 'plenty_client/sales_price/currency'
103
+ autoload :CustomerClass, 'plenty_client/sales_price/customer_class'
104
+ autoload :Name, 'plenty_client/sales_price/name'
105
+ autoload :OnlineStore, 'plenty_client/sales_price/online_store'
106
+ autoload :Referrer, 'plenty_client/sales_price/referrer'
107
+ end
108
+ end
@@ -0,0 +1,29 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'plenty_client/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'plenty_client'
7
+ spec.version = PlentyClient::VERSION
8
+ spec.authors = ['Dariusch Ochlast']
9
+ spec.email = ['dariusch.ochlast@gmail.com']
10
+
11
+ spec.summary = 'This is Version 1 of the PlentyMarkets Rest Client for Ruby.'
12
+ spec.description = 'This Client is a wrapper arount the PlentyMarkets REST API providing simple classes to interact.'
13
+ spec.homepage = 'https://github.com/Dariusch/plenty_client'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = 'exe'
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ['lib']
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.13'
24
+ spec.add_development_dependency 'rake', '~> 10.0'
25
+ spec.add_development_dependency 'rspec', '~> 3.0'
26
+
27
+ spec.add_dependency 'json', '~> 1.8', '>= 1.8.0'
28
+ spec.add_dependency 'curb', '~> 0.9.3'
29
+ end