http_requests 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d8aea7ee8220161a65e6c9c0ca08f6c4f9224d5a
4
+ data.tar.gz: b6c916f09ff3e03d1204d9aa222ec9db94332444
5
+ SHA512:
6
+ metadata.gz: efcda325be9b37daeb0a8193874a0b499c1e24d6b91c921350dc89bac2e035377c6104acead697caaf2c422e5b4f1f687de08e67263c7abeaa28ab30f8313b30
7
+ data.tar.gz: acfd54141e2e2c38447c598258398746ee13eeaddd0bcc7425fcd53b575f907827e8b87343004111351d393f4cb2ccd2b1b65f487731f06be65c1a765d0e1cfa
data/lib/connection.rb ADDED
@@ -0,0 +1,92 @@
1
+ require 'net/https'
2
+ require 'cgi'
3
+
4
+ class Connection
5
+ attr_accessor :settings
6
+ attr_reader :url
7
+
8
+ def initialize(url, settings = {})
9
+ @started = false
10
+ @http = nil
11
+ @url = url
12
+
13
+ @settings = {
14
+ :header => {},
15
+ :ssl => false,
16
+ :cert => "",
17
+ :read_timeout => 60
18
+ }
19
+ @settings.merge!(settings)
20
+ end
21
+
22
+ def get(options = {})
23
+ default = {
24
+ :end_point => "",
25
+ :header => {},
26
+ :query_str => {}
27
+ }
28
+ options = default.merge(options)
29
+
30
+ url = "#{@url}#{options[:end_point]}"
31
+
32
+ unless options[:query_str].empty?
33
+ url = "#{url}?"
34
+ first = options[:query_str].keys[0]
35
+ url = "#{url}#{first}=#{options[:query_str][first]}"
36
+
37
+ options[:query_str].each_key do |key|
38
+ next if key == first
39
+ url = "#{url}&#{key}=#{options[:query_str][key]}"
40
+ end
41
+ end
42
+
43
+ uri = URI(url)
44
+
45
+ http = @started ? @http : get_http(uri)
46
+ request = Net::HTTP::Get.new(uri.request_uri, @settings[:header].merge(options[:header]))
47
+ http.request(request)
48
+ end
49
+
50
+ def post(options = {})
51
+ default = {
52
+ :end_point => "",
53
+ :header => {},
54
+ :body => nil
55
+ }
56
+ options = default.merge(options)
57
+ uri = URI("#{@url}#{options[:end_point]}")
58
+
59
+ http = @started ? @http : get_http(uri)
60
+ request = Net::HTTP::Post.new(uri.request_uri, @settings[:header].merge(options[:header]))
61
+
62
+ http.request(request, options[:body])
63
+ end
64
+
65
+ def start(uri = nil)
66
+ @started = true
67
+ @http = uri.nil? ? get_http(URI(@url)) : get_http(URI(uri))
68
+ @http.start
69
+ yield
70
+ @http.finish # Close connection after usage
71
+ @started = false
72
+ end
73
+
74
+ private
75
+
76
+ def get_http(uri)
77
+ http = Net::HTTP.new(uri.host, uri.port)
78
+ http.read_timeout = @settings[:read_timeout]
79
+
80
+ if @settings[:ssl]
81
+ http.use_ssl = true
82
+ if @settings[:cert].empty?
83
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
84
+ else
85
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
86
+ http.cs_file = @settings[:cert]
87
+ end
88
+ end
89
+
90
+ return http
91
+ end
92
+ end
@@ -0,0 +1 @@
1
+ %w{connection single_connection}.each { |file| require_relative file }
@@ -0,0 +1,26 @@
1
+ require_relative 'connection'
2
+
3
+ module SingleConnection
4
+ extend self
5
+
6
+ def init(url, settings = {})
7
+ @connection = Connection.new(url, settings)
8
+ end
9
+
10
+ def get_conn_settings
11
+ @connection.settings
12
+ end
13
+
14
+ def get(options = {})
15
+ @connection.get(options)
16
+ end
17
+
18
+ def post(options = {})
19
+ @connection.post(options)
20
+ end
21
+
22
+ def start(uri = nil)
23
+ arg = uri.nil? ? URI(@connection.url) : URI(uri)
24
+ @connection.start(arg) { |connection| yield }
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: http_requests
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Wanderson Silva
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |-
14
+ http_requests is a lib that provides an easy way to create an HTTP or HTTPS
15
+ connection and issue requests to it.
16
+ email: wanderson.olivs@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/connection.rb
22
+ - lib/http_requests.rb
23
+ - lib/single_connection.rb
24
+ homepage: https://github.com/silvawand/wand-ruby-gem-http-requests
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.5.2.1
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: A simple lib that provides easy methods to make HTTP and HTTP requests.
48
+ test_files: []