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.
@@ -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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Requests
4
+ VERSION = '1.0.0'
5
+ 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'
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'requests'
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: []