http_utility 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []