1
0
Fork 0
mirror of synced 2024-06-28 19:20:25 +12:00

Fix requests using x-sdk-graphql header

This commit is contained in:
Jake Barnby 2022-10-13 17:33:55 +13:00
parent 4e60db0598
commit e4673aaa50
No known key found for this signature in database
GPG key ID: C437A8CC85B96E9C

View file

@ -23,7 +23,9 @@ App::get('/v1/graphql')
->label('sdk.method', 'query')
->label('sdk.methodType', 'graphql')
->label('sdk.description', '/docs/references/graphql/query.md')
->label('sdk.parameters', ['query' => ['default' => '', 'validator' => new JSON(), 'description' => 'The query or queries to execute.', 'optional' => false]])
->label('sdk.parameters', [
'query' => ['default' => '', 'validator' => new JSON(), 'description' => 'The query or queries to execute.', 'optional' => false],
])
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_ANY)
@ -44,7 +46,9 @@ App::post('/v1/graphql')
->label('sdk.method', 'mutate')
->label('sdk.methodType', 'graphql')
->label('sdk.description', '/docs/references/graphql/mutate.md')
->label('sdk.parameters', ['query' => ['default' => '', 'validator' => new JSON(), 'description' => 'The query or queries to execute.', 'optional' => false]])
->label('sdk.parameters', [
'query' => ['default' => '', 'validator' => new JSON(), 'description' => 'The query or queries to execute.', 'optional' => false],
])
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_ANY)
@ -56,30 +60,6 @@ App::post('/v1/graphql')
->inject('schema')
->action(Closure::fromCallable('executeRequest'));
App::post('/v1/graphql/upload')
->desc('GraphQL Upload Endpoint')
->groups(['graphql'])
->label('scope', 'graphql')
->label('sdk.auth', [APP_AUTH_TYPE_KEY, APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_JWT])
->label('sdk.namespace', 'graphql')
->label('sdk.method', 'upload')
->label('sdk.methodType', 'graphql')
->label('sdk.description', '/docs/references/graphql/upload.md')
->label('sdk.methodType', 'upload')
->label('sdk.parameters', ['query' => ['default' => '', 'validator' => new JSON(), 'description' => 'The query or queries to execute.', 'optional' => false]])
->label('sdk.request.type', 'multipart/form-data')
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_ANY)
->label('abuse-limit', 60)
->label('abuse-time', 60)
->inject('request')
->inject('response')
->inject('promiseAdapter')
->inject('schema')
->action(Closure::fromCallable('executeRequest'));
/**
* Execute a GraphQL request
*
@ -97,13 +77,12 @@ function executeRequest(
Type\Schema $schema
): void {
$query = $request->getParams();
$contentType = $request->getHeader('content-type');
if ($request->getHeader('x-sdk-graphql') == 'true') {
$query = \json_decode($query['query'], true);
$query = $query['query'];
}
$contentType = $request->getHeader('content-type');
$maxBatchSize = App::getEnv('_APP_GRAPHQL_MAX_BATCH_SIZE', 10);
$maxComplexity = App::getEnv('_APP_GRAPHQL_MAX_COMPLEXITY', 250);
$maxDepth = App::getEnv('_APP_GRAPHQL_MAX_DEPTH', 3);
@ -178,7 +157,7 @@ function executeRequest(
*/
function parseGraphql(Request $request): array
{
return [ 'query' => $request->getRawContent() ];
return [ 'query' => $request->getRawPayload() ];
}
/**
@ -211,7 +190,7 @@ function parseMultipart(array $query, Request $request): array
}
/**
* Process an array of results for output
* Process an array of results for output.
*
* @param $result
* @param $debugFlags
@ -221,10 +200,10 @@ function processResult($result, $debugFlags): array
{
if (!isset($result[1])) {
return $result[0]->toArray($debugFlags);
} else {
return \array_merge_recursive(...\array_map(
static fn ($item) => $item->toArray($debugFlags),
$result
));
}
return \array_merge_recursive(...\array_map(
static fn ($item) => $item->toArray($debugFlags),
$result
));
}