scorn 0.3.1 → 0.4.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 +4 -4
- data/CHANGELOG.md +13 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/lib/scorn.rb +60 -27
- data/scorn.gemspec +8 -6
- metadata +49 -10
- data/Makefile +0 -45
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: db81b43557f802f076a4b23664f3b5700eb1a0700390b89965db7f587af64a1f
|
|
4
|
+
data.tar.gz: c1f31b4118e4a7d2e97cf22fecbaed95837fc20b6afd821cbfc2b629a528b566
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 74f488814ae0260f156dbd56cf482eea5ef495671d2b0ab9c62fce6ee87d7380b79c7d1b047b9441e6f6e633c61265d2e431e4464a7d7da46cfa51a1abd5057c
|
|
7
|
+
data.tar.gz: 5017773301fc3459c46da16ae3b971b4fd0bf56b62912d4011deaef5c8911e21eba52a80907a5f413275b2bab3337c6f4a76335de50f3ada4b0f3fad61efec6a
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
# CHANGELOG.md
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
## scorn 0.4.1 released 2026-09-02
|
|
6
|
+
|
|
7
|
+
* Tidy dependencies
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## scorn 0.4.0 released 2025-08-01
|
|
11
|
+
|
|
12
|
+
* Parse "[]" JSON arrays too
|
|
13
|
+
* Accept :auth or :authentication
|
|
14
|
+
* Fix :verify or :ssl_verify client option
|
|
15
|
+
* Add HEAD requests
|
|
16
|
+
|
|
17
|
+
|
|
5
18
|
## scorn 0.3.1 released 2021-01-12
|
|
6
19
|
|
|
7
20
|
* Fix duplicate Content-Type headers when POSTing
|
data/LICENSE.txt
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
Copyright (c) 2021-
|
|
2
|
+
Copyright (c) 2021-2026, John Mettraux, jmettraux@gmail.com
|
|
3
3
|
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
# scorn
|
|
3
3
|
|
|
4
|
-
[](https://github.com/jmettraux/scorn/actions)
|
|
4
|
+
<!--[](https://github.com/jmettraux/scorn/actions)-->
|
|
5
5
|
[](http://badge.fury.io/rb/scorn)
|
|
6
6
|
|
|
7
7
|
A stupid HTTP client library.
|
data/lib/scorn.rb
CHANGED
|
@@ -10,10 +10,15 @@ require 'net/http'
|
|
|
10
10
|
|
|
11
11
|
module Scorn
|
|
12
12
|
|
|
13
|
-
VERSION = '0.
|
|
13
|
+
VERSION = '0.4.1'.freeze
|
|
14
14
|
|
|
15
15
|
class << self
|
|
16
16
|
|
|
17
|
+
def head(uri, opts={})
|
|
18
|
+
|
|
19
|
+
Scorn::Client.new(opts).head(uri, opts)
|
|
20
|
+
end
|
|
21
|
+
|
|
17
22
|
def get(uri, opts={})
|
|
18
23
|
|
|
19
24
|
Scorn::Client.new(opts).get(uri, opts)
|
|
@@ -39,11 +44,23 @@ module Scorn
|
|
|
39
44
|
[ 'Ruby', RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PLATFORM ].join(' ')
|
|
40
45
|
|
|
41
46
|
@ssl_verify_mode =
|
|
42
|
-
(
|
|
47
|
+
(
|
|
48
|
+
opts[:ssl_verify] == :none || opts[:verify] == :none ||
|
|
49
|
+
opts[:ssl_verify] == false || opts[:verify] == false
|
|
50
|
+
) ?
|
|
43
51
|
OpenSSL::SSL::VERIFY_NONE : # :-(
|
|
44
52
|
OpenSSL::SSL::VERIFY_PEER
|
|
45
53
|
end
|
|
46
54
|
|
|
55
|
+
def head(uri, opts={})
|
|
56
|
+
|
|
57
|
+
u = uri.is_a?(String) ? URI(uri) : uri
|
|
58
|
+
|
|
59
|
+
res = request(u, make_head_req(u, opts))
|
|
60
|
+
|
|
61
|
+
opts[:res] ? res : read_response(res)
|
|
62
|
+
end
|
|
63
|
+
|
|
47
64
|
def get(uri, opts={})
|
|
48
65
|
|
|
49
66
|
u = uri.is_a?(String) ? URI(uri) : uri
|
|
@@ -64,25 +81,19 @@ module Scorn
|
|
|
64
81
|
|
|
65
82
|
protected
|
|
66
83
|
|
|
67
|
-
def
|
|
84
|
+
def make_head_req(uri, opts)
|
|
68
85
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
(opts[:json] && 'application/json') ||
|
|
72
|
-
'*/*'
|
|
86
|
+
make_req(:head, uri, gather_headers(:head, opts))
|
|
87
|
+
end
|
|
73
88
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
accept: accept)
|
|
89
|
+
def make_get_req(uri, opts)
|
|
90
|
+
|
|
91
|
+
make_req(:get, uri, gather_headers(:get, opts))
|
|
78
92
|
end
|
|
79
93
|
|
|
80
94
|
def make_post_req(uri, opts)
|
|
81
95
|
|
|
82
|
-
req = make_req(
|
|
83
|
-
:post, uri,
|
|
84
|
-
agent: opts[:user_agent] || user_agent,
|
|
85
|
-
type: opts[:content_type] || 'application/x-www-form-urlencoded')
|
|
96
|
+
req = make_req(:post, uri, gather_headers(:post, opts))
|
|
86
97
|
|
|
87
98
|
data = opts[:data]
|
|
88
99
|
req.set_form_data(data) if data
|
|
@@ -90,6 +101,32 @@ module Scorn
|
|
|
90
101
|
req
|
|
91
102
|
end
|
|
92
103
|
|
|
104
|
+
def gather_headers(verb, opts)
|
|
105
|
+
|
|
106
|
+
h = {}
|
|
107
|
+
|
|
108
|
+
h['Accept'] =
|
|
109
|
+
opts[:accept] ||
|
|
110
|
+
(opts[:json] && 'application/json') ||
|
|
111
|
+
'*/*'
|
|
112
|
+
h['Agent'] =
|
|
113
|
+
opts[:user_agent] || user_agent
|
|
114
|
+
h['Authorization'] =
|
|
115
|
+
opts[:authorization] || opts[:auth]
|
|
116
|
+
|
|
117
|
+
h['Content-Type'] =
|
|
118
|
+
opts[:content_type] || 'application/x-www-form-urlencoded' \
|
|
119
|
+
if verb == :post
|
|
120
|
+
|
|
121
|
+
opts.each do |k, v|
|
|
122
|
+
h[k] = v if k.start_with?(/X-/)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
h.compact!
|
|
126
|
+
|
|
127
|
+
h
|
|
128
|
+
end
|
|
129
|
+
|
|
93
130
|
def make_req(type, uri, headers)
|
|
94
131
|
|
|
95
132
|
u = [ uri.path, uri.query ].compact.join('?')
|
|
@@ -97,21 +134,13 @@ module Scorn
|
|
|
97
134
|
|
|
98
135
|
req =
|
|
99
136
|
case type
|
|
137
|
+
when :head then Net::HTTP::Head.new(u)
|
|
100
138
|
when :get then Net::HTTP::Get.new(u)
|
|
101
139
|
when :post then Net::HTTP::Post.new(u)
|
|
102
140
|
else fail ArgumentError.new("HTTP #{type} not implemented")
|
|
103
141
|
end
|
|
104
142
|
|
|
105
|
-
headers.each
|
|
106
|
-
hk =
|
|
107
|
-
case k
|
|
108
|
-
when :accept then 'Accept'
|
|
109
|
-
when :agent then 'User-Agent'
|
|
110
|
-
when :type then 'Content-Type'
|
|
111
|
-
else k.to_s
|
|
112
|
-
end
|
|
113
|
-
req[hk] = v
|
|
114
|
-
end
|
|
143
|
+
headers.each { |k, v| req[k] = v }
|
|
115
144
|
|
|
116
145
|
req
|
|
117
146
|
end
|
|
@@ -162,11 +191,15 @@ module Scorn
|
|
|
162
191
|
def read_response(res)
|
|
163
192
|
|
|
164
193
|
s = res.body
|
|
165
|
-
st = s.strip
|
|
194
|
+
st = s ? s.strip : ''
|
|
195
|
+
|
|
196
|
+
a_z = "#{st[0, 1]}#{st[-1, 1]}"
|
|
166
197
|
|
|
167
198
|
r =
|
|
168
|
-
if
|
|
199
|
+
if a_z == '{}' || a_z == '[]'
|
|
169
200
|
JSON.parse(st) rescue s
|
|
201
|
+
elsif s == nil
|
|
202
|
+
''
|
|
170
203
|
else
|
|
171
204
|
s
|
|
172
205
|
end
|
data/scorn.gemspec
CHANGED
|
@@ -22,24 +22,26 @@ A stupid HTTP client library. Consider with scorn.
|
|
|
22
22
|
'changelog_uri' => s.homepage + '/blob/master/CHANGELOG.md',
|
|
23
23
|
'documentation_uri' => s.homepage,
|
|
24
24
|
'bug_tracker_uri' => s.homepage + '/issues',
|
|
25
|
-
#'mailing_list_uri' => 'https://groups.google.com/forum/#!forum/floraison',
|
|
26
25
|
'homepage_uri' => s.homepage,
|
|
27
26
|
'source_code_uri' => s.homepage,
|
|
27
|
+
#'mailing_list_uri' => 'https://groups.google.com/forum/#!forum/floraison',
|
|
28
28
|
#'wiki_uri' => s.homepage + '/wiki',
|
|
29
|
+
'rubygems_mfa_required' => 'true',
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
#s.files = `git ls-files`.split("\n")
|
|
32
33
|
s.files = Dir[
|
|
33
|
-
'README.{md,txt}',
|
|
34
|
-
'
|
|
35
|
-
'Makefile',
|
|
34
|
+
'{README,CHANGELOG,CREDITS,LICENSE}.{md,txt}',
|
|
35
|
+
#'Makefile',
|
|
36
36
|
'lib/**/*.rb', #'spec/**/*.rb', 'test/**/*.rb',
|
|
37
37
|
"#{s.name}.gemspec",
|
|
38
38
|
]
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
s.add_runtime_dependency 'base64'
|
|
41
|
+
s.add_runtime_dependency 'webrick'
|
|
42
|
+
s.add_runtime_dependency 'ostruct'
|
|
41
43
|
|
|
42
|
-
s.add_development_dependency '
|
|
44
|
+
s.add_development_dependency 'probatio', '~> 1.6'
|
|
43
45
|
|
|
44
46
|
s.require_path = 'lib'
|
|
45
47
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,70 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: scorn
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Mettraux
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
13
|
+
name: base64
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: webrick
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: ostruct
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: probatio
|
|
15
56
|
requirement: !ruby/object:Gem::Requirement
|
|
16
57
|
requirements:
|
|
17
58
|
- - "~>"
|
|
18
59
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
60
|
+
version: '1.6'
|
|
20
61
|
type: :development
|
|
21
62
|
prerelease: false
|
|
22
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
64
|
requirements:
|
|
24
65
|
- - "~>"
|
|
25
66
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
67
|
+
version: '1.6'
|
|
27
68
|
description: A stupid HTTP client library. Consider with scorn.
|
|
28
69
|
email:
|
|
29
70
|
- jmettraux@gmail.com
|
|
@@ -34,7 +75,6 @@ files:
|
|
|
34
75
|
- CHANGELOG.md
|
|
35
76
|
- CREDITS.md
|
|
36
77
|
- LICENSE.txt
|
|
37
|
-
- Makefile
|
|
38
78
|
- README.md
|
|
39
79
|
- lib/scorn.rb
|
|
40
80
|
- scorn.gemspec
|
|
@@ -47,7 +87,7 @@ metadata:
|
|
|
47
87
|
bug_tracker_uri: https://github.com/jmettraux/scorn/issues
|
|
48
88
|
homepage_uri: https://github.com/jmettraux/scorn
|
|
49
89
|
source_code_uri: https://github.com/jmettraux/scorn
|
|
50
|
-
|
|
90
|
+
rubygems_mfa_required: 'true'
|
|
51
91
|
rdoc_options: []
|
|
52
92
|
require_paths:
|
|
53
93
|
- lib
|
|
@@ -62,8 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
62
102
|
- !ruby/object:Gem::Version
|
|
63
103
|
version: '0'
|
|
64
104
|
requirements: []
|
|
65
|
-
rubygems_version: 3.
|
|
66
|
-
signing_key:
|
|
105
|
+
rubygems_version: 3.6.9
|
|
67
106
|
specification_version: 4
|
|
68
107
|
summary: stupid HTTP client
|
|
69
108
|
test_files: []
|
data/Makefile
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
## gem tasks ##
|
|
3
|
-
|
|
4
|
-
NAME = \
|
|
5
|
-
$(shell ruby -e "s = eval(File.read(Dir['*.gemspec'][0])); puts s.name")
|
|
6
|
-
VERSION = \
|
|
7
|
-
$(shell ruby -e "s = eval(File.read(Dir['*.gemspec'][0])); puts s.version")
|
|
8
|
-
|
|
9
|
-
count_lines:
|
|
10
|
-
find lib -name "*.rb" | xargs cat | ruby -e "p STDIN.readlines.count { |l| l = l.strip; l[0, 1] != '#' && l != '' }"
|
|
11
|
-
find spec -name "*_spec.rb" | xargs cat | ruby -e "p STDIN.readlines.count { |l| l = l.strip; l[0, 1] != '#' && l != '' }"
|
|
12
|
-
cl: count_lines
|
|
13
|
-
|
|
14
|
-
scan:
|
|
15
|
-
scan lib/**/*.rb
|
|
16
|
-
|
|
17
|
-
gemspec_validate:
|
|
18
|
-
@echo "---"
|
|
19
|
-
ruby -e "s = eval(File.read(Dir['*.gemspec'].first)); p s.validate"
|
|
20
|
-
@echo "---"
|
|
21
|
-
|
|
22
|
-
name: gemspec_validate
|
|
23
|
-
@echo "$(NAME) $(VERSION)"
|
|
24
|
-
|
|
25
|
-
cw:
|
|
26
|
-
find lib -name "*.rb" -exec ruby -cw {} \;
|
|
27
|
-
|
|
28
|
-
build: gemspec_validate
|
|
29
|
-
gem build $(NAME).gemspec
|
|
30
|
-
mkdir -p pkg
|
|
31
|
-
mv $(NAME)-$(VERSION).gem pkg/
|
|
32
|
-
|
|
33
|
-
push: build
|
|
34
|
-
gem push --otp "$(OTP)" pkg/$(NAME)-$(VERSION).gem
|
|
35
|
-
|
|
36
|
-
spec:
|
|
37
|
-
bundle exec rspec
|
|
38
|
-
test: spec
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
## specific to project ##
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
.PHONY: count_lines scan gemspec_validate name cw build push spec
|
|
45
|
-
|