Module: HTTPX::Chainable

Included in:
HTTPX, Session
Defined in:
lib/httpx/chainable.rb,
sig/chainable.rbs

Overview

Session mixin, implements most of the APIs that the users call. delegates to a default session when extended.

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, **options, &blk) ⇒ Object (private)



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/httpx/chainable.rb', line 56

def method_missing(meth, *args, **options, &blk)
  case meth
  when /\Awith_(.+)/

    option = Regexp.last_match(1)

    return super unless option

    with(option.to_sym => args.first || options)
  when /\Aon_(.+)/
    callback = Regexp.last_match(1)

    return super unless %w[
      connection_opened connection_closed
      request_error
      request_started request_body_chunk request_completed
      response_started response_body_chunk response_completed
    ].include?(callback)

    warn "DEPRECATION WARNING: calling `.#{meth}` on plain HTTPX sessions is deprecated. " \
         "Use `HTTPX.plugin(:callbacks).#{meth}` instead."

    plugin(:callbacks).__send__(meth, *args, **options, &blk)
  else
    super
  end
end

Instance Method Details

#accept(type) ⇒ Session

Parameters:

  • (String)

Returns:



20
21
22
# File 'lib/httpx/chainable.rb', line 20

def accept(type)
  with(headers: { "accept" => String(type) })
end

#branch(arg0) ⇒ Session #branch(arg0) ⇒ Session

returns a default instance of HTTPX::Session.

Overloads:

  • #branch(arg0) ⇒ Session

    Parameters:

    • arg0 (options)

    Returns:

  • #branch(arg0) ⇒ Session

    Parameters:

    • arg0 (options)

    Returns:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


50
51
52
53
54
# File 'lib/httpx/chainable.rb', line 50

def branch(options, &blk)
  return self.class.new(options, &blk) if is_a?(S)

  Session.new(options, &blk)
end

#default_optionsOptions

returns default instance of HTTPX::Options.

Returns:



45
46
47
# File 'lib/httpx/chainable.rb', line 45

def default_options
  @options || Session.default_options
end

#plugin(arg0, arg1) ⇒ Plugins::sessionAuth #plugin(arg0, arg1) ⇒ Plugins::sessionBasicAuth #plugin(arg0, arg1) ⇒ Plugins::sessionDigestAuth #plugin(arg0, arg1) ⇒ Plugins::sessionNTLMAuth #plugin(arg0, arg1) ⇒ Plugins::sessionNTLMV2Auth #plugin(arg0, arg1) ⇒ Plugins::sessionAwsSdkAuthentication #plugin(arg0, arg1) ⇒ Session #plugin(arg0, arg1) ⇒ Plugins::sessionCookies #plugin(arg0, arg1) ⇒ Session #plugin(arg0, arg1) ⇒ Plugins::sessionFollowRedirects #plugin(arg0, arg1) ⇒ Plugins::sessionUpgrade #plugin(arg0, arg1) ⇒ Plugins::sessionUpgrade #plugin(arg0, arg1) ⇒ Plugins::sessionUpgrade #plugin(arg0, arg1) ⇒ Plugins::sessionFiberConcurrency #plugin(arg0, arg1) ⇒ Plugins::sessionPersistent #plugin(arg0, arg1) ⇒ Plugins::sessionProxy & Plugins::httpProxy #plugin(arg0, arg1) ⇒ Plugins::sessionPushPromise #plugin(arg0, arg1) ⇒ Plugins::sessionRetries #plugin(arg0, arg1) ⇒ Plugins::sessionRateLimiter #plugin(arg0, arg1) ⇒ Plugins::sessionStream #plugin(arg0, arg1) ⇒ Plugins::sessionStreamBidi #plugin(arg0, arg1) ⇒ Plugins::sessionServerSentEvents #plugin(arg0, arg1) ⇒ Plugins::awsSigV4Session #plugin(arg0, arg1) ⇒ Plugins::grpcSession #plugin(arg0, arg1) ⇒ Plugins::sessionCache #plugin(arg0, arg1) ⇒ Plugins::sessionResponseCache #plugin(arg0, arg1) ⇒ Plugins::sessionCircuitBreaker #plugin(arg0, arg1) ⇒ Plugins::sessionOAuth #plugin(arg0, arg1) ⇒ Plugins::sessionCallbacks #plugin(arg0, arg1) ⇒ Plugins::sessionContentDigest #plugin(arg0, arg1) ⇒ Plugins::sessionSsrf #plugin(arg0, arg1) ⇒ Plugins::sessionWebDav #plugin(arg0, arg1) ⇒ Plugins::sessionXML #plugin(arg0, arg1) ⇒ Plugins::sessionQuery #plugin(arg0, arg1) ⇒ Plugins::sessionTracing #plugin(arg0, arg1) ⇒ Session #plugin(arg0, arg1) ⇒ Session

returns a new instance loaded with the pl plugin and options.

Overloads:

  • #plugin(arg0, arg1) ⇒ Plugins::sessionAuth

    Parameters:

    • arg0 (:auth)
    • arg1 (options)

    Returns:

    • (Plugins::sessionAuth)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionBasicAuth

    Parameters:

    • arg0 (:basic_auth)
    • arg1 (options)

    Returns:

    • (Plugins::sessionBasicAuth)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionDigestAuth

    Parameters:

    • arg0 (:digest_auth)
    • arg1 (options)

    Returns:

    • (Plugins::sessionDigestAuth)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionNTLMAuth

    Parameters:

    • arg0 (:ntlm_auth)
    • arg1 (options)

    Returns:

    • (Plugins::sessionNTLMAuth)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionNTLMV2Auth

    Parameters:

    • arg0 (:ntlm_v2_auth)
    • arg1 (options)

    Returns:

    • (Plugins::sessionNTLMV2Auth)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionAwsSdkAuthentication

    Parameters:

    • arg0 (:aws_sdk_authentication)
    • arg1 (options)

    Returns:

    • (Plugins::sessionAwsSdkAuthentication)
  • #plugin(arg0, arg1) ⇒ Session

    Parameters:

    • arg0 (:brotli)
    • arg1 (options)

    Returns:

  • #plugin(arg0, arg1) ⇒ Plugins::sessionCookies

    Parameters:

    • arg0 (:cookies)
    • arg1 (options)

    Returns:

    • (Plugins::sessionCookies)
  • #plugin(arg0, arg1) ⇒ Session

    Parameters:

    • arg0 (:expect)
    • arg1 (options)

    Returns:

  • #plugin(arg0, arg1) ⇒ Plugins::sessionFollowRedirects

    Parameters:

    • arg0 (:follow_redirects)
    • arg1 (options)

    Returns:

    • (Plugins::sessionFollowRedirects)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionUpgrade

    Parameters:

    • arg0 (:upgrade)
    • arg1 (options)

    Returns:

    • (Plugins::sessionUpgrade)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionUpgrade

    Parameters:

    • arg0 (:h2c)
    • arg1 (options)

    Returns:

    • (Plugins::sessionUpgrade)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionUpgrade

    Parameters:

    • arg0 (:h2)
    • arg1 (options)

    Returns:

    • (Plugins::sessionUpgrade)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionFiberConcurrency

    Parameters:

    • arg0 (:fiber_concurrency)
    • arg1 (options)

    Returns:

    • (Plugins::sessionFiberConcurrency)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionPersistent

    Parameters:

    • arg0 (:persistent)
    • arg1 (options)

    Returns:

    • (Plugins::sessionPersistent)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionProxy & Plugins::httpProxy

    Parameters:

    • arg0 (:proxy)
    • arg1 (options)

    Returns:

    • (Plugins::sessionProxy & Plugins::httpProxy)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionPushPromise

    Parameters:

    • arg0 (:push_promise)
    • arg1 (options)

    Returns:

    • (Plugins::sessionPushPromise)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionRetries

    Parameters:

    • arg0 (:retries)
    • arg1 (options)

    Returns:

    • (Plugins::sessionRetries)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionRateLimiter

    Parameters:

    • arg0 (:rate_limiter)
    • arg1 (options)

    Returns:

    • (Plugins::sessionRateLimiter)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionStream

    Parameters:

    • arg0 (:stream)
    • arg1 (options)

    Returns:

    • (Plugins::sessionStream)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionStreamBidi

    Parameters:

    • arg0 (:stream_bidi)
    • arg1 (options)

    Returns:

    • (Plugins::sessionStreamBidi)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionServerSentEvents

    Parameters:

    • arg0 (:server_sent_events)
    • arg1 (options)

    Returns:

    • (Plugins::sessionServerSentEvents)
  • #plugin(arg0, arg1) ⇒ Plugins::awsSigV4Session

    Parameters:

    • arg0 (:aws_sigv4)
    • arg1 (options)

    Returns:

    • (Plugins::awsSigV4Session)
  • #plugin(arg0, arg1) ⇒ Plugins::grpcSession

    Parameters:

    • arg0 (:grpc)
    • arg1 (options)

    Returns:

    • (Plugins::grpcSession)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionCache

    Parameters:

    • arg0 (:cache)
    • arg1 (options)

    Returns:

    • (Plugins::sessionCache)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionResponseCache

    Parameters:

    • arg0 (:response_cache)
    • arg1 (options)

    Returns:

    • (Plugins::sessionResponseCache)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionCircuitBreaker

    Parameters:

    • arg0 (:circuit_breaker)
    • arg1 (options)

    Returns:

    • (Plugins::sessionCircuitBreaker)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionOAuth

    Parameters:

    • arg0 (:oauth)
    • arg1 (options)

    Returns:

    • (Plugins::sessionOAuth)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionCallbacks

    Parameters:

    • arg0 (:callbacks)
    • arg1 (options)

    Returns:

    • (Plugins::sessionCallbacks)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionContentDigest

    Parameters:

    • arg0 (:content_digest)
    • arg1 (options)

    Returns:

    • (Plugins::sessionContentDigest)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionSsrf

    Parameters:

    • arg0 (:ssrf_filter)
    • arg1 (options)

    Returns:

    • (Plugins::sessionSsrf)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionWebDav

    Parameters:

    • arg0 (:webdav)
    • arg1 (options)

    Returns:

    • (Plugins::sessionWebDav)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionXML

    Parameters:

    • arg0 (:xml)
    • arg1 (options)

    Returns:

    • (Plugins::sessionXML)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionQuery

    Parameters:

    • arg0 (:query)
    • arg1 (options)

    Returns:

    • (Plugins::sessionQuery)
  • #plugin(arg0, arg1) ⇒ Plugins::sessionTracing

    Parameters:

    • arg0 (:tracing)
    • arg1 (options)

    Returns:

    • (Plugins::sessionTracing)
  • #plugin(arg0, arg1) ⇒ Session

    Parameters:

    • arg0 (Symbol, Module)
    • arg1 (options)

    Returns:

  • #plugin(arg0, arg1) ⇒ Session

    Parameters:

    • arg0 (Symbol, Module)
    • arg1 (options)

    Returns:

Yields:

Yield Parameters:

  • arg0 (Class)

Yield Returns:

  • (void)


30
31
32
33
34
35
# File 'lib/httpx/chainable.rb', line 30

def plugin(pl, options = nil, &blk)
  klass = is_a?(S) ? self.class : Session
  klass = Class.new(klass)
  klass.instance_variable_set(:@default_options, klass.default_options.merge(default_options))
  klass.plugin(pl, options, &blk).new
end

#request(arg0, arg1) ⇒ response #request(arg0, arg1) ⇒ Array[response] #request(arg0, arg1, arg2) ⇒ response #request(arg0, arg1) ⇒ Array[response] #request(arg0, arg1, arg2) ⇒ Array[response]

delegates to the default session (see HTTPX::Session#request).

Overloads:

  • #request(arg0, arg1) ⇒ response

    Parameters:

    Returns:

    • (response)
  • #request(arg0, arg1) ⇒ Array[response]

    Parameters:

    Returns:

    • (Array[response])
  • #request(arg0, arg1, arg2) ⇒ response

    Parameters:

    • arg0 (verb)
    • arg1 (uri, [uri])
    • arg2 (Object)

    Returns:

    • (response)
  • #request(arg0, arg1) ⇒ Array[response]

    Parameters:

    • arg0 (Array[[verb, uri] | [verb, uri, request_params]])
    • arg1 (Object)

    Returns:

    • (Array[response])
  • #request(arg0, arg1, arg2) ⇒ Array[response]

    Parameters:

    • arg0 (verb)
    • arg1 (_Each[uri | [uri, request_params]])
    • arg2 (Object)

    Returns:

    • (Array[response])


16
17
18
# File 'lib/httpx/chainable.rb', line 16

def request(*args, **options)
  branch(default_options).request(*args, **options)
end

#with(arg0) ⇒ Session #with(arg0) ⇒ void

returns a new instance loaded with options.

Overloads:

  • #with(arg0) ⇒ Session

    Parameters:

    • arg0 (options)

    Returns:

  • #with(arg0) ⇒ void

    This method returns an undefined value.

    Parameters:

    • arg0 (options)

Yields:

Yield Parameters:

Yield Returns:

  • (void)


38
39
40
# File 'lib/httpx/chainable.rb', line 38

def with(options, &blk)
  branch(default_options.merge(options), &blk)
end

#wrap {|arg0| ... } ⇒ void

This method returns an undefined value.

delegates to the default session (see HTTPX::Session#wrap).

Yields:

Yield Parameters:

Yield Returns:

  • (void)


25
26
27
# File 'lib/httpx/chainable.rb', line 25

def wrap(&blk)
  branch(default_options).wrap(&blk)
end