feat: react zitadel
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import { encrypt } from "@platform/vault";
|
||||
|
||||
import {
|
||||
assertServerErrorResponse,
|
||||
type RelayAdapter,
|
||||
@@ -69,10 +67,7 @@ export class HttpAdapter implements RelayAdapter {
|
||||
return `${this.url}${endpoint}`;
|
||||
}
|
||||
|
||||
async send(
|
||||
{ method, endpoint, query, body, headers = new Headers() }: RelayInput,
|
||||
publicKey: string,
|
||||
): Promise<RelayResponse> {
|
||||
async send({ method, endpoint, query, body, headers = new Headers() }: RelayInput): Promise<RelayResponse> {
|
||||
const init: RequestInit = { method, headers };
|
||||
|
||||
// ### Before Request
|
||||
@@ -95,14 +90,6 @@ export class HttpAdapter implements RelayAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
// ### Internal
|
||||
// If public key is present we create a encrypted token on the header that
|
||||
// is verified by the server before allowing the request through.
|
||||
|
||||
if (publicKey !== undefined) {
|
||||
headers.set("x-internal", await encrypt("internal", publicKey));
|
||||
}
|
||||
|
||||
// ### Response
|
||||
|
||||
return this.request(`${endpoint}${query}`, init);
|
||||
@@ -138,6 +125,9 @@ export class HttpAdapter implements RelayAdapter {
|
||||
* @param body - Request body.
|
||||
*/
|
||||
#getRequestFormat(body: unknown): "form-data" | "json" {
|
||||
if (body instanceof FormData) {
|
||||
return "form-data";
|
||||
}
|
||||
if (containsFile(body) === true) {
|
||||
return "form-data";
|
||||
}
|
||||
@@ -245,14 +235,30 @@ export class HttpAdapter implements RelayAdapter {
|
||||
};
|
||||
}
|
||||
|
||||
// ### Error
|
||||
// If the 'content-type' is not a JSON response from the API then we check if the
|
||||
// response status is an error code.
|
||||
|
||||
if (response.status >= 400) {
|
||||
return {
|
||||
result: "error",
|
||||
headers: response.headers,
|
||||
error: {
|
||||
code: "SERVER_ERROR_RESPONSE",
|
||||
status: response.status,
|
||||
message: await response.text(),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// ### Success
|
||||
// If the 'content-type' is not a JSON response from the API and the request is not
|
||||
// an error we simply return the pure response in the data key.
|
||||
|
||||
return {
|
||||
result: "error",
|
||||
result: "success",
|
||||
headers: response.headers,
|
||||
error: {
|
||||
code: "UNSUPPORTED_CONTENT_TYPE",
|
||||
status: response.status,
|
||||
message: "Unsupported 'content-type' in header returned from server.",
|
||||
},
|
||||
data: response,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user