33namespace Nuwave \Relay \Traits ;
44
55use Illuminate \Http \Request ;
6- use Nuwave \Relay \Context ;
6+ use GraphQL \Language \Source ;
7+ use GraphQL \Language \Parser ;
78
89trait RelayMiddleware
910{
@@ -23,26 +24,18 @@ trait RelayMiddleware
2324 public function queryMiddleware (Request $ request )
2425 {
2526 $ relay = app ('relay ' );
26- $ schema = app ('graphql ' )->schema ();
27- $ query = $ request ->get ('query ' );
28- $ params = $ request ->get ('variables ' );
27+ $ source = new Source ($ request ->get ('query ' , 'GraphQL request ' ));
28+ $ ast = Parser::parse ($ source );
2929
30- if (is_string ($ params )) {
31- $ params = json_decode ($ params , true );
32- }
33-
34- if ($ context = Context::get ($ schema , $ query , null , $ params )) {
35- $ context = Context::get ($ schema , $ query , null , $ params );
36- $ operation = $ context ->operation ->operation ;
37- $ selectionSet = $ context ->operation ->selectionSet ->selections ;
30+ if (isset ($ ast ->definitions [0 ])) {
31+ $ d = $ ast ->definitions [0 ];
32+ $ operation = $ d ->operation ?: 'query ' ;
33+ $ selectionSet = $ d ->selectionSet ->selections ;
3834
3935 foreach ($ selectionSet as $ selection ) {
4036 if (is_object ($ selection ) && $ selection instanceof \GraphQL \Language \AST \Field) {
4137 try {
42- $ schema = $ relay ->find (
43- $ selection ->name ->value ,
44- $ context ->operation ->operation
45- );
38+ $ schema = $ relay ->find ($ selection ->name ->value , $ operation );
4639
4740 if (isset ($ schema ['middleware ' ]) && !empty ($ schema ['middleware ' ])) {
4841 $ this ->relayMiddleware = array_merge ($ this ->relayMiddleware , $ schema ['middleware ' ]);
0 commit comments