akeneo 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
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