fix 3 places where API URLs were not constructed by function route (#451)

* Fixed 3 places where API URLs were not constructed by function route(path, params).

* autofix

---------

Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
This commit is contained in:
db8200 2023-07-23 06:11:29 +02:00 committed by GitHub
parent 27dad0e118
commit 06eb6c1f91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 7 deletions

View file

@ -15,10 +15,12 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { route } from "../../lib/api/base";
function getQRCodeUrl(): string { function getQRCodeUrl(): string {
const currentURL = window.location.href; const currentURL = window.location.href;
return `/api/v1/qrcode?data=${encodeURIComponent(currentURL)}`; return route(`/qrcode`, { data: encodeURIComponent(currentURL) });
} }
</script> </script>

View file

@ -1,4 +1,5 @@
import { Requests } from "../../requests"; import { Requests } from "../../requests";
import { route } from ".";
const ZERO_DATE = "0001-01-01T00:00:00Z"; const ZERO_DATE = "0001-01-01T00:00:00Z";
@ -70,12 +71,12 @@ export class BaseAPI {
this.attachmentToken = attachmentToken; this.attachmentToken = attachmentToken;
} }
// if a attachmentToken is present it will be added to URL as a query param // if an attachmentToken is present, it will be added to URL as a query param
// this is done with a simple appending of the query param to the URL. If your // this is done with a simple appending of the query param to the URL. If your
// URL already has a query param, this will not work. // URL already has a query param, this will not work.
authURL(url: string): string { authURL(url: string): string {
if (this.attachmentToken) { if (this.attachmentToken) {
return `/api/v1${url}?access_token=${this.attachmentToken}`; return route(url, { access_token: this.attachmentToken });
} }
return url; return url;
} }

View file

@ -11,13 +11,13 @@ export function overrideParts(host: string, prefix: string) {
export type QueryValue = string | string[] | number | number[] | boolean | null | undefined; export type QueryValue = string | string[] | number | number[] | boolean | null | undefined;
/** /**
* route is a the main URL builder for the API. It will use a predefined host and prefix (global) * route is the main URL builder for the API. It will use a predefined host and prefix (global)
* in the urls.ts file and then append the passed in path parameter uring the `URL` class from the * in the urls.ts file and then append the passed-in path parameter using the `URL` class from the
* browser. It will also append any query parameters passed in as the second parameter. * browser. It will also append any query parameters passed in as the second parameter.
* *
* The default host `http://localhost.com` is removed from the path if it is present. This allows us * The default host `http://localhost.com` is removed from the path if it is present. This allows us
* to bootstrap the API with different hosts as needed (like for testing) but still allows us to use * to bootstrap the API with different hosts as needed (like for testing) but still allows us to use
* relative URLs in pruduction because the API and client bundle are served from the same server/host. * relative URLs in production because the API and client bundle are served from the same server/host.
*/ */
export function route(rest: string, params: Record<string, QueryValue> = {}): string { export function route(rest: string, params: Record<string, QueryValue> = {}): string {
const url = new URL(parts.prefix + rest, parts.host); const url = new URL(parts.prefix + rest, parts.host);

View file

@ -1,4 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { route } from "../../lib/api/base";
definePageMeta({ definePageMeta({
middleware: ["auth"], middleware: ["auth"],
layout: false, layout: false,
@ -176,7 +178,7 @@
const data = `${origin}/a/${assetID}`; const data = `${origin}/a/${assetID}`;
return `/api/v1/qrcode?data=${encodeURIComponent(data)}`; return route(`/qrcode`, { data: encodeURIComponent(data) });
} }
function getItem(n: number): LabelData { function getItem(n: number): LabelData {