mirror of
https://github.com/lostisland/faraday.git
synced 2025-10-17 00:05:28 -04:00
allow custom env keys in an embedded hash
This commit is contained in:
parent
7dff04854e
commit
c9c1c4c23e
@ -205,6 +205,22 @@ module Faraday
|
||||
|
||||
def_delegators :request, :params_encoder
|
||||
|
||||
def [](key)
|
||||
if in_member_set?(key)
|
||||
super(key)
|
||||
else
|
||||
custom_members[key]
|
||||
end
|
||||
end
|
||||
|
||||
def []=(key, value)
|
||||
if in_member_set?(key)
|
||||
super(key, value)
|
||||
else
|
||||
custom_members[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
def success?
|
||||
SuccessfulStatuses.include?(status)
|
||||
end
|
||||
@ -225,5 +241,30 @@ module Faraday
|
||||
def parallel?
|
||||
!!parallel_manager
|
||||
end
|
||||
|
||||
def custom_members
|
||||
@custom_members ||= {}
|
||||
end
|
||||
|
||||
def in_member_set?(key)
|
||||
member_set.include?(key.to_sym)
|
||||
end
|
||||
|
||||
def member_set
|
||||
@member_set ||= Set.new(members)
|
||||
end
|
||||
|
||||
def inspect
|
||||
attrs = [nil]
|
||||
members.each do |mem|
|
||||
if value = send(mem)
|
||||
attrs << "@#{mem}=#{value.inspect}"
|
||||
end
|
||||
end
|
||||
if !custom_members.empty?
|
||||
attrs << "@custom=#{custom_members.inspect}"
|
||||
end
|
||||
%(#<#{self.class}#{attrs.join(" ")}>)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -143,5 +143,25 @@ class OptionsTest < Faraday::TestCase
|
||||
assert_equal 1, options.a
|
||||
assert_nil options.b
|
||||
end
|
||||
end
|
||||
|
||||
def test_env_access_member
|
||||
e = Faraday::Env.new
|
||||
assert_nil e.method
|
||||
e.method = :get
|
||||
assert_equal :get, e.method
|
||||
end
|
||||
|
||||
def test_env_access_symbol_non_member
|
||||
e = Faraday::Env.new
|
||||
assert_nil e[:custom]
|
||||
e[:custom] = :boom
|
||||
assert_equal :boom, e[:custom]
|
||||
end
|
||||
|
||||
def test_env_access_string_non_member
|
||||
e = Faraday::Env.new
|
||||
assert_nil e["custom"]
|
||||
e["custom"] = :boom
|
||||
assert_equal :boom, e["custom"]
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user