Class: GraphQL::Client::Response
- Inherits:
-
Object
- Object
- GraphQL::Client::Response
- Defined in:
- lib/graphql/client/response.rb
Overview
Public: Abstract base class for GraphQL responses.
https://facebook.github.io/graphql/#sec-Response-Format
Direct Known Subclasses
Instance Attribute Summary collapse
-
#extensions ⇒ Object
readonly
Public: Hash of server specific extension metadata.
Class Method Summary collapse
-
.for(definition, result) ⇒ Object
Internal: Initialize Response subclass.
Instance Method Summary collapse
-
#initialize(extensions: nil) ⇒ Response
constructor
Internal: Initialize base class.
Constructor Details
#initialize(extensions: nil) ⇒ Response
Internal: Initialize base class.
40 41 42 |
# File 'lib/graphql/client/response.rb', line 40 def initialize(extensions: nil) @extensions = extensions || {} end |
Instance Attribute Details
#extensions ⇒ Object (readonly)
Public: Hash of server specific extension metadata.
37 38 39 |
# File 'lib/graphql/client/response.rb', line 37 def extensions @extensions end |
Class Method Details
.for(definition, result) ⇒ Object
Internal: Initialize Response subclass.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/graphql/client/response.rb', line 10 def self.for(definition, result) data, errors, extensions = result.values_at("data", "errors", "extensions") if data && errors PartialResponse.new( data: definition.new(data), errors: ResponseErrors.new(definition, errors), extensions: extensions ) elsif data && !errors SuccessfulResponse.new( data: definition.new(data), extensions: extensions ) elsif !data && errors FailedResponse.new( errors: ResponseErrors.new(definition, errors), extensions: extensions ) else FailedResponse.new( errors: ResponseErrors.new(definition, [{ "message" => "invalid GraphQL response" }]) ) end end |