Class: Webex::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/webex/client.rb

Constant Summary collapse

EXCEPTIONS =
[
  Webex::Errors::RequestTimeoutError,
  Webex::Errors::SecondBasedQuotaIsReachedError,
  Webex::Errors::BadGatewayError,
  Webex::Errors::ServiceUnavailableError,
  Webex::Errors::GatewayTimeoutError,
  Webex::Errors::ConflictError
].freeze

Class Method Summary collapse

Class Method Details

.query(query:, operation_name:, variables: {}, headers: {}) ⇒ Webex::Response

Parameters:

  • query (String)

    GraphQL query

  • variables (Hash) (defaults to: {})

    Query variables

  • operation_name (String)

    GraphQL Operation Name such as TracksConnection

  • headers (Hash) (defaults to: {})

Returns:



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/webex/client.rb', line 19

def self.query(query:, operation_name:, variables: {}, headers: {})
  Webex::Events.assert_access_token!

  retries = -1
  start_time = Process.clock_gettime(Process::CLOCK_REALTIME, :millisecond)
  response = Retriable.retriable(on: EXCEPTIONS, tries: Webex::Events::Config.max_retries) do
    retries += 1
    Request.execute(
      query: query,
      variables: variables,
      operation_name: operation_name,
      headers: headers
    )
  end

  end_time = Process.clock_gettime(Process::CLOCK_REALTIME, :millisecond)
  response.retry_count = retries
  response.time_spent_in_ms = end_time - start_time
  response
end