http_utility 0.0.1

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: 1b3a39d1202712713e7136bd31195008f0823378
4
+ data.tar.gz: ac658b9a8c8d2dc76337ce8226c08afc572d159f
5
+ SHA512:
6
+ metadata.gz: b68b96341fd5f22e346197c6b217940b554ba610934fb3c2075eb9f904065d1bb29a8e4a0ec30ae5c071d49818c23a4f7252e5bf46b032b65717f5121992a9fe
7
+ data.tar.gz: 766cf7abbce187ebc7c97ce63a5705f3bdd2c1df5ceb1a1aadb2352b837c577f558d763f4f84498d7ba8177ed0db5c34c2b4bda41054455d5fc59f57c2131751
@@ -0,0 +1,47 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'http_utility/constants'
4
+
5
+ class HttpUtility
6
+ attr_accessor :protocol, :host, :status, :body
7
+
8
+ def initialize(protocol, host)
9
+ @protocol = protocol || Constants::HTTP_PROTOCOL
10
+ @host = host
11
+ end
12
+
13
+ def get_response(route = nil, params = {})
14
+ uri = get_uri(route)
15
+ uri.query = URI.encode_www_form(params)
16
+ req = Net::HTTP::Get.new(uri)
17
+ http_response(uri, req)
18
+ end
19
+
20
+ def post_response(route = '/', params = {}, headers = [])
21
+ uri = get_uri(route)
22
+ if headers.select do |header|
23
+ header[:key].casecmp(Constants::CONTENT_TYPE_KEY) && header[:value].casecmp(Constants::CONTENT_TYPE_FORM_URLENCODED)
24
+ end
25
+ uri.query = URI.encode_www_form(params)
26
+ req = Net::HTTP::Post.new(uri)
27
+ elsif headers.select do |header|
28
+ header[:key].casecmp(Constants::HEADER_CONTENT_TYPE_KEY) && header[:value].casecmp(Constants::CONTENT_TYPE_JSON)
29
+ end
30
+ req = Net::HTTP::Post.new(uri)
31
+ req.body = params.to_json
32
+ else
33
+ req = Net::HTTP::Post.new(uri)
34
+ end
35
+ headers.each { |header| req[header[:key]] = header[:value] }
36
+ http_response(uri, req)
37
+ end
38
+
39
+ def get_uri(route)
40
+ route ? URI("#{@protocol}#{@host}/#{route}") : URI("#{@protocol}#{@host}")
41
+ end
42
+
43
+ def http_response(uri, req)
44
+ return unless uri.hostname && uri.port
45
+ Net::HTTP.start(uri.hostname, uri.port) { |http| http.request(req) }
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ module HttpUtility
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,19 @@
1
+ require 'minitest/autorun'
2
+ require 'http_utility'
3
+
4
+ class TestHttpUtility < MiniTest::Test
5
+ HOST = 'www.wikipedia.org'
6
+ PROTOCOL = 'http://'
7
+ GET_ROUTE = nil
8
+
9
+ def setup
10
+ @requester = HttpUtility.new(PROTOCOL, HOST)
11
+ end
12
+
13
+ def test_get_request
14
+ get_response = @requester.get_response(GET_ROUTE)
15
+ valid_code = get_response.code.to_i >= 200 && get_response.code.to_i < 400
16
+ assert_equal(true, valid_code)
17
+ assert_equal(false, get_response.body.nil?)
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: http_utility
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Joshua Wilkosz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-09-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: This class removes repetitive code
56
+ email:
57
+ - joshua@wilkosz.com.au
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/http_utility.rb
63
+ - lib/http_utility/version.rb
64
+ - test/test_http_utility.rb
65
+ homepage: http://rubygems.org/gems/http_utility
66
+ licenses:
67
+ - MIT
68
+ metadata: {}
69
+ post_install_message:
70
+ rdoc_options: []
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ requirements: []
84
+ rubyforge_project:
85
+ rubygems_version: 2.6.12
86
+ signing_key:
87
+ specification_version: 4
88
+ summary: Http utility for Net::HTTP POST and GET requests
89
+ test_files: []