3
3
namespace Nuwave \Relay \Traits ;
4
4
5
5
use Illuminate \Http \Request ;
6
- use Nuwave \Relay \Context ;
6
+ use GraphQL \Language \Source ;
7
+ use GraphQL \Language \Parser ;
7
8
8
9
trait RelayMiddleware
9
10
{
@@ -23,26 +24,18 @@ trait RelayMiddleware
23
24
public function queryMiddleware (Request $ request )
24
25
{
25
26
$ 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 );
29
29
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 ;
38
34
39
35
foreach ($ selectionSet as $ selection ) {
40
36
if (is_object ($ selection ) && $ selection instanceof \GraphQL \Language \AST \Field) {
41
37
try {
42
- $ schema = $ relay ->find (
43
- $ selection ->name ->value ,
44
- $ context ->operation ->operation
45
- );
38
+ $ schema = $ relay ->find ($ selection ->name ->value , $ operation );
46
39
47
40
if (isset ($ schema ['middleware ' ]) && !empty ($ schema ['middleware ' ])) {
48
41
$ this ->relayMiddleware = array_merge ($ this ->relayMiddleware , $ schema ['middleware ' ]);
0 commit comments