Comparing changes
v0.1.5
→
v0.1.6
5 commits
5 files changed
Commits
Changed files (5)
lib
net
hippie
test
net
lib/net/hippie/api.rb
@@ -0,0 +1,27 @@
+module Net
+ module Hippie
+ # A no nonsense class to perform HTTP requests.
+ class Api
+ attr_reader :uri, :verify_mode
+
+ def initialize(url, verify_none: false)
+ @uri = URI.parse(url)
+ @verify_mode = OpenSSL::SSL::VERIFY_NONE if verify_none
+ end
+
+ def get
+ client.get(uri).body
+ end
+
+ def execute(request)
+ client.execute(uri, request)
+ end
+
+ private
+
+ def client
+ @client ||= Client.new(headers: {}, verify_mode: verify_mode)
+ end
+ end
+ end
+end
lib/net/hippie/client.rb
@@ -8,27 +8,25 @@ module Net
'User-Agent' => "net/hippie #{Net::Hippie::VERSION}"
}.freeze
+ attr_accessor :mapper
+
def initialize(
certificate: nil,
headers: DEFAULT_HEADERS,
key: nil,
- mapper: JsonMapper.new,
- passphrase: nil
+ passphrase: nil,
+ verify_mode: nil
)
@certificate = certificate
@default_headers = headers
@key = key
- @mapper = mapper
+ @mapper = JsonMapper.new
@passphrase = passphrase
+ @verify_mode = verify_mode
end
def execute(uri, request)
- http_for(uri).request(request)
- end
-
- def get(uri, headers: {}, body: {})
- request = request_for(Net::HTTP::Get, uri, headers: headers, body: body)
- response = execute(uri, request)
+ response = http_for(normalize_uri(uri)).request(request)
if block_given?
yield request, response
else
@@ -36,38 +34,33 @@ module Net
end
end
- def post(uri, headers: {}, body: {})
+ def get(uri, headers: {}, body: {}, &block)
+ request = request_for(Net::HTTP::Get, uri, headers: headers, body: body)
+ execute(uri, request, &block)
+ end
+
+ def post(uri, headers: {}, body: {}, &block)
type = Net::HTTP::Post
request = request_for(type, uri, headers: headers, body: body)
- response = execute(uri, request)
- if block_given?
- yield request, response
- else
- response
- end
+ execute(uri, request, &block)
end
- def put(uri, headers: {}, body: {})
+ def put(uri, headers: {}, body: {}, &block)
request = request_for(Net::HTTP::Put, uri, headers: headers, body: body)
- response = execute(uri, request)
- if block_given?
- yield request, response
- else
- response
- end
+ execute(uri, request, &block)
end
private
attr_reader :default_headers
+ attr_reader :verify_mode
attr_reader :certificate, :key, :passphrase
- attr_reader :mapper
def http_for(uri)
- uri = normalize_uri(uri)
http = Net::HTTP.new(uri.host, uri.port)
http.read_timeout = 30
http.use_ssl = uri.is_a?(URI::HTTPS)
+ http.verify_mode = verify_mode
http.set_debug_output(Net::Hippie.logger)
if certificate && key
http.cert = OpenSSL::X509::Certificate.new(certificate) if certificate
lib/net/hippie/version.rb
@@ -1,5 +1,5 @@
module Net
module Hippie
- VERSION = '0.1.5'.freeze
+ VERSION = '0.1.6'.freeze
end
end
lib/net/hippie.rb
@@ -6,6 +6,7 @@ require 'openssl'
require 'net/hippie/version'
require 'net/hippie/json_mapper'
require 'net/hippie/client'
+require 'net/hippie/api'
module Net
# net/http for hippies.
test/net/api_test.rb
@@ -0,0 +1,23 @@
+require 'test_helper'
+
+class ApiTest < Minitest::Test
+ def test_get
+ VCR.use_cassette('get_breaches') do
+ subject = Net::Hippie::Api.new('https://haveibeenpwned.com/api/breaches')
+ response = subject.get
+ refute_nil response
+ assert_equal(283, JSON.parse(response).count)
+ end
+ end
+
+ def test_execute
+ VCR.use_cassette('get_breaches') do
+ subject = Net::Hippie::Api.new('https://haveibeenpwned.com/api/breaches')
+ request = Net::HTTP::Get.new('https://haveibeenpwned.com/api/breaches')
+ request['Range'] = 'bytes=0-511'
+ response = subject.execute(request)
+ refute_nil response
+ assert_equal(283, JSON.parse(response.body).count)
+ end
+ end
+end