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 +7 -0
- data/lib/http_utility.rb +47 -0
- data/lib/http_utility/version.rb +3 -0
- data/test/test_http_utility.rb +19 -0
- metadata +89 -0
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
|
data/lib/http_utility.rb
ADDED
@@ -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,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: []
|