requests_ruby 1.0.0
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/CHANGELOG.md +63 -0
- data/LICENSE +21 -0
- data/README.md +331 -0
- data/lib/cacert.pem +5689 -0
- data/lib/requests/adapters.rb +114 -0
- data/lib/requests/api.rb +25 -0
- data/lib/requests/auth.rb +74 -0
- data/lib/requests/cookies.rb +55 -0
- data/lib/requests/exceptions.rb +56 -0
- data/lib/requests/models.rb +118 -0
- data/lib/requests/sessions.rb +222 -0
- data/lib/requests/status_codes.rb +31 -0
- data/lib/requests/structures.rb +54 -0
- data/lib/requests/utils.rb +55 -0
- data/lib/requests/version.rb +5 -0
- data/lib/requests.rb +19 -0
- data/lib/requests_ruby.rb +3 -0
- metadata +75 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Requests
|
|
4
|
+
class CIHash
|
|
5
|
+
include Enumerable
|
|
6
|
+
def initialize(h = nil)
|
|
7
|
+
@d = {}
|
|
8
|
+
h && h.each { |k, v| self[k] = v }
|
|
9
|
+
end
|
|
10
|
+
def []=(k, v)
|
|
11
|
+
@d[k.to_s.downcase] = [k.to_s, v]
|
|
12
|
+
v
|
|
13
|
+
end
|
|
14
|
+
def [](k)
|
|
15
|
+
e = @d[k.to_s.downcase]
|
|
16
|
+
e ? e[1] : nil
|
|
17
|
+
end
|
|
18
|
+
def key?(k)
|
|
19
|
+
@d.key?(k.to_s.downcase)
|
|
20
|
+
end
|
|
21
|
+
alias_method :include?, :key?
|
|
22
|
+
alias_method :has_key?, :key?
|
|
23
|
+
def delete(k)
|
|
24
|
+
e = @d.delete(k.to_s.downcase)
|
|
25
|
+
e ? e[1] : nil
|
|
26
|
+
end
|
|
27
|
+
def each
|
|
28
|
+
return enum_for(:each) unless block_given?
|
|
29
|
+
@d.each_value { |k, v| yield k, v }
|
|
30
|
+
end
|
|
31
|
+
def keys
|
|
32
|
+
@d.values.map(&:first)
|
|
33
|
+
end
|
|
34
|
+
def to_h
|
|
35
|
+
h = {}
|
|
36
|
+
@d.each_value { |k, v| h[k] = v }
|
|
37
|
+
h
|
|
38
|
+
end
|
|
39
|
+
def empty?
|
|
40
|
+
@d.empty?
|
|
41
|
+
end
|
|
42
|
+
def size
|
|
43
|
+
@d.size
|
|
44
|
+
end
|
|
45
|
+
def merge!(o)
|
|
46
|
+
o&.each { |k, v| self[k] = v }
|
|
47
|
+
self
|
|
48
|
+
end
|
|
49
|
+
def inspect
|
|
50
|
+
to_h.inspect
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
CaseInsensitiveDict = CIHash
|
|
54
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Requests
|
|
4
|
+
module Utils
|
|
5
|
+
module_function
|
|
6
|
+
def default_headers
|
|
7
|
+
CIHash.new(
|
|
8
|
+
'User-Agent' => default_user_agent,
|
|
9
|
+
'Accept' => '*/*',
|
|
10
|
+
'Accept-Encoding' => 'gzip, deflate'
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def default_user_agent
|
|
15
|
+
"requests_ruby/#{Requests::VERSION}"
|
|
16
|
+
end
|
|
17
|
+
def parse_header_links(value)
|
|
18
|
+
return {} if value.nil? || value.empty?
|
|
19
|
+
out = {}
|
|
20
|
+
value.split(',').each do |part|
|
|
21
|
+
seg = part.split(';')
|
|
22
|
+
url = seg.shift.to_s.strip.gsub(/[<>]/, '')
|
|
23
|
+
attrs = {}
|
|
24
|
+
rel = nil
|
|
25
|
+
seg.each do |a|
|
|
26
|
+
k, v = a.strip.split('=', 2)
|
|
27
|
+
next unless k
|
|
28
|
+
v = v.to_s.gsub('"', '')
|
|
29
|
+
attrs[k] = v
|
|
30
|
+
rel = v if k == 'rel'
|
|
31
|
+
end
|
|
32
|
+
out[rel] = attrs.merge('url' => url)
|
|
33
|
+
end
|
|
34
|
+
out
|
|
35
|
+
end
|
|
36
|
+
def guess_filename(obj, fallback)
|
|
37
|
+
return File.basename(obj.path) if obj.respond_to?(:path) && obj.path
|
|
38
|
+
fallback.to_s
|
|
39
|
+
end
|
|
40
|
+
def encoding_from_headers(headers)
|
|
41
|
+
ct = headers['content-type']
|
|
42
|
+
return 'UTF-8' unless ct
|
|
43
|
+
m = ct.match(/charset=([\w\-]+)/i)
|
|
44
|
+
m ? m[1] : 'UTF-8'
|
|
45
|
+
end
|
|
46
|
+
def truncate(str, length = 200)
|
|
47
|
+
s = str.to_s
|
|
48
|
+
return s if s.length <= length
|
|
49
|
+
"#{s[0, length]}... (#{s.length} chars total)"
|
|
50
|
+
end
|
|
51
|
+
def looks_like_html?(str)
|
|
52
|
+
!!(str.to_s.lstrip =~ /\A(<!DOCTYPE html|<html)/i)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
data/lib/requests.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
module Requests
|
|
6
|
+
CA_FILE = ENV.fetch('REQUESTS_CA_FILE', File.expand_path('cacert.pem', __dir__))
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
require_relative 'requests/version'
|
|
10
|
+
require_relative 'requests/exceptions'
|
|
11
|
+
require_relative 'requests/status_codes'
|
|
12
|
+
require_relative 'requests/structures'
|
|
13
|
+
require_relative 'requests/cookies'
|
|
14
|
+
require_relative 'requests/auth'
|
|
15
|
+
require_relative 'requests/utils'
|
|
16
|
+
require_relative 'requests/models'
|
|
17
|
+
require_relative 'requests/adapters'
|
|
18
|
+
require_relative 'requests/sessions'
|
|
19
|
+
require_relative 'requests/api'
|
metadata
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: requests_ruby
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- requests_ruby contributors
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 2026-07-29 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: minitest
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '5.0'
|
|
19
|
+
type: :development
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '5.0'
|
|
26
|
+
description: A stdlib-only Ruby HTTP client modeled after python's requests library.
|
|
27
|
+
Sessions, cookies, redirects, auth (Basic/Bearer/Digest), multipart uploads, streaming
|
|
28
|
+
responses, hooks, and a friendly exception hierarchy - no external gems required.
|
|
29
|
+
executables: []
|
|
30
|
+
extensions: []
|
|
31
|
+
extra_rdoc_files: []
|
|
32
|
+
files:
|
|
33
|
+
- CHANGELOG.md
|
|
34
|
+
- LICENSE
|
|
35
|
+
- README.md
|
|
36
|
+
- lib/cacert.pem
|
|
37
|
+
- lib/requests.rb
|
|
38
|
+
- lib/requests/adapters.rb
|
|
39
|
+
- lib/requests/api.rb
|
|
40
|
+
- lib/requests/auth.rb
|
|
41
|
+
- lib/requests/cookies.rb
|
|
42
|
+
- lib/requests/exceptions.rb
|
|
43
|
+
- lib/requests/models.rb
|
|
44
|
+
- lib/requests/sessions.rb
|
|
45
|
+
- lib/requests/status_codes.rb
|
|
46
|
+
- lib/requests/structures.rb
|
|
47
|
+
- lib/requests/utils.rb
|
|
48
|
+
- lib/requests/version.rb
|
|
49
|
+
- lib/requests_ruby.rb
|
|
50
|
+
homepage: https://github.com/monji024/requests_ruby
|
|
51
|
+
licenses:
|
|
52
|
+
- MIT
|
|
53
|
+
metadata:
|
|
54
|
+
homepage_uri: https://github.com/monji024/requests_ruby
|
|
55
|
+
source_code_uri: https://github.com/monji024/requests_ruby
|
|
56
|
+
changelog_uri: https://github.com/monji024/requests_ruby/blob/main/CHANGELOG.md
|
|
57
|
+
bug_tracker_uri: https://github.com/monji024/requests_ruby/issues
|
|
58
|
+
rdoc_options: []
|
|
59
|
+
require_paths:
|
|
60
|
+
- lib
|
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
|
+
requirements:
|
|
63
|
+
- - ">="
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: '2.7'
|
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - ">="
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '0'
|
|
71
|
+
requirements: []
|
|
72
|
+
rubygems_version: 3.6.3
|
|
73
|
+
specification_version: 4
|
|
74
|
+
summary: Requests is a simple, yet elegant, HTTP library.
|
|
75
|
+
test_files: []
|