yarh 0.1.4 → 0.1.5

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: 230590cd46a0d3c0a79928ad65f90a980ff736e25ab71be810f0e525de707263
4
- data.tar.gz: 186debbf786606aec63b311290a2c605102a178a275d406182901aabfabdc1a2
3
+ metadata.gz: ccc0f9e05c055b534d819db730c43b205e5cbf7ce29335b56cfffd30b22a762d
4
+ data.tar.gz: 8e186cd5a51ef030e034356e2f05c5409bdb37c76a7127602daae0bdc2d1ecdc
5
5
  SHA512:
6
- metadata.gz: a7760c56390192b0076fc1edc1ca62d66b21f5b75e304d9d3dbd25a6e82d9d0a5bd8a9c7dff01c25bf1fc8e79d956c2437281893137336655109a3b3f583b3a9
7
- data.tar.gz: 7f71b503a8958a6cba8b0b1adfc11cd581c3f3b03bcd7d3e9a4cdb3eb38219b31840bb74778cc67181579603058b0ccf7af75f8d10f3826148215142df47d259
6
+ metadata.gz: 714c8cfc0a05190ca5fe32ec686a8f40939f6a8d6c3df42acb832fd2ab2c52af84fbefae1dcb7c3a5af59676258f32dc377a2c671663e3dbbf4e353874903293
7
+ data.tar.gz: e5c4df5ffca9162840c87c7c96dfc954be513827049e3aa804ad51357f45916a85471629270001e874b66dc696e384fa0904087f582abf595788994adcd1312d
data/lib/yarh/cli.rb CHANGED
@@ -13,7 +13,7 @@ module Yarh
13
13
 
14
14
  desc '-r PATH', 'execute requests from file'
15
15
  def run_requests(path)
16
- Yarh.run_requests(path)
16
+ puts Yarh.run_requests(path)
17
17
  end
18
18
 
19
19
  desc 'version', 'show Yarh version'
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'faraday/multipart'
5
+
6
+ module Yarh
7
+ # Class for creating request bodies
8
+ class RequestBody
9
+ def initialize(body)
10
+ @body_data = body
11
+ @result_body = {}
12
+ end
13
+
14
+ def create
15
+ body_data.each do |key, value|
16
+ if value.is_a?(Hash)
17
+ prepare_value(key, value)
18
+ else
19
+ @result_body[key] = value
20
+ end
21
+ end
22
+
23
+ @result_body
24
+ end
25
+
26
+ private
27
+
28
+ attr_reader :body_data
29
+
30
+ # NOTE: Currently the method is used for parsing files
31
+ def prepare_value(key, value)
32
+ if value['path'] and value['file_type']
33
+ file = Faraday::UploadIO.new(value['path'], value['file_type'])
34
+ @result_body[key] = file
35
+ else
36
+ @result_body[key] = value
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'faraday'
4
+ require 'faraday/multipart'
4
5
  require 'json'
5
6
  require_relative 'errors/wrong_data_error'
7
+ require_relative 'request_body'
6
8
 
7
9
  module Yarh
8
10
  # Сlass builds a request from hash parameters and executes the request
@@ -15,17 +17,29 @@ module Yarh
15
17
  end
16
18
 
17
19
  def request
18
- raise Errors::WrongDataError if method.nil? || url.nil?
20
+ validate_before_request
19
21
 
20
- conn = Faraday.new(url: url)
21
-
22
- @response = send_request(conn)
22
+ @response = send_request(build_conncetion)
23
23
  end
24
24
 
25
25
  private
26
26
 
27
27
  attr_reader :data
28
28
 
29
+ def validate_before_request
30
+ raise Errors::WrongDataError if method.nil? or url.nil?
31
+ end
32
+
33
+ def build_conncetion
34
+ if multipart?
35
+ Faraday.new(url: url) do |request|
36
+ request.request :multipart
37
+ end
38
+ else
39
+ Faraday.new(url: url)
40
+ end
41
+ end
42
+
29
43
  def send_request(faraday_connection)
30
44
  faraday_connection.send(method) do |req|
31
45
  build_headers(req, data['headers'])
@@ -35,33 +49,25 @@ module Yarh
35
49
  end
36
50
  end
37
51
 
38
- def method
39
- return unless data['method']
40
-
41
- data['method'].downcase.to_sym
42
- end
43
-
44
- def url
45
- data['url']
46
- end
52
+ # TODO: optimize this method in the future
53
+ def body
54
+ return @body unless @body.nil?
55
+ return unless data['body']
47
56
 
48
- def params
49
- data['params']
50
- end
57
+ body = RequestBody.new(data['body']).create
51
58
 
52
- def timeout
53
- data['timeout']
59
+ @body = if application_json?
60
+ body.to_json
61
+ else
62
+ body
63
+ end
54
64
  end
55
65
 
56
- # TODO: optimize this method in the future
57
- def body
58
- return unless data['body']
66
+ def multipart?
67
+ return false unless data['headers']
68
+ return false unless data['headers']['Content-Type']
59
69
 
60
- if application_json?
61
- data['body'].to_json
62
- else
63
- data['body']
64
- end
70
+ data['headers']['Content-Type'] == 'multipart/form-data'
65
71
  end
66
72
 
67
73
  def application_json?
@@ -82,5 +88,23 @@ module Yarh
82
88
  def stringify_keys(data)
83
89
  data.is_a?(Hash) ? data.to_h { |k, v| [k.to_s, stringify_keys(v)] } : data
84
90
  end
91
+
92
+ def method
93
+ return unless data['method']
94
+
95
+ data['method'].downcase.to_sym
96
+ end
97
+
98
+ def url
99
+ data['url']
100
+ end
101
+
102
+ def params
103
+ data['params']
104
+ end
105
+
106
+ def timeout
107
+ data['timeout']
108
+ end
85
109
  end
86
110
  end
data/lib/yarh/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yarh
4
- VERSION = '0.1.4'
4
+ VERSION = '0.1.5'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yarh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirill Leonov
@@ -24,6 +24,26 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday-multipart
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.0.4
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.0.4
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: thor
29
49
  requirement: !ruby/object:Gem::Requirement
@@ -50,6 +70,7 @@ files:
50
70
  - lib/yarh/cli.rb
51
71
  - lib/yarh/errors/base_error.rb
52
72
  - lib/yarh/errors/wrong_data_error.rb
73
+ - lib/yarh/request_body.rb
53
74
  - lib/yarh/request_builder.rb
54
75
  - lib/yarh/request_runner.rb
55
76
  - lib/yarh/version.rb