http.rb 0.12.0 → 0.12.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 +5 -5
- data/Gemfile +1 -0
- data/README.md +6 -2
- data/http.rb.gemspec +2 -2
- data/lib/HTTP/post.rb +7 -2
- data/lib/HTTP.rb +0 -10
- data/spec/HTTP/get_spec.rb +0 -2
- data/spec/HTTP/post_spec.rb +33 -7
- metadata +3 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 64b5868b1582ef96a23021bef26cbfaa4e7ee7a63f28566e20c5f53d6ba91356
|
4
|
+
data.tar.gz: 9af58e51678e5b6ba65d55ffdca2d2382cde427fb7e2db2a5999a1e137344969
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 291e79fc695b67dde10145d69311a79c2529f9cac03a217abbbeb254920c8aa137e0220f0e3f2eba3d46b482757a5c1777197fb4dc758dc0adb67918039a5924
|
7
|
+
data.tar.gz: ec2e4b6caf7878518de41ceec6881ebb957dfcca50bc9e3aaa4295b9893ff825459e374c3ebaaf22c6ec1eadb9c6e762459d833f71fbe71397c6b91fb44a217c
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -19,7 +19,7 @@ Perhaps someone will appreciate its relative simplicity, since it is much smalle
|
|
19
19
|
|
20
20
|
Add this line to your application's Gemfile:
|
21
21
|
|
22
|
-
gem '
|
22
|
+
gem 'http.rb'
|
23
23
|
|
24
24
|
And then execute:
|
25
25
|
|
@@ -27,7 +27,7 @@ And then execute:
|
|
27
27
|
|
28
28
|
Or install it yourself as:
|
29
29
|
|
30
|
-
$ gem install
|
30
|
+
$ gem install http.rb
|
31
31
|
|
32
32
|
|
33
33
|
## Usage
|
@@ -43,6 +43,10 @@ HTTP.post('http://example.com') # Admittedly doing a POST without providing form
|
|
43
43
|
HTTP.get('http://example.com', {a: 1, b: 2})
|
44
44
|
HTTP.post('http://example.com', {a: 1, b: 2})
|
45
45
|
|
46
|
+
# With JSON data
|
47
|
+
|
48
|
+
HTTP.post('http://example.com', {a: 1, b: 2}, {'Content-type' => 'application/json'})
|
49
|
+
|
46
50
|
# With custom headers only
|
47
51
|
|
48
52
|
HTTP.get('http://example.com', {}, {'User-Agent'=>'Custom'})
|
data/http.rb.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'http.rb' # I would have preferred 'http', but there's a library called http.rb with the gem name of http. Confusing, eh?
|
3
|
-
s.version = '0.12.
|
4
|
-
s.date = '
|
3
|
+
s.version = '0.12.1'
|
4
|
+
s.date = '2025-02-07'
|
5
5
|
|
6
6
|
s.summary = "HTTP made easy."
|
7
7
|
s.description = "HTTP is the simplest HTTP mezzanine library for Ruby. Supply a URI, \
|
data/lib/HTTP/post.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# HTTP/post.rb
|
2
2
|
# HTTP.post
|
3
3
|
|
4
|
+
require 'json'
|
4
5
|
require 'net/http'
|
5
6
|
require 'openssl'
|
6
7
|
require 'uri'
|
@@ -15,14 +16,18 @@ require 'URI/Generic/use_sslQ'
|
|
15
16
|
|
16
17
|
module HTTP
|
17
18
|
|
18
|
-
def post(uri,
|
19
|
+
def post(uri, data = {}, headers = {}, options = {}, &block)
|
19
20
|
uri = uri.is_a?(URI) ? uri : URI.parse(uri)
|
20
21
|
http = Net::HTTP.new(uri.host, uri.port)
|
21
22
|
options[:use_ssl] ||= uri.use_ssl?
|
22
23
|
options[:verify_mode] ||= OpenSSL::SSL::VERIFY_NONE
|
23
24
|
http.options = options
|
24
25
|
request_object = Net::HTTP::Post.new(uri.request_uri)
|
25
|
-
|
26
|
+
if headers['Content-Type'] == 'application/json'
|
27
|
+
request_object.body = JSON.dump(data)
|
28
|
+
else
|
29
|
+
request_object.form_data = data
|
30
|
+
end
|
26
31
|
request_object.headers = headers
|
27
32
|
request_object.basic_auth(uri.user, uri.password) if uri.user
|
28
33
|
response = http.request(request_object)
|
data/lib/HTTP.rb
CHANGED
@@ -1,16 +1,6 @@
|
|
1
1
|
# HTTP.rb
|
2
2
|
# HTTP
|
3
3
|
|
4
|
-
# 20150518
|
5
|
-
# 0.11.1
|
6
|
-
|
7
|
-
# Changes since 0.10:
|
8
|
-
# 1. Removed HTTP/write.rb, since I wanted to reimplement it using standard File methods and not my custom written File.write. It may stay gone, but I'm not sure yet...
|
9
|
-
# 2. + HTTP.gemspec
|
10
|
-
# 3. + README.md
|
11
|
-
# 0/1
|
12
|
-
# 4. + String/url_encode, which was left out previously.
|
13
|
-
|
14
4
|
lib_dir = File.expand_path(File.join(__FILE__, '..'))
|
15
5
|
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
16
6
|
|
data/spec/HTTP/get_spec.rb
CHANGED
data/spec/HTTP/post_spec.rb
CHANGED
@@ -7,7 +7,6 @@ require 'spec_helper'
|
|
7
7
|
require 'HTTP/post'
|
8
8
|
|
9
9
|
describe ".post" do
|
10
|
-
|
11
10
|
context "with uri-only supplied" do
|
12
11
|
before do
|
13
12
|
stub_request(:post, 'http://example.com/path').
|
@@ -51,26 +50,54 @@ describe ".post" do
|
|
51
50
|
context "with form data supplied" do
|
52
51
|
let(:uri){'http://example.com/path'}
|
53
52
|
let(:parsed_uri){URI.parse(uri)}
|
54
|
-
let(:
|
55
|
-
let(:
|
53
|
+
let(:args) do; {a: 1, b: 2}; end
|
54
|
+
let(:headers) do; {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'Ruby'}; end
|
55
|
+
let(:encoded_form_data){args.x_www_form_urlencode}
|
56
56
|
let(:request_uri){parsed_uri.request_uri}
|
57
57
|
let(:request_object){Net::HTTP::Post.new(request_uri)}
|
58
58
|
|
59
59
|
before do
|
60
60
|
stub_request(:post, "http://example.com/path").
|
61
|
-
with(body:
|
61
|
+
with(body: encoded_form_data, headers: headers).
|
62
62
|
to_return(status: 200, body: '', headers: {})
|
63
63
|
end
|
64
64
|
|
65
65
|
it "sets the form data" do
|
66
66
|
allow(Net::HTTP::Post).to receive(:new).with(request_uri).and_return(request_object)
|
67
|
-
HTTP.post(uri,
|
67
|
+
HTTP.post(uri, args, headers)
|
68
68
|
expect(request_object.body).to eq(encoded_form_data)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "creates a new Net::HTTP::Post object" do
|
72
72
|
expect(Net::HTTP::Post).to receive(:new).with(request_uri).and_return(request_object)
|
73
|
-
HTTP.post(uri,
|
73
|
+
HTTP.post(uri, args, headers)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "with JSON data supplied" do
|
78
|
+
let(:uri){'http://example.com/path'}
|
79
|
+
let(:parsed_uri){URI.parse(uri)}
|
80
|
+
let(:args) do; {a: 1, b: 2}; end
|
81
|
+
let(:headers) do; {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}; end
|
82
|
+
let(:json_data){JSON.dump(args)}
|
83
|
+
let(:request_uri){parsed_uri.request_uri}
|
84
|
+
let(:request_object){Net::HTTP::Post.new(request_uri)}
|
85
|
+
|
86
|
+
before do
|
87
|
+
stub_request(:post, "http://example.com/path").
|
88
|
+
with(body: json_data, headers: headers).
|
89
|
+
to_return(status: 200, body: '', headers: {})
|
90
|
+
end
|
91
|
+
|
92
|
+
it "sets the body" do
|
93
|
+
allow(Net::HTTP::Post).to receive(:new).with(request_uri).and_return(request_object)
|
94
|
+
HTTP.post(uri, args, headers)
|
95
|
+
expect(request_object.body).to eq(json_data)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "creates a new Net::HTTP::Post object" do
|
99
|
+
expect(Net::HTTP::Post).to receive(:new).with(request_uri).and_return(request_object)
|
100
|
+
HTTP.post(uri, args, headers)
|
74
101
|
end
|
75
102
|
end
|
76
103
|
|
@@ -206,5 +233,4 @@ describe ".post" do
|
|
206
233
|
end
|
207
234
|
end
|
208
235
|
end
|
209
|
-
|
210
236
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thoran
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-07 00:00:00.000000000 Z
|
12
11
|
dependencies: []
|
13
12
|
description: HTTP is the simplest HTTP mezzanine library for Ruby. Supply a URI, some
|
14
13
|
optional query arguments, some optional headers, and some Net::HTTP options,
|
@@ -36,7 +35,6 @@ files:
|
|
36
35
|
homepage: http://github.com/thoran/HTTP
|
37
36
|
licenses: []
|
38
37
|
metadata: {}
|
39
|
-
post_install_message:
|
40
38
|
rdoc_options: []
|
41
39
|
require_paths:
|
42
40
|
- lib
|
@@ -51,9 +49,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
49
|
- !ruby/object:Gem::Version
|
52
50
|
version: '0'
|
53
51
|
requirements: []
|
54
|
-
|
55
|
-
rubygems_version: 2.5.2
|
56
|
-
signing_key:
|
52
|
+
rubygems_version: 3.6.3
|
57
53
|
specification_version: 4
|
58
54
|
summary: HTTP made easy.
|
59
55
|
test_files: []
|