yarh 0.1.1 → 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: 03207b39739707471d6e51b4e4847828fcfa620f5c38324501cf4d7c9fedf375
4
- data.tar.gz: 3847b24c4ee1079120922dce424fb92c4c78b0b935f6a28b5ede2ff57da30dd6
3
+ metadata.gz: be06fa99910b08969531006fb8437dd82770a62fdd4d7d428d9d10599c33786e
4
+ data.tar.gz: 9ced27dcff33621e24ac55aa181af3cadfbbcd32255c3184ac2e73bf44dbecfa
5
5
  SHA512:
6
- metadata.gz: ff23bb92c5328df2285c671dfaae2a0ce6f2ec90dd653f689cd49a5dbe344e0458aa1d674444902a5a1824ee023b12c4dac08b0fc667d3f857bcaf37b13baf6c
7
- data.tar.gz: b7618087236e750b222627064a0b73c3d690c0ce52f41e9040fe696eb835a35510b8b78b70bce976f32cf687467ad8321ba423c4fd29af2bfc3b373b7500c64e
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.1'
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.1
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,15 +24,34 @@ 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
- executables: []
43
+ executables:
44
+ - yarh
30
45
  extensions: []
31
46
  extra_rdoc_files: []
32
47
  files:
33
48
  - exe/yarh
34
49
  - lib/yarh.rb
50
+ - lib/yarh/cli.rb
51
+ - lib/yarh/request_builder.rb
52
+ - lib/yarh/request_runner.rb
35
53
  - lib/yarh/version.rb
54
+ - lib/yarh/yaml_parser.rb
36
55
  homepage: https://github.com/leonovk/yarh
37
56
  licenses:
38
57
  - MIT