akeneo 1.2.0 → 1.3.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: 2587eb09691ebb7e543ef907edfc47c4296b62fe3c2c84654bb1316723f116c2
4
- data.tar.gz: 04df15b3d09324a723e656a55b4e6843ec5fcf45a0a0ce9eb3fc3a53bfc604cb
3
+ metadata.gz: 9f33e2c01c30f133a7a579f0f25bd8e2480cf395becaa2f579388fda468f521b
4
+ data.tar.gz: 1f12002433db6e9e192dd7b531c7d3049e2b11bbbbd1fd7bcf72b213b1f05017
5
5
  SHA512:
6
- metadata.gz: fd5db20c91e190e41fbb52136e93dbf5810e990284b525269d0075d3c38fe36f3508083ac9cdd3b55747a5e4c76b7f78e0eae3a69ecd8c59a2198b1e34c253e0
7
- data.tar.gz: deb5f602b4c0c3366d3e27dae7cdb0ce2505f56239e92216183fbf3a108ad883e8db100445e9ccfcdfdfa43ac07e38818929cb74055d875e189a85ed4109fa23
6
+ metadata.gz: c13cb2bdce4e8f4312b5e000e04ec9d3867e728301583245f2c6539a6c1eb1f297f642ae142b0c77a2f23b4fe29ce244d2ebff26b18c030184a6dad58842fdf1
7
+ data.tar.gz: 36065cd2c7051728716caa913dfb8369cfc4db7c5c446e5666ef6dc3b56b7014194958fe688b577d9cb51a9c82364d9571ff21a101242f7572eb761482a26a14
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
10
11
 
11
12
  # rspec failure tracking
12
13
  .rspec_status
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- akeneo (1.1.0)
4
+ akeneo (1.2.0)
5
5
  httparty
6
6
  redis
7
7
  semantic_logger
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.2.0'
8
+ spec.version = '1.3.0'
9
9
  spec.authors = ['AWN Dev Team']
10
10
  spec.email = ['edv@awn.de']
11
11
 
data/lib/akeneo/api.rb CHANGED
@@ -48,6 +48,12 @@ module Akeneo
48
48
  image_service.find(code)
49
49
  end
50
50
 
51
+ def upload_image(code:, file:, filename:, options: {})
52
+ locale = options.delete(:locale) || 'no-locale'
53
+ image_service.create_asset(code, options)
54
+ image_service.create_reference(code, locale, file, filename)
55
+ end
56
+
51
57
  def download_image(code)
52
58
  image_service.download(code)
53
59
  end
@@ -1,12 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'base64'
4
- require 'stringio'
4
+ require 'json'
5
+ require 'mime/types'
6
+ require 'net/http'
7
+ require 'uri'
5
8
 
6
9
  require_relative './service_base.rb'
7
10
 
8
11
  module Akeneo
9
12
  class ImageService < ServiceBase
13
+ BOUNDARY = 'AwesomeBoundary'
14
+
10
15
  def find(code)
11
16
  response = get_request("/assets/#{code}")
12
17
 
@@ -17,8 +22,49 @@ module Akeneo
17
22
  download_request(code)
18
23
  end
19
24
 
25
+ def create_asset(code, options = {})
26
+ body = { code: code }.merge(options)
27
+ post_request('/assets', body.to_json)
28
+ end
29
+
30
+ def create_reference(code, locale, file, filename)
31
+ uri = reference_uri(code, locale)
32
+ http = Net::HTTP.new(uri.host, uri.port)
33
+ http.use_ssl = true
34
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
35
+ request = Net::HTTP::Post.new(uri.request_uri, reference_header)
36
+ request.body = reference_body(file, filename)
37
+ http.request(request)
38
+ end
39
+
20
40
  private
21
41
 
42
+ def reference_header
43
+ authorization_headers.merge("Content-Type": "multipart/form-data; boundary=#{BOUNDARY}")
44
+ end
45
+
46
+ def reference_body(file, filename)
47
+ body = []
48
+ body << "--#{BOUNDARY}\r\n"
49
+ body << "Content-Disposition: form-data; name=\"file\"; filename=\"#{filename}\"\r\n"
50
+ body << "Content-Type: #{MIME::Types.type_for(filename)}\r\n\r\n"
51
+ body << file
52
+ body << "\r\n\r\n--#{BOUNDARY}--\r\n"
53
+ body.join
54
+ end
55
+
56
+ def reference_uri(code, locale)
57
+ URI.parse("#{@url}/api/rest/v1/assets/#{code}/reference-files/#{locale}")
58
+ end
59
+
60
+ def post_request(path, body)
61
+ HTTParty.post(
62
+ "#{@url}/api/rest/v1#{path}",
63
+ headers: default_request_headers,
64
+ body: body
65
+ )
66
+ end
67
+
22
68
  def download_request(code)
23
69
  response = get_request("/assets/#{code}/reference-files/no-locale/download")
24
70
 
@@ -23,8 +23,12 @@ module Akeneo
23
23
  { 'Content-Type' => 'application/json' }
24
24
  end
25
25
 
26
+ def authorization_headers
27
+ { 'Authorization' => "Bearer #{@access_token}" }
28
+ end
29
+
26
30
  def default_request_headers
27
- { 'Authorization' => "Bearer #{@access_token}" }.merge(json_headers)
31
+ authorization_headers.merge(json_headers)
28
32
  end
29
33
 
30
34
  def get_request(path, options = {})
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.2.0
4
+ version: 1.3.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-01-09 00:00:00.000000000 Z
11
+ date: 2019-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake