Class: Rockbox::HttpTransport
- Inherits:
-
Object
- Object
- Rockbox::HttpTransport
- Defined in:
- lib/rockbox/transport.rb
Overview
HTTP transport — POSTs GraphQL queries to rockboxd.
Every outgoing variables hash is camelCased and every incoming ‘data` payload is deep-snakeized so callers see idiomatic Ruby keys.
Constant Summary collapse
- DEFAULT_OPEN_TIMEOUT =
5- DEFAULT_READ_TIMEOUT =
30
Instance Method Summary collapse
-
#execute(query, variables = nil) ⇒ Object
Execute a GraphQL operation.
-
#initialize(url, open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT) ⇒ HttpTransport
constructor
A new instance of HttpTransport.
Constructor Details
#initialize(url, open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT) ⇒ HttpTransport
Returns a new instance of HttpTransport.
22 23 24 25 26 |
# File 'lib/rockbox/transport.rb', line 22 def initialize(url, open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT) @uri = URI.parse(url) @open_timeout = open_timeout @read_timeout = read_timeout end |
Instance Method Details
#execute(query, variables = nil) ⇒ Object
Execute a GraphQL operation. Returns the snake-cased ‘data` Hash.
29 30 31 32 33 34 35 |
# File 'lib/rockbox/transport.rb', line 29 def execute(query, variables = nil) body = { query: query } body[:variables] = CaseConversion.deep_camelize(variables) if variables && !variables.empty? response = perform_request(body) parse_response(response) end |