Module: GraphQL::Schema::Member::HasArguments::ArgumentObjectLoader Private
- Included in:
- InputObject
- Defined in:
- lib/graphql/schema/member/has_arguments.rb
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Instance Method Summary collapse
-
#load_application_object(argument, lookup_as_type, id, context) ⇒ Object
private
-
#load_application_object_failed(err) ⇒ Object
private
-
#object_from_id(type, id, context) ⇒ Object
private
Look up the corresponding object for a provided ID.
Instance Method Details
#load_application_object(argument, lookup_as_type, id, context) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
# File 'lib/graphql/schema/member/has_arguments.rb', line 189 def load_application_object(argument, lookup_as_type, id, context) # See if any object can be found for this ID if id.nil? return nil end loaded_application_object = object_from_id(lookup_as_type, id, context) context.schema.after_lazy(loaded_application_object) do |application_object| if application_object.nil? err = GraphQL::LoadApplicationObjectFailedError.new(argument: argument, id: id, object: application_object) load_application_object_failed(err) end # Double-check that the located object is actually of this type # (Don't want to allow arbitrary access to objects this way) resolved_application_object_type = context.schema.resolve_type(lookup_as_type, application_object, context) context.schema.after_lazy(resolved_application_object_type) do |application_object_type| possible_object_types = context.warden.possible_types(lookup_as_type) if !possible_object_types.include?(application_object_type) err = GraphQL::LoadApplicationObjectFailedError.new(argument: argument, id: id, object: application_object) load_application_object_failed(err) else # This object was loaded successfully # and resolved to the right type, # now apply the `.authorized?` class method if there is one if (class_based_type = application_object_type.type_class) context.schema.after_lazy(class_based_type.(application_object, context)) do |authed| if authed application_object else raise GraphQL::UnauthorizedError.new( object: application_object, type: class_based_type, context: context, ) end end else application_object end end end end end |
#load_application_object_failed(err) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
232 233 234 |
# File 'lib/graphql/schema/member/has_arguments.rb', line 232 def load_application_object_failed(err) raise err end |
#object_from_id(type, id, context) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Look up the corresponding object for a provided ID. By default, it uses Relay-style GraphQL::Schema.object_from_id, override this to find objects another way.
185 186 187 |
# File 'lib/graphql/schema/member/has_arguments.rb', line 185 def object_from_id(type, id, context) context.schema.object_from_id(id, context) end |