2424import static okhttp3 .MediaType .parse ;
2525
2626import com .fasterxml .jackson .core .type .TypeReference ;
27+ import com .kobylynskyi .graphql .codegen .model .graphql .GraphQLOperationRequest ;
28+ import com .kobylynskyi .graphql .codegen .model .graphql .GraphQLRequest ;
29+ import com .kobylynskyi .graphql .codegen .model .graphql .GraphQLResponseProjection ;
2730import com .spotify .github .Tracer ;
2831import com .spotify .github .jackson .Json ;
2932import com .spotify .github .v3 .Team ;
4144import com .spotify .github .v3 .repos .CommitItem ;
4245import com .spotify .github .v3 .repos .FolderContent ;
4346import com .spotify .github .v3 .repos .Repository ;
44- import com .spotify .github .v3 .repos .Status ;
4547import com .spotify .github .v3 .repos .RepositoryInvitation ;
46-
48+ import com . spotify . github . v3 . repos . Status ;
4749import java .io .*;
4850import java .lang .invoke .MethodHandles ;
4951import java .net .URI ;
5860import java .util .function .Consumer ;
5961import javax .ws .rs .core .HttpHeaders ;
6062import javax .ws .rs .core .MediaType ;
61-
6263import okhttp3 .*;
6364import org .apache .commons .io .FileUtils ;
6465import org .slf4j .Logger ;
@@ -447,7 +448,7 @@ Json json() {
447448 */
448449 CompletableFuture <Response > request (final String path ) {
449450 final Request request = requestBuilder (path ).build ();
450- log .debug ("Making request to {}" , request .url (). toString () );
451+ log .debug ("Making request to {}" , request .url ());
451452 return call (request );
452453 }
453454
@@ -462,7 +463,7 @@ CompletableFuture<Response> request(final String path, final Map<String, String>
462463 final Request .Builder builder = requestBuilder (path );
463464 extraHeaders .forEach (builder ::addHeader );
464465 final Request request = builder .build ();
465- log .debug ("Making request to {}" , request .url (). toString () );
466+ log .debug ("Making request to {}" , request .url ());
466467 return call (request );
467468 }
468469
@@ -474,7 +475,7 @@ CompletableFuture<Response> request(final String path, final Map<String, String>
474475 */
475476 <T > CompletableFuture <T > request (final String path , final Class <T > clazz ) {
476477 final Request request = requestBuilder (path ).build ();
477- log .debug ("Making request to {}" , request .url (). toString () );
478+ log .debug ("Making request to {}" , request .url ());
478479 return call (request )
479480 .thenApply (body -> json ().fromJsonUncheckedNotNull (responseBodyUnchecked (body ), clazz ));
480481 }
@@ -491,7 +492,7 @@ <T> CompletableFuture<T> request(
491492 final Request .Builder builder = requestBuilder (path );
492493 extraHeaders .forEach (builder ::addHeader );
493494 final Request request = builder .build ();
494- log .debug ("Making request to {}" , request .url (). toString () );
495+ log .debug ("Making request to {}" , request .url ());
495496 return call (request )
496497 .thenApply (body -> json ().fromJsonUncheckedNotNull (responseBodyUnchecked (body ), clazz ));
497498 }
@@ -510,7 +511,7 @@ <T> CompletableFuture<T> request(
510511 final Request .Builder builder = requestBuilder (path );
511512 extraHeaders .forEach (builder ::addHeader );
512513 final Request request = builder .build ();
513- log .debug ("Making request to {}" , request .url (). toString () );
514+ log .debug ("Making request to {}" , request .url ());
514515 return call (request )
515516 .thenApply (
516517 response ->
@@ -525,7 +526,7 @@ <T> CompletableFuture<T> request(
525526 */
526527 <T > CompletableFuture <T > request (final String path , final TypeReference <T > typeReference ) {
527528 final Request request = requestBuilder (path ).build ();
528- log .debug ("Making request to {}" , request .url (). toString () );
529+ log .debug ("Making request to {}" , request .url ());
529530 return call (request )
530531 .thenApply (
531532 response ->
@@ -544,7 +545,7 @@ CompletableFuture<Response> post(final String path, final String data) {
544545 requestBuilder (path )
545546 .method ("POST" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), data ))
546547 .build ();
547- log .debug ("Making POST request to {}" , request .url (). toString () );
548+ log .debug ("Making POST request to {}" , request .url ());
548549 return call (request );
549550 }
550551
@@ -563,7 +564,7 @@ CompletableFuture<Response> post(
563564 .method ("POST" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), data ));
564565 extraHeaders .forEach (builder ::addHeader );
565566 final Request request = builder .build ();
566- log .debug ("Making POST request to {}" , request .url (). toString () );
567+ log .debug ("Making POST request to {}" , request .url ());
567568 return call (request );
568569 }
569570
@@ -603,18 +604,21 @@ <T> CompletableFuture<T> post(final String path, final String data, final Class<
603604 /**
604605 * Make a POST request to the graphql endpoint of Github
605606 *
606- * @param data request body as stringified JSON
607+ * @param queryRequest GraphQLOperationRequest object with query or mutation request
608+ * @param responseProjection Select what fields are required in the response
607609 * @return response
608610 *
609611 * @see "https://docs.github.com/en/[email protected] /graphql/guides/forming-calls-with-graphql#communicating-with-graphql" 610612 */
611- public CompletableFuture <Response > postGraphql (final String data ) {
613+ public CompletableFuture <Response > queryGraphQL (final GraphQLOperationRequest queryRequest , final GraphQLResponseProjection responseProjection ) {
614+ GraphQLRequest graphqlRequest = new GraphQLRequest (queryRequest , responseProjection );
615+ String body = graphqlRequest .toQueryString ();
612616 final Request request =
613- graphqlRequestBuilder ()
614- .method ("POST" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), data ))
615- .build ();
616- log .info ("Making POST request to {}" , request .url ());
617- return call (request );
617+ graphqlRequestBuilder ()
618+ .method ("POST" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), body ))
619+ .build ();
620+ log .info ("Making GraphQL Query POST request to {}, with body {} " , request .url (), body );
621+ return this . call (request );
618622 }
619623
620624 /**
@@ -629,7 +633,7 @@ CompletableFuture<Response> put(final String path, final String data) {
629633 requestBuilder (path )
630634 .method ("PUT" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), data ))
631635 .build ();
632- log .debug ("Making POST request to {}" , request .url (). toString () );
636+ log .debug ("Making POST request to {}" , request .url ());
633637 return call (request );
634638 }
635639
@@ -659,7 +663,7 @@ CompletableFuture<Response> patch(final String path, final String data) {
659663 requestBuilder (path )
660664 .method ("PATCH" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), data ))
661665 .build ();
662- log .debug ("Making PATCH request to {}" , request .url (). toString () );
666+ log .debug ("Making PATCH request to {}" , request .url ());
663667 return call (request );
664668 }
665669
@@ -695,7 +699,7 @@ <T> CompletableFuture<T> patch(
695699 .method ("PATCH" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), data ));
696700 extraHeaders .forEach (builder ::addHeader );
697701 final Request request = builder .build ();
698- log .debug ("Making PATCH request to {}" , request .url (). toString () );
702+ log .debug ("Making PATCH request to {}" , request .url ());
699703 return call (request )
700704 .thenApply (
701705 response -> json ().fromJsonUncheckedNotNull (responseBodyUnchecked (response ), clazz ));
@@ -709,7 +713,7 @@ <T> CompletableFuture<T> patch(
709713 */
710714 CompletableFuture <Response > delete (final String path ) {
711715 final Request request = requestBuilder (path ).delete ().build ();
712- log .debug ("Making DELETE request to {}" , request .url (). toString () );
716+ log .debug ("Making DELETE request to {}" , request .url ());
713717 return call (request );
714718 }
715719
@@ -725,7 +729,7 @@ CompletableFuture<Response> delete(final String path, final String data) {
725729 requestBuilder (path )
726730 .method ("DELETE" , RequestBody .create (parse (MediaType .APPLICATION_JSON ), data ))
727731 .build ();
728- log .debug ("Making DELETE request to {}" , request .url (). toString () );
732+ log .debug ("Making DELETE request to {}" , request .url ());
729733 return call (request );
730734 }
731735
0 commit comments