yarh 0.1.2 → 0.1.3

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: a97da72277418b174a46577325c63c3c301082a967c057fea0610469d526892d
4
- data.tar.gz: f4789d638553b9d778b5259d9b8ec073a2c44f46d20c1753831db91802f14336
3
+ metadata.gz: be06fa99910b08969531006fb8437dd82770a62fdd4d7d428d9d10599c33786e
4
+ data.tar.gz: 9ced27dcff33621e24ac55aa181af3cadfbbcd32255c3184ac2e73bf44dbecfa
5
5
  SHA512:
6
- metadata.gz: ff9fca30ecbbe6e45550cf623f27aec67d0341f1cc0858d59557f7b012f2acef9732224223ee0af92a9f2b98814b2b816dc5c2974bc6e210d23334b57de30444
7
- data.tar.gz: 24959a53e848687b803959a009fd44b6f6660ec041d0483695443af3245b2668df7bc86ee2f6fb1f306668826d49b78dc5dd26e5cddbe4d5ef8a788cf0ad82b4
6
+ metadata.gz: c6e28d50e58caadd9fe64e15f20fa4d001648af8c8bfebd200f0361c163032774171997060af51a8c6b3f0970c0450dfdc1e4d08d6e8acd51eb70f4a9748fc11
7
+ data.tar.gz: 78f9bf12359dde945a9dcb969224a5321020a43cddaa07bdae549d3cb870d77cbc6a08212f4028c31bbc20302dff49a1cae9980db7a9dcaa56d1e1057bcc54ae
data/exe/yarh CHANGED
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative '../lib/yarh'
4
+ require_relative '../lib/yarh/cli'
5
5
 
6
- test_result = Yarh.hello
7
-
8
- puts test_result
6
+ Yarh::CLI.start(ARGV)
data/lib/yarh/cli.rb ADDED
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ require_relative 'version'
5
+ require_relative '../yarh'
6
+
7
+ module Yarh
8
+ # CLI
9
+ class CLI < Thor
10
+ package_name 'Yarh'
11
+ map '-v' => :version
12
+ map '-r' => :run_requests
13
+
14
+ desc '-r PATH', 'execute requests from file'
15
+ def run_requests(path)
16
+ Yarh.run_requests(path)
17
+ end
18
+
19
+ desc 'version', 'show Yarh version'
20
+ def version
21
+ puts "Yarh #{Yarh::VERSION}"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'json'
5
+
6
+ module Yarh
7
+ # RequestBuilder
8
+ class RequestBuilder
9
+ attr_reader :response
10
+
11
+ def initialize(data)
12
+ @data = data
13
+ @response = nil
14
+ end
15
+
16
+ def request
17
+ conn = Faraday.new(url: data['url'])
18
+
19
+ response = conn.send(data['method'].downcase.to_sym) do |req|
20
+ build_headers(req, data['headers'])
21
+ req.body = data['body'].to_json
22
+ end
23
+
24
+ @response = response
25
+ end
26
+
27
+ private
28
+
29
+ attr_reader :data
30
+
31
+ def build_headers(req, headers)
32
+ headers.each do |header, value|
33
+ req.headers[header] = value
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'yaml_parser'
4
+ require_relative 'request_builder'
5
+
6
+ module Yarh
7
+ # request run
8
+ class RequestRunner
9
+ attr_accessor :path
10
+
11
+ def initialize(path)
12
+ @path = path
13
+ end
14
+
15
+ def run
16
+ parsed_yaml.each_value do |data|
17
+ request = RequestBuilder.new(data)
18
+ request.request
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def parsed_yaml
25
+ @parsed_yaml ||= YamlParser.parse(path)
26
+ end
27
+ end
28
+ 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.2'
4
+ VERSION = '0.1.3'
5
5
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module Yarh
6
+ # The main parser of Yaml files, uses psych under the hood
7
+ class YamlParser
8
+ def self.parse(file_path)
9
+ YAML.safe_load_file(file_path)
10
+ end
11
+ end
12
+ end
data/lib/yarh.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'yarh/request_runner'
4
+
3
5
  # main module
4
6
  module Yarh
5
- def self.hello
6
- 'hello'
7
+ def self.run_requests(path)
8
+ runner = RequestRunner.new(path)
9
+ runner.run
7
10
  end
8
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yarh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirill Leonov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-05 00:00:00.000000000 Z
11
+ date: 2024-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -24,7 +24,21 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.9'
27
- description: Yet Another Request Handler
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ description: Create specifications for HTTP requests without a single line of code
28
42
  email: leonov7632@gmail.com
29
43
  executables:
30
44
  - yarh
@@ -33,7 +47,11 @@ extra_rdoc_files: []
33
47
  files:
34
48
  - exe/yarh
35
49
  - lib/yarh.rb
50
+ - lib/yarh/cli.rb
51
+ - lib/yarh/request_builder.rb
52
+ - lib/yarh/request_runner.rb
36
53
  - lib/yarh/version.rb
54
+ - lib/yarh/yaml_parser.rb
37
55
  homepage: https://github.com/leonovk/yarh
38
56
  licenses:
39
57
  - MIT