yarh 0.1.4 → 0.1.5

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: 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