From 32ec721e23606a6ce0616441b0a22a8300e59a92 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Sun, 22 Jun 2025 14:15:53 -0400 Subject: [PATCH] try to toString --- lib/helpers/api_helper.dart | 64 +++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/lib/helpers/api_helper.dart b/lib/helpers/api_helper.dart index 7654eb6..dda1738 100644 --- a/lib/helpers/api_helper.dart +++ b/lib/helpers/api_helper.dart @@ -52,6 +52,39 @@ class ApiHelper { ); } + Future bridgeHandler(Request request) async { + final query = request.url.queryParameters; + final code = query['code']; + final redirectUri = query['redirect_uri']; + + if (code == null || redirectUri == null) { + return Response(400, body: "Missing code or redirect_uri"); + } + + final tokenRes = await tokenHandler( + Request( + "POST", + Uri.base, + body: utf8.encode('code=$code&client_id=proxy'), + ), + ); + + if (tokenRes.statusCode != 200) { + return Response(400, body: "Token post failed"); + } + + final uri = Uri.parse(redirectUri).replace( + queryParameters: { + ...Uri.parse(redirectUri).queryParameters, + ...(json.decode(await tokenRes.readAsString()) as Map).map( + (key, value) => MapEntry(key, value.toString()), + ), + }, + ); + + return Response.found(uri.toString()); + } + Future tokenHandler(Request request) async { final settings = ref.read(SettingsController.provider)!; final body = Uri.splitQueryString(await request.readAsString()); @@ -102,37 +135,6 @@ class ApiHelper { ); } - Future bridgeHandler(Request request) async { - final query = request.url.queryParameters; - final code = query['code']; - final redirectUri = query['redirect_uri']; - - if (code == null || redirectUri == null) { - return Response(400, body: "Missing code or redirect_uri"); - } - - final tokenRes = await tokenHandler( - Request( - "POST", - Uri.base, - body: utf8.encode('code=$code&client_id=proxy'), - ), - ); - - if (tokenRes.statusCode != 200) { - return Response(400, body: "Token post failed"); - } - - final uri = Uri.parse(redirectUri).replace( - queryParameters: { - ...Uri.parse(redirectUri).queryParameters, - ...json.decode(await tokenRes.readAsString()), - }, - ); - - return Response.found(uri.toString()); - } - Future userinfoHandler(Request request) async { final auth = request.headers["authorization"]; if (auth == null || !auth.startsWith("Bearer ")) {