akeneo 1.6.1 → 1.7.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e1d711b6dceb7720654833651ba5fe4f53e45d1055e5b2fb01755d3955010c8
4
- data.tar.gz: d8e7090e4b4fead27285fd2689ce4e67deaf54616077c8f617d91e76d3d30e80
3
+ metadata.gz: 8cc4f6ecb550de1781121fd9fc162e6f0404d1fe0f02c150a96d834f10711beb
4
+ data.tar.gz: 055dc4d5548ec75f62bf7f806ac4ab35229fa421646c0d92afb180f9ac1bb76e
5
5
  SHA512:
6
- metadata.gz: a956b285ebd5cf98102a8629acbaab8301eace8553c8f6b83ba4f6658bbd410aeb2d3f5a4f5fbba04010a4ea192303dde8bfb6a0638f8acb8ff335b90cf6ac9b
7
- data.tar.gz: cd520b33ddc98b8dfc0fdbabb00302d28b85d29521767f4844d3837e3e3aa816630d17f88da94853bcb070183a7ee230c1c62cc2af7439a9963e035c1ddcd707
6
+ metadata.gz: '08f8ee88b7104485fdbeaa7451079d430cb54eefcb1feda70045eadc4e2371bb63045bac9f0e886e4bb067e13c362336fbfab52a67868d62360a9685eb594eec'
7
+ data.tar.gz: 9d63a9a995ab7ec03e0f117e89a60c647f1a620365c74426908b30824e06bb8f11fd08f7263e1eb95dbed7801e88fed25e5184984b471e2874ebc4bcac24212e
data/Gemfile.lock CHANGED
@@ -2,7 +2,7 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  akeneo (1.6.1)
5
- httparty
5
+ httparty (~> 0.17.0)
6
6
  mime-types
7
7
  redis
8
8
  semantic_logger
data/README.md CHANGED
@@ -19,6 +19,29 @@ client = Akeneo::API.new(
19
19
 
20
20
  client.product(511707)
21
21
  # => {"identifier"=>"511707", "family"=>"simple_product", "parent"=>nil, "groups"=>[]...
22
+
23
+ Some methods with parameters is inside services classes, and be called that way
24
+ client.family_service.all
25
+ # => Returns a Enumeration to list all families
26
+
27
+ client.product_service.create(object)
28
+ # => Returns a JSON with status code relative to what happened
29
+ 201: CREATED
30
+ "{"line":1,"identifier":"bot","status_code":201}"
31
+
32
+ 204: NO CONTENT/UPDATED
33
+ "{"line":1,"identifier":"top","status_code":204}"
34
+
35
+ 422: UNPROCESSABLE ENTITY/ERROR
36
+ In this case, returns message too
37
+ "{"line":1,"identifier":"bot","status_code":422,"message":"Validation failed.","errors":[{"property":"values","message":"The value Top 2 vezes is already set on another product for the unique attribute nome_marketing","attribute":"nome_marketing","locale":null,"scope":null}]}"
38
+ ```
39
+
40
+ Returns options from attribute
41
+ ```
42
+ options = client.attribute_service.options(codigo_do_atributo)
43
+
44
+ options["_embedded"]["items"].map{|a| [a['code'], a['labels']]}
22
45
  ```
23
46
 
24
47
  ## Configuration
data/akeneo.gemspec CHANGED
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'akeneo'
8
- spec.version = '1.6.1'
8
+ spec.version = '1.7.0'
9
9
  spec.authors = ['AWN Dev Team']
10
10
  spec.email = ['edv@awn.de']
11
11
 
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'rspec'
33
33
  spec.add_development_dependency 'rubocop'
34
34
  spec.add_development_dependency 'webmock'
35
- spec.add_dependency 'httparty'
35
+ spec.add_dependency 'httparty', '~> 0.17.0'
36
36
  spec.add_dependency 'mime-types'
37
37
  spec.add_dependency 'redis'
38
38
  spec.add_dependency 'semantic_logger'
@@ -4,12 +4,31 @@ require_relative './service_base.rb'
4
4
 
5
5
  module Akeneo
6
6
  class AttributeService < ServiceBase
7
+ def all
8
+ Enumerator.new do |attributes|
9
+ request_url = "/attributes?#{limit_param}"
10
+
11
+ loop do
12
+ response = get_request(request_url)
13
+ extract_collection_items(response).each { |attribute| attributes << attribute }
14
+ request_url = extract_next_page_path(response)
15
+ break unless request_url
16
+ end
17
+ end
18
+ end
19
+
7
20
  def find(code)
8
21
  response = get_request("/attributes/#{code}")
9
22
 
10
23
  response.parsed_response if response.success?
11
24
  end
12
25
 
26
+ def options(attribute_code)
27
+ response = get_request("/attributes/#{attribute_code}/options")
28
+
29
+ response.parsed_response if response.success?
30
+ end
31
+
13
32
  def option(code, option_code)
14
33
  response = get_request("/attributes/#{code}/options/#{option_code}")
15
34
 
@@ -4,6 +4,19 @@ require_relative './service_base.rb'
4
4
 
5
5
  module Akeneo
6
6
  class CategoryService < ServiceBase
7
+ def all
8
+ Enumerator.new do |categories|
9
+ request_url = "/categories?#{limit_param}"
10
+
11
+ loop do
12
+ response = get_request(request_url)
13
+ extract_collection_items(response).each { |category| categories << category }
14
+ request_url = extract_next_page_path(response)
15
+ break unless request_url
16
+ end
17
+ end
18
+ end
19
+
7
20
  def find(code)
8
21
  response = get_request("/categories/#{code}")
9
22
 
@@ -4,6 +4,19 @@ require_relative './service_base.rb'
4
4
 
5
5
  module Akeneo
6
6
  class FamilyService < ServiceBase
7
+ def all
8
+ Enumerator.new do |families|
9
+ request_url = "/families?#{limit_param}"
10
+
11
+ loop do
12
+ response = get_request(request_url)
13
+ extract_collection_items(response).each { |family| families << family }
14
+ request_url = extract_next_page_path(response)
15
+ break unless request_url
16
+ end
17
+ end
18
+ end
19
+
7
20
  def find(code)
8
21
  response = get_request("/families/#{code}")
9
22
 
@@ -44,6 +44,10 @@ module Akeneo
44
44
  patch_request("/products/#{code}", body: options.to_json)
45
45
  end
46
46
 
47
+ def create_several(product_objects)
48
+ patch_for_collection_request('/products', body: product_objects.to_json)
49
+ end
50
+
47
51
  private
48
52
 
49
53
  def build_path(family, completeness, updated_after)
@@ -37,6 +37,10 @@ module Akeneo
37
37
  { 'Content-Type' => 'application/json' }
38
38
  end
39
39
 
40
+ def akeneo_collection_headers
41
+ { 'Content-Type' => 'application/vnd.akeneo.collection+json' }
42
+ end
43
+
40
44
  def authorization_headers
41
45
  { 'Authorization' => "Bearer #{@access_token}" }
42
46
  end
@@ -45,6 +49,10 @@ module Akeneo
45
49
  authorization_headers.merge(json_headers)
46
50
  end
47
51
 
52
+ def collection_request_headers
53
+ authorization_headers.merge(akeneo_collection_headers)
54
+ end
55
+
48
56
  def get_request(path, options = {})
49
57
  HTTParty.get(
50
58
  "#{@url}/api/rest/v1#{path}",
@@ -59,6 +67,13 @@ module Akeneo
59
67
  )
60
68
  end
61
69
 
70
+ def patch_for_collection_request(path, options = {})
71
+ HTTParty.patch(
72
+ "#{@url}/api/rest/v1#{path}",
73
+ options.merge(headers: collection_request_headers)
74
+ )
75
+ end
76
+
62
77
  def pagination_param
63
78
  "pagination_type=#{DEFAULT_PAGINATION_TYPE}"
64
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akeneo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AWN Dev Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-08 00:00:00.000000000 Z
11
+ date: 2019-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: httparty
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.17.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 0.17.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: mime-types
85
85
  requirement: !ruby/object:Gem::Requirement