nano-sharp-sys 0.0.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.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/faraday-2.14.3/CHANGELOG.md +574 -0
  3. data/faraday-2.14.3/LICENSE.md +20 -0
  4. data/faraday-2.14.3/README.md +67 -0
  5. data/faraday-2.14.3/Rakefile +12 -0
  6. data/faraday-2.14.3/examples/client_spec.rb +119 -0
  7. data/faraday-2.14.3/examples/client_test.rb +144 -0
  8. data/faraday-2.14.3/lib/faraday/adapter/test.rb +319 -0
  9. data/faraday-2.14.3/lib/faraday/adapter.rb +102 -0
  10. data/faraday-2.14.3/lib/faraday/adapter_registry.rb +30 -0
  11. data/faraday-2.14.3/lib/faraday/connection.rb +567 -0
  12. data/faraday-2.14.3/lib/faraday/encoders/flat_params_encoder.rb +106 -0
  13. data/faraday-2.14.3/lib/faraday/encoders/nested_params_encoder.rb +193 -0
  14. data/faraday-2.14.3/lib/faraday/error.rb +202 -0
  15. data/faraday-2.14.3/lib/faraday/logging/formatter.rb +118 -0
  16. data/faraday-2.14.3/lib/faraday/methods.rb +6 -0
  17. data/faraday-2.14.3/lib/faraday/middleware.rb +72 -0
  18. data/faraday-2.14.3/lib/faraday/middleware_registry.rb +83 -0
  19. data/faraday-2.14.3/lib/faraday/options/connection_options.rb +23 -0
  20. data/faraday-2.14.3/lib/faraday/options/env.rb +204 -0
  21. data/faraday-2.14.3/lib/faraday/options/proxy_options.rb +39 -0
  22. data/faraday-2.14.3/lib/faraday/options/request_options.rb +23 -0
  23. data/faraday-2.14.3/lib/faraday/options/ssl_options.rb +76 -0
  24. data/faraday-2.14.3/lib/faraday/options.rb +219 -0
  25. data/faraday-2.14.3/lib/faraday/parameters.rb +5 -0
  26. data/faraday-2.14.3/lib/faraday/rack_builder.rb +248 -0
  27. data/faraday-2.14.3/lib/faraday/request/authorization.rb +54 -0
  28. data/faraday-2.14.3/lib/faraday/request/instrumentation.rb +58 -0
  29. data/faraday-2.14.3/lib/faraday/request/json.rb +70 -0
  30. data/faraday-2.14.3/lib/faraday/request/url_encoded.rb +60 -0
  31. data/faraday-2.14.3/lib/faraday/request.rb +139 -0
  32. data/faraday-2.14.3/lib/faraday/response/json.rb +74 -0
  33. data/faraday-2.14.3/lib/faraday/response/logger.rb +39 -0
  34. data/faraday-2.14.3/lib/faraday/response/raise_error.rb +83 -0
  35. data/faraday-2.14.3/lib/faraday/response.rb +95 -0
  36. data/faraday-2.14.3/lib/faraday/utils/headers.rb +150 -0
  37. data/faraday-2.14.3/lib/faraday/utils/params_hash.rb +61 -0
  38. data/faraday-2.14.3/lib/faraday/utils.rb +121 -0
  39. data/faraday-2.14.3/lib/faraday/version.rb +5 -0
  40. data/faraday-2.14.3/lib/faraday.rb +158 -0
  41. data/faraday-2.14.3/spec/external_adapters/faraday_specs_setup.rb +14 -0
  42. data/faraday-2.14.3/spec/faraday/adapter/test_spec.rb +460 -0
  43. data/faraday-2.14.3/spec/faraday/adapter_registry_spec.rb +28 -0
  44. data/faraday-2.14.3/spec/faraday/adapter_spec.rb +55 -0
  45. data/faraday-2.14.3/spec/faraday/connection_spec.rb +860 -0
  46. data/faraday-2.14.3/spec/faraday/error_spec.rb +175 -0
  47. data/faraday-2.14.3/spec/faraday/middleware_registry_spec.rb +31 -0
  48. data/faraday-2.14.3/spec/faraday/middleware_spec.rb +213 -0
  49. data/faraday-2.14.3/spec/faraday/options/env_spec.rb +76 -0
  50. data/faraday-2.14.3/spec/faraday/options/options_spec.rb +297 -0
  51. data/faraday-2.14.3/spec/faraday/options/proxy_options_spec.rb +79 -0
  52. data/faraday-2.14.3/spec/faraday/options/request_options_spec.rb +19 -0
  53. data/faraday-2.14.3/spec/faraday/params_encoders/flat_spec.rb +42 -0
  54. data/faraday-2.14.3/spec/faraday/params_encoders/nested_spec.rb +179 -0
  55. data/faraday-2.14.3/spec/faraday/rack_builder_spec.rb +317 -0
  56. data/faraday-2.14.3/spec/faraday/request/authorization_spec.rb +118 -0
  57. data/faraday-2.14.3/spec/faraday/request/instrumentation_spec.rb +74 -0
  58. data/faraday-2.14.3/spec/faraday/request/json_spec.rb +199 -0
  59. data/faraday-2.14.3/spec/faraday/request/url_encoded_spec.rb +93 -0
  60. data/faraday-2.14.3/spec/faraday/request_spec.rb +119 -0
  61. data/faraday-2.14.3/spec/faraday/response/json_spec.rb +206 -0
  62. data/faraday-2.14.3/spec/faraday/response/logger_spec.rb +299 -0
  63. data/faraday-2.14.3/spec/faraday/response/raise_error_spec.rb +286 -0
  64. data/faraday-2.14.3/spec/faraday/response_spec.rb +84 -0
  65. data/faraday-2.14.3/spec/faraday/utils/headers_spec.rb +109 -0
  66. data/faraday-2.14.3/spec/faraday/utils_spec.rb +120 -0
  67. data/faraday-2.14.3/spec/faraday_spec.rb +43 -0
  68. data/faraday-2.14.3/spec/spec_helper.rb +133 -0
  69. data/faraday-2.14.3/spec/support/disabling_stub.rb +14 -0
  70. data/faraday-2.14.3/spec/support/fake_safe_buffer.rb +15 -0
  71. data/faraday-2.14.3/spec/support/faraday_middleware_subclasses.rb +18 -0
  72. data/faraday-2.14.3/spec/support/helper_methods.rb +96 -0
  73. data/faraday-2.14.3/spec/support/shared_examples/adapter.rb +105 -0
  74. data/faraday-2.14.3/spec/support/shared_examples/params_encoder.rb +18 -0
  75. data/faraday-2.14.3/spec/support/shared_examples/request_method.rb +263 -0
  76. data/faraday-2.14.3/spec/support/streaming_response_checker.rb +35 -0
  77. data/nano-sharp-sys.gemspec +12 -0
  78. metadata +117 -0
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+ require 'logger'
5
+ require 'faraday/logging/formatter'
6
+
7
+ module Faraday
8
+ class Response
9
+ # Logger is a middleware that logs internal events in the HTTP request
10
+ # lifecycle to a given Logger object. By default, this logs to STDOUT. See
11
+ # Faraday::Logging::Formatter to see specifically what is logged.
12
+ class Logger < Middleware
13
+ DEFAULT_OPTIONS = { formatter: Logging::Formatter }.merge(Logging::Formatter::DEFAULT_OPTIONS).freeze
14
+
15
+ def initialize(app, logger = nil, options = {})
16
+ super(app, options)
17
+ logger ||= ::Logger.new($stdout)
18
+ formatter_class = @options.delete(:formatter)
19
+ @formatter = formatter_class.new(logger: logger, options: @options)
20
+ yield @formatter if block_given?
21
+ end
22
+
23
+ def call(env)
24
+ @formatter.request(env)
25
+ super
26
+ end
27
+
28
+ def on_complete(env)
29
+ @formatter.response(env)
30
+ end
31
+
32
+ def on_error(exc)
33
+ @formatter.exception(exc) if @formatter.respond_to?(:exception)
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ Faraday::Response.register_middleware(logger: Faraday::Response::Logger)
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faraday
4
+ class Response
5
+ # RaiseError is a Faraday middleware that raises exceptions on common HTTP
6
+ # client or server error responses.
7
+ class RaiseError < Middleware
8
+ # rubocop:disable Naming/ConstantName
9
+ ClientErrorStatuses = (400...500)
10
+ ServerErrorStatuses = (500...600)
11
+ ClientErrorStatusesWithCustomExceptions = {
12
+ 400 => Faraday::BadRequestError,
13
+ 401 => Faraday::UnauthorizedError,
14
+ 403 => Faraday::ForbiddenError,
15
+ 404 => Faraday::ResourceNotFound,
16
+ 408 => Faraday::RequestTimeoutError,
17
+ 409 => Faraday::ConflictError,
18
+ 422 => Faraday::UnprocessableContentError,
19
+ 429 => Faraday::TooManyRequestsError
20
+ }.freeze
21
+ # rubocop:enable Naming/ConstantName
22
+
23
+ DEFAULT_OPTIONS = { include_request: true, allowed_statuses: [] }.freeze
24
+
25
+ def on_complete(env)
26
+ return if Array(options[:allowed_statuses]).include?(env[:status])
27
+
28
+ case env[:status]
29
+ when *ClientErrorStatusesWithCustomExceptions.keys
30
+ raise ClientErrorStatusesWithCustomExceptions[env[:status]], response_values(env)
31
+ when 407
32
+ # mimic the behavior that we get with proxy requests with HTTPS
33
+ msg = %(407 "Proxy Authentication Required")
34
+ raise Faraday::ProxyAuthError.new(msg, response_values(env))
35
+ when ClientErrorStatuses
36
+ raise Faraday::ClientError, response_values(env)
37
+ when ServerErrorStatuses
38
+ raise Faraday::ServerError, response_values(env)
39
+ when nil
40
+ raise Faraday::NilStatusError, response_values(env)
41
+ end
42
+ end
43
+
44
+ # Returns a hash of response data with the following keys:
45
+ # - status
46
+ # - headers
47
+ # - body
48
+ # - request
49
+ #
50
+ # The `request` key is omitted when the middleware is explicitly
51
+ # configured with the option `include_request: false`.
52
+ def response_values(env)
53
+ response = {
54
+ status: env.status,
55
+ headers: env.response_headers,
56
+ body: env.body
57
+ }
58
+
59
+ # Include the request data by default. If the middleware was explicitly
60
+ # configured to _not_ include request data, then omit it.
61
+ return response unless options[:include_request]
62
+
63
+ response.merge(
64
+ request: {
65
+ method: env.method,
66
+ url: env.url,
67
+ url_path: env.url.path,
68
+ params: query_params(env),
69
+ headers: env.request_headers,
70
+ body: env.request_body
71
+ }
72
+ )
73
+ end
74
+
75
+ def query_params(env)
76
+ env.request.params_encoder ||= Faraday::Utils.default_params_encoder
77
+ env.params_encoder.decode(env.url.query)
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ Faraday::Response.register_middleware(raise_error: Faraday::Response::RaiseError)
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module Faraday
6
+ # Response represents an HTTP response from making an HTTP request.
7
+ class Response
8
+ extend Forwardable
9
+ extend MiddlewareRegistry
10
+
11
+ def initialize(env = nil)
12
+ @env = Env.from(env) if env
13
+ @on_complete_callbacks = []
14
+ end
15
+
16
+ attr_reader :env
17
+
18
+ def status
19
+ finished? ? env.status : nil
20
+ end
21
+
22
+ def reason_phrase
23
+ finished? ? env.reason_phrase : nil
24
+ end
25
+
26
+ def headers
27
+ finished? ? env.response_headers : {}
28
+ end
29
+
30
+ def_delegator :headers, :[]
31
+
32
+ def body
33
+ finished? ? env.body : nil
34
+ end
35
+
36
+ def url
37
+ finished? ? env.url : nil
38
+ end
39
+
40
+ def finished?
41
+ !!env
42
+ end
43
+
44
+ def on_complete(&block)
45
+ if finished?
46
+ yield(env)
47
+ else
48
+ @on_complete_callbacks << block
49
+ end
50
+ self
51
+ end
52
+
53
+ def finish(env)
54
+ raise 'response already finished' if finished?
55
+
56
+ @env = env.is_a?(Env) ? env : Env.from(env)
57
+ @on_complete_callbacks.each { |callback| callback.call(@env) }
58
+ self
59
+ end
60
+
61
+ def success?
62
+ finished? && env.success?
63
+ end
64
+
65
+ def to_hash
66
+ {
67
+ status: status, body: body,
68
+ response_headers: headers,
69
+ url: url
70
+ }
71
+ end
72
+
73
+ # because @on_complete_callbacks cannot be marshalled
74
+ def marshal_dump
75
+ finished? ? to_hash : nil
76
+ end
77
+
78
+ def marshal_load(env)
79
+ @env = Env.from(env)
80
+ end
81
+
82
+ # Expand the env with more properties, without overriding existing ones.
83
+ # Useful for applying request params after restoring a marshalled Response.
84
+ def apply_request(request_env)
85
+ raise "response didn't finish yet" unless finished?
86
+
87
+ @env = Env.from(request_env).update(@env)
88
+ self
89
+ end
90
+ end
91
+ end
92
+
93
+ require 'faraday/response/json'
94
+ require 'faraday/response/logger'
95
+ require 'faraday/response/raise_error'
@@ -0,0 +1,150 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faraday
4
+ module Utils
5
+ # A case-insensitive Hash that preserves the original case of a header
6
+ # when set.
7
+ #
8
+ # Adapted from Rack::Utils::HeaderHash
9
+ class Headers < ::Hash
10
+ def self.from(value)
11
+ new(value)
12
+ end
13
+
14
+ def self.allocate
15
+ new_self = super
16
+ new_self.initialize_names
17
+ new_self
18
+ end
19
+
20
+ def initialize(hash = nil)
21
+ super()
22
+ @names = {}
23
+ update(hash || {})
24
+ end
25
+
26
+ def initialize_names
27
+ @names = {}
28
+ end
29
+
30
+ # on dup/clone, we need to duplicate @names hash
31
+ def initialize_copy(other)
32
+ super
33
+ @names = other.names.dup
34
+ end
35
+
36
+ # need to synchronize concurrent writes to the shared KeyMap
37
+ keymap_mutex = Mutex.new
38
+
39
+ # symbol -> string mapper + cache
40
+ KeyMap = Hash.new do |map, key|
41
+ value = if key.respond_to?(:to_str)
42
+ key
43
+ else
44
+ key.to_s.split('_') # user_agent: %w(user agent)
45
+ .each(&:capitalize!) # => %w(User Agent)
46
+ .join('-') # => "User-Agent"
47
+ end
48
+ keymap_mutex.synchronize { map[key] = value }
49
+ end
50
+ KeyMap[:etag] = 'ETag'
51
+
52
+ def [](key)
53
+ key = KeyMap[key]
54
+ super || super(@names[key.downcase])
55
+ end
56
+
57
+ def []=(key, val)
58
+ key = KeyMap[key]
59
+ key = (@names[key.downcase] ||= key)
60
+ # join multiple values with a comma
61
+ val = val.to_ary.join(', ') if val.respond_to?(:to_ary)
62
+ super
63
+ end
64
+
65
+ def fetch(key, ...)
66
+ key = KeyMap[key]
67
+ key = @names.fetch(key.downcase, key)
68
+ super
69
+ end
70
+
71
+ def delete(key)
72
+ key = KeyMap[key]
73
+ key = @names[key.downcase]
74
+ return unless key
75
+
76
+ @names.delete key.downcase
77
+ super
78
+ end
79
+
80
+ def dig(key, *rest)
81
+ key = KeyMap[key]
82
+ key = @names.fetch(key.downcase, key)
83
+ super
84
+ end
85
+
86
+ def include?(key)
87
+ @names.include? key.downcase
88
+ end
89
+
90
+ alias has_key? include?
91
+ alias member? include?
92
+ alias key? include?
93
+
94
+ def merge!(other)
95
+ other.each { |k, v| self[k] = v }
96
+ self
97
+ end
98
+
99
+ alias update merge!
100
+
101
+ def merge(other)
102
+ hash = dup
103
+ hash.merge! other
104
+ end
105
+
106
+ def replace(other)
107
+ clear
108
+ @names.clear
109
+ update other
110
+ self
111
+ end
112
+
113
+ def to_hash
114
+ {}.update(self)
115
+ end
116
+
117
+ def parse(header_string)
118
+ return unless header_string && !header_string.empty?
119
+
120
+ headers = header_string.split("\r\n")
121
+
122
+ # Find the last set of response headers.
123
+ start_index = headers.rindex { |x| x.start_with?('HTTP/') } || 0
124
+ last_response = headers.slice(start_index, headers.size)
125
+
126
+ last_response
127
+ .tap { |a| a.shift if a.first.start_with?('HTTP/') }
128
+ .map { |h| h.split(/:\s*/, 2) } # split key and value
129
+ .reject { |p| p[0].nil? } # ignore blank lines
130
+ .each { |key, value| add_parsed(key, value) }
131
+ end
132
+
133
+ protected
134
+
135
+ attr_reader :names
136
+
137
+ private
138
+
139
+ # Join multiple values with a comma.
140
+ def add_parsed(key, value)
141
+ if key?(key)
142
+ self[key] = self[key].to_s
143
+ self[key] << ', ' << value
144
+ else
145
+ self[key] = value
146
+ end
147
+ end
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faraday
4
+ module Utils
5
+ # A hash with stringified keys.
6
+ class ParamsHash < Hash
7
+ def [](key)
8
+ super(convert_key(key))
9
+ end
10
+
11
+ def []=(key, value)
12
+ super(convert_key(key), value)
13
+ end
14
+
15
+ def delete(key)
16
+ super(convert_key(key))
17
+ end
18
+
19
+ def include?(key)
20
+ super(convert_key(key))
21
+ end
22
+
23
+ alias has_key? include?
24
+ alias member? include?
25
+ alias key? include?
26
+
27
+ def update(params)
28
+ params.each do |key, value|
29
+ self[key] = value
30
+ end
31
+ self
32
+ end
33
+ alias merge! update
34
+
35
+ def merge(params)
36
+ dup.update(params)
37
+ end
38
+
39
+ def replace(other)
40
+ clear
41
+ update(other)
42
+ end
43
+
44
+ def merge_query(query, encoder = nil)
45
+ return self unless query && !query.empty?
46
+
47
+ update((encoder || Utils.default_params_encoder).decode(query))
48
+ end
49
+
50
+ def to_query(encoder = nil)
51
+ (encoder || Utils.default_params_encoder).encode(self)
52
+ end
53
+
54
+ private
55
+
56
+ def convert_key(key)
57
+ key.to_s
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+ require 'faraday/utils/headers'
5
+ require 'faraday/utils/params_hash'
6
+
7
+ module Faraday
8
+ # Utils contains various static helper methods.
9
+ module Utils
10
+ module_function
11
+
12
+ def build_query(params)
13
+ FlatParamsEncoder.encode(params)
14
+ end
15
+
16
+ def build_nested_query(params)
17
+ NestedParamsEncoder.encode(params)
18
+ end
19
+
20
+ def default_space_encoding
21
+ @default_space_encoding ||= '+'
22
+ end
23
+
24
+ class << self
25
+ attr_writer :default_space_encoding
26
+ end
27
+
28
+ ESCAPE_RE = /[^a-zA-Z0-9 .~_-]/
29
+
30
+ def escape(str)
31
+ str.to_s.gsub(ESCAPE_RE) do |match|
32
+ "%#{match.unpack('H2' * match.bytesize).join('%').upcase}"
33
+ end.gsub(' ', default_space_encoding)
34
+ end
35
+
36
+ def unescape(str)
37
+ CGI.unescape str.to_s
38
+ end
39
+
40
+ DEFAULT_SEP = /[&;] */n
41
+
42
+ # Adapted from Rack
43
+ def parse_query(query)
44
+ FlatParamsEncoder.decode(query)
45
+ end
46
+
47
+ def parse_nested_query(query)
48
+ NestedParamsEncoder.decode(query)
49
+ end
50
+
51
+ def default_params_encoder
52
+ @default_params_encoder ||= NestedParamsEncoder
53
+ end
54
+
55
+ def basic_header_from(login, pass)
56
+ value = ["#{login}:#{pass}"].pack('m') # Base64 encoding
57
+ value.delete!("\n")
58
+ "Basic #{value}"
59
+ end
60
+
61
+ class << self
62
+ attr_writer :default_params_encoder
63
+ end
64
+
65
+ # Normalize URI() behavior across Ruby versions
66
+ #
67
+ # url - A String or URI.
68
+ #
69
+ # Returns a parsed URI.
70
+ def URI(url) # rubocop:disable Naming/MethodName
71
+ if url.respond_to?(:host)
72
+ url
73
+ elsif url.respond_to?(:to_str)
74
+ default_uri_parser.call(url)
75
+ else
76
+ raise ArgumentError, 'bad argument (expected URI object or URI string)'
77
+ end
78
+ end
79
+
80
+ def default_uri_parser
81
+ @default_uri_parser ||= Kernel.method(:URI)
82
+ end
83
+
84
+ def default_uri_parser=(parser)
85
+ @default_uri_parser = if parser.respond_to?(:call) || parser.nil?
86
+ parser
87
+ else
88
+ parser.method(:parse)
89
+ end
90
+ end
91
+
92
+ # Receives a String or URI and returns just
93
+ # the path with the query string sorted.
94
+ def normalize_path(url)
95
+ url = URI(url)
96
+ (url.path.start_with?('/') ? url.path : "/#{url.path}") +
97
+ (url.query ? "?#{sort_query_params(url.query)}" : '')
98
+ end
99
+
100
+ # Recursive hash update
101
+ def deep_merge!(target, hash)
102
+ hash.each do |key, value|
103
+ target[key] = if value.is_a?(Hash) && (target[key].is_a?(Hash) || target[key].is_a?(Options))
104
+ deep_merge(target[key], value)
105
+ else
106
+ value
107
+ end
108
+ end
109
+ target
110
+ end
111
+
112
+ # Recursive hash merge
113
+ def deep_merge(source, hash)
114
+ deep_merge!(source.dup, hash)
115
+ end
116
+
117
+ def sort_query_params(query)
118
+ query.split('&').sort.join('&')
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faraday
4
+ VERSION = '2.14.3'
5
+ end
@@ -0,0 +1,158 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cgi/escape'
4
+ require 'cgi/util' if RUBY_VERSION < '3.5'
5
+ require 'date'
6
+ require 'set'
7
+ require 'forwardable'
8
+ require 'faraday/version'
9
+ require 'faraday/methods'
10
+ require 'faraday/error'
11
+ require 'faraday/middleware_registry'
12
+ require 'faraday/utils'
13
+ require 'faraday/options'
14
+ require 'faraday/connection'
15
+ require 'faraday/rack_builder'
16
+ require 'faraday/parameters'
17
+ require 'faraday/middleware'
18
+ require 'faraday/adapter'
19
+ require 'faraday/request'
20
+ require 'faraday/response'
21
+ require 'faraday/net_http'
22
+ # This is the main namespace for Faraday.
23
+ #
24
+ # It provides methods to create {Connection} objects, and HTTP-related
25
+ # methods to use directly.
26
+ #
27
+ # @example Helpful class methods for easy usage
28
+ # Faraday.get "http://faraday.com"
29
+ #
30
+ # @example Helpful class method `.new` to create {Connection} objects.
31
+ # conn = Faraday.new "http://faraday.com"
32
+ # conn.get '/'
33
+ #
34
+ module Faraday
35
+ CONTENT_TYPE = 'Content-Type'
36
+
37
+ class << self
38
+ # The root path that Faraday is being loaded from.
39
+ #
40
+ # This is the root from where the libraries are auto-loaded.
41
+ #
42
+ # @return [String]
43
+ attr_accessor :root_path
44
+
45
+ # Gets or sets the path that the Faraday libs are loaded from.
46
+ # @return [String]
47
+ attr_accessor :lib_path
48
+
49
+ # @overload default_adapter
50
+ # Gets the Symbol key identifying a default Adapter to use
51
+ # for the default {Faraday::Connection}. Defaults to `:net_http`.
52
+ # @return [Symbol] the default adapter
53
+ # @overload default_adapter=(adapter)
54
+ # Updates default adapter while resetting {.default_connection}.
55
+ # @return [Symbol] the new default_adapter.
56
+ attr_reader :default_adapter
57
+
58
+ # Option for the default_adapter
59
+ # @return [Hash] default_adapter options
60
+ attr_accessor :default_adapter_options
61
+
62
+ # Documented below, see default_connection
63
+ attr_writer :default_connection
64
+
65
+ # Tells Faraday to ignore the environment proxy (http_proxy).
66
+ # Defaults to `false`.
67
+ # @return [Boolean]
68
+ attr_accessor :ignore_env_proxy
69
+
70
+ # Initializes a new {Connection}.
71
+ #
72
+ # @param url [String,Hash] The optional String base URL to use as a prefix
73
+ # for all requests. Can also be the options Hash. Any of these
74
+ # values will be set on every request made, unless overridden
75
+ # for a specific request.
76
+ # @param options [Hash]
77
+ # @option options [String] :url Base URL
78
+ # @option options [Hash] :params Hash of unencoded URI query params.
79
+ # @option options [Hash] :headers Hash of unencoded HTTP headers.
80
+ # @option options [Hash] :request Hash of request options.
81
+ # @option options [Hash] :ssl Hash of SSL options.
82
+ # @option options [Hash] :proxy Hash of Proxy options.
83
+ # @return [Faraday::Connection]
84
+ #
85
+ # @example With an URL argument
86
+ # Faraday.new 'http://faraday.com'
87
+ # # => Faraday::Connection to http://faraday.com
88
+ #
89
+ # @example With an URL argument and an options hash
90
+ # Faraday.new 'http://faraday.com', params: { page: 1 }
91
+ # # => Faraday::Connection to http://faraday.com?page=1
92
+ #
93
+ # @example With everything in an options hash
94
+ # Faraday.new url: 'http://faraday.com',
95
+ # params: { page: 1 }
96
+ # # => Faraday::Connection to http://faraday.com?page=1
97
+ def new(url = nil, options = {}, &block)
98
+ options = Utils.deep_merge(default_connection_options, options)
99
+ Faraday::Connection.new(url, options, &block)
100
+ end
101
+
102
+ # Documented elsewhere, see default_adapter reader
103
+ def default_adapter=(adapter)
104
+ @default_connection = nil
105
+ @default_adapter = adapter
106
+ end
107
+
108
+ def respond_to_missing?(symbol, include_private = false)
109
+ default_connection.respond_to?(symbol, include_private) || super
110
+ end
111
+
112
+ # @overload default_connection
113
+ # Gets the default connection used for simple scripts.
114
+ # @return [Faraday::Connection] a connection configured with
115
+ # the default_adapter.
116
+ # @overload default_connection=(connection)
117
+ # @param connection [Faraday::Connection]
118
+ # Sets the default {Faraday::Connection} for simple scripts that
119
+ # access the Faraday constant directly, such as
120
+ # <code>Faraday.get "https://faraday.com"</code>.
121
+ def default_connection
122
+ @default_connection ||= Connection.new(default_connection_options)
123
+ end
124
+
125
+ # Gets the default connection options used when calling {Faraday#new}.
126
+ #
127
+ # @return [Faraday::ConnectionOptions]
128
+ def default_connection_options
129
+ @default_connection_options ||= ConnectionOptions.new
130
+ end
131
+
132
+ # Sets the default options used when calling {Faraday#new}.
133
+ #
134
+ # @param options [Hash, Faraday::ConnectionOptions]
135
+ def default_connection_options=(options)
136
+ @default_connection = nil
137
+ @default_connection_options = ConnectionOptions.from(options)
138
+ end
139
+
140
+ private
141
+
142
+ # Internal: Proxies method calls on the Faraday constant to
143
+ # .default_connection.
144
+ def method_missing(name, *args, &block)
145
+ if default_connection.respond_to?(name)
146
+ default_connection.send(name, *args, &block)
147
+ else
148
+ super
149
+ end
150
+ end
151
+ end
152
+
153
+ self.ignore_env_proxy = false
154
+ self.root_path = File.expand_path __dir__
155
+ self.lib_path = File.expand_path 'faraday', __dir__
156
+ self.default_adapter = :net_http
157
+ self.default_adapter_options = {}
158
+ end