@@ -13,14 +13,18 @@ import { EmulatorsController } from "../core/emulators";
1313import { dataConnectConfigs } from "../data-connect/config" ;
1414
1515import { firebaseRC } from "../core/config" ;
16- import { executeGraphQL } from "../../../src/dataconnect/dataplaneClient" ;
16+ import {
17+ dataconnectDataplaneClient ,
18+ executeGraphQL ,
19+ DATACONNECT_API_VERSION ,
20+ } from "../../../src/dataconnect/dataplaneClient" ;
1721import {
1822 ExecuteGraphqlRequest ,
1923 ExecuteGraphqlResponse ,
2024 ExecuteGraphqlResponseError ,
2125 Impersonation ,
2226} from "../dataconnect/types" ;
23- import { ClientResponse } from "../apiv2" ;
27+ import { Client , ClientResponse } from "../../../src /apiv2" ;
2428import { InstanceType } from "./code-lens-provider" ;
2529import { pluginLogger } from "../logger-wrapper" ;
2630import { DataConnectToolkit } from "./toolkit" ;
@@ -78,47 +82,35 @@ export class DataConnectService {
7882 return response . text ( ) ;
7983 }
8084 private async handleProdResponse (
81- clientResponse : ClientResponse <
85+ response : ClientResponse <
8286 ExecuteGraphqlResponse | ExecuteGraphqlResponseError
8387 > ,
8488 ) : Promise < ExecutionResult > {
85- if ( ! ( clientResponse . status >= 200 && clientResponse . status < 300 ) ) {
89+ if ( ! ( response . status >= 200 && response . status < 300 ) ) {
8690 const errorResponse =
87- clientResponse as ClientResponse < ExecuteGraphqlResponseError > ;
91+ response as ClientResponse < ExecuteGraphqlResponseError > ;
8892 throw new DataConnectError (
89- `Request failed with status ${ clientResponse . status } ` ,
90- errorResponse . body . error . message ,
93+ `Prod Request failed with status ${ response . status } \nMessage ${ errorResponse ?. body ?. error ?. message } ` ,
9194 ) ;
9295 }
93- const successResponse =
94- clientResponse as ClientResponse < ExecuteGraphqlResponse > ;
96+ const successResponse = response as ClientResponse < ExecuteGraphqlResponse > ;
9597 return successResponse . body ;
9698 }
9799
98- private async handleValidResponse (
99- response : Response ,
100+ private async handleEmulatorResponse (
101+ response : ClientResponse <
102+ ExecuteGraphqlResponse | ExecuteGraphqlResponseError
103+ > ,
100104 ) : Promise < ExecutionResult > {
101- const json = await this . decodeResponse ( response , "application/json" ) ;
102- assertExecutionResult ( json ) ;
103-
104- return json ;
105- }
106-
107- private async handleInvalidResponse ( response : Response ) : Promise < never > {
108- const cause = await this . decodeResponse ( response ) ;
109-
110- throw new DataConnectError (
111- `Request failed with status ${ response . status } ` ,
112- cause ,
113- ) ;
114- }
115-
116- private handleResponse ( response : Response ) : Promise < ExecutionResult > {
117- if ( response . status >= 200 && response . status < 300 ) {
118- return this . handleValidResponse ( response ) ;
105+ if ( ! ( response . status >= 200 && response . status < 300 ) ) {
106+ const errorResponse =
107+ response as ClientResponse < ExecuteGraphqlResponseError > ;
108+ throw new DataConnectError (
109+ `Emulator Request failed with status ${ response . status } \nMessage ${ errorResponse ?. body ?. error ?. message } ` ,
110+ ) ;
119111 }
120-
121- return this . handleInvalidResponse ( response ) ;
112+ const successResponse = response as ClientResponse < ExecuteGraphqlResponse > ;
113+ return successResponse . body ;
122114 }
123115
124116 /** Encode a body while handling the fact that "variables" is raw JSON.
@@ -243,23 +235,22 @@ export class DataConnectService {
243235 extensions : this . _auth ( ) ,
244236 } ) ;
245237 if ( params . instance === InstanceType . PRODUCTION ) {
246- const resp = await executeGraphQL ( servicePath , prodBody ) ;
238+ const client = dataconnectDataplaneClient ( ) ;
239+ const resp = await executeGraphQL ( client , servicePath , prodBody ) ;
247240 return this . handleProdResponse ( resp ) ;
248241 } else {
249- const resp = await fetch (
250- ( await this . emulatorsController . getLocalEndpoint ( ) ) +
251- `/v1beta/${ servicePath } :executeGraphql` ,
252- {
253- method : "POST" ,
254- headers : {
255- Accept : "application/json" ,
256- "Content-Type" : "application/json" ,
257- "x-mantle-admin" : "all" ,
258- } ,
259- body,
260- } ,
261- ) ;
262- return this . handleResponse ( resp ) ;
242+ const endpoint = this . emulatorsController . getLocalEndpoint ( ) ;
243+ if ( ! endpoint ) {
244+ throw new DataConnectError (
245+ `Emulator isn't running. Please start your emulator!` ,
246+ ) ;
247+ }
248+ const client = new Client ( {
249+ urlPrefix : endpoint ,
250+ apiVersion : DATACONNECT_API_VERSION ,
251+ } ) ;
252+ const resp = await executeGraphQL ( client , servicePath , prodBody ) ;
253+ return this . handleEmulatorResponse ( resp ) ;
263254 }
264255 }
265256
0 commit comments