From 422570aceed1ab19941370fde5719096ce45c33f Mon Sep 17 00:00:00 2001 From: Marko1310 Date: Mon, 9 Oct 2023 12:25:05 +0200 Subject: [PATCH 1/4] Extract API_URL as UploadJet contructor parameter, update API proposal --- example/server/index.ts | 3 ++- packages/express/apiProposal.md | 6 +++--- packages/express/src/schema/upload-jet-config.dto.ts | 3 ++- packages/express/src/upload-jet.ts | 5 +++-- upload-jet/src/application/application.entity.ts | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/example/server/index.ts b/example/server/index.ts index 54711f9..dfcf2ed 100644 --- a/example/server/index.ts +++ b/example/server/index.ts @@ -6,10 +6,11 @@ const app = express(); const router = express.Router(); const port = 3001; const API_KEY = 'example-api-key'; +const API_URL = 'http://localhost:3000'; app.use(cors()); -const uploadJet = new UploadJet({ apiKey: API_KEY }); +const uploadJet = new UploadJet({ apiKey: API_KEY, apiUrl: API_URL }); const uploadRouteConfig: UploadOptions = { fileType: 'image', maxFileSize: '1MB', diff --git a/packages/express/apiProposal.md b/packages/express/apiProposal.md index 21d4200..db3214a 100644 --- a/packages/express/apiProposal.md +++ b/packages/express/apiProposal.md @@ -17,11 +17,11 @@ const UploadJet = require('upload-jet'); ## Usage -To use the uploader it is required to provide an api key when creating -a new instance of Upload Jet class. +To use the uploader it is required to provide an api key and specify the URL of the Upload-Jet server when creating a new instance of the Upload Jet class. The server's URL is http://localhost:3000." ```javascript -const uploadJet = new UploadJet({ apiKey: API_KEY }); +const API_URL = 'http://localhost:3000'; +const uploadJet = new UploadJet({ apiKey: API_KEY, apiUrl: API_URL }); ``` ### Registering a new route diff --git a/packages/express/src/schema/upload-jet-config.dto.ts b/packages/express/src/schema/upload-jet-config.dto.ts index 3755015..8d1ea6a 100644 --- a/packages/express/src/schema/upload-jet-config.dto.ts +++ b/packages/express/src/schema/upload-jet-config.dto.ts @@ -2,7 +2,8 @@ import { z } from 'zod'; export const uploadJetConfigSchema = z .object({ - apiKey: z.string() + apiKey: z.string(), + apiUrl: z.string() }) .strict(); diff --git a/packages/express/src/upload-jet.ts b/packages/express/src/upload-jet.ts index d847045..d10bd71 100644 --- a/packages/express/src/upload-jet.ts +++ b/packages/express/src/upload-jet.ts @@ -13,17 +13,18 @@ import { createUploadPolicyBodySchema } from './schema/create-upload-policy-body import * as bytes from 'bytes'; import { ZodError } from 'zod'; -const API_URL = 'http://localhost:3000'; const BAD_REQUEST_CODE = 400; const INTERNAL_SERVER_ERROR_CODE = 500; const DEFAULT_SERVER_ERROR_MESSAGE = 'Something went wrong.'; export class UploadJet { #apiKey: string; + #apiUrl: string; constructor(config: UploadJetConfig) { const data = uploadJetConfigSchema.parse(config); this.#apiKey = data.apiKey; + this.#apiUrl = data.apiUrl; } createUploadRoute(options: UploadOptions) { @@ -96,7 +97,7 @@ export class UploadJet { {} ); - const url = new URL('upload-policy', API_URL); + const url = new URL('upload-policy', this.#apiUrl); const headers = { Authorization: `Bearer ${this.#apiKey}` }; return axios .post(url.href, policyRules, { headers }) diff --git a/upload-jet/src/application/application.entity.ts b/upload-jet/src/application/application.entity.ts index 3977571..852f2c9 100644 --- a/upload-jet/src/application/application.entity.ts +++ b/upload-jet/src/application/application.entity.ts @@ -39,7 +39,7 @@ export default class Application extends BaseEntity { @Property({ persist: false }) get keyHint() { const apiKeys = this.apiKeys.getItems(); - return apiKeys.find(apiKey => !apiKey.deletedAt).keyHint; + return apiKeys.find(apiKey => !apiKey.deletedAt)?.keyHint; } constructor(name: string, userId: number) { From 520d56f97bc3c4ede4797dfe28428ff0ce3184e9 Mon Sep 17 00:00:00 2001 From: Marko1310 Date: Mon, 9 Oct 2023 13:54:48 +0200 Subject: [PATCH 2/4] Change API_URL to URL --- example/server/index.ts | 4 ++-- packages/express/apiProposal.md | 4 ++-- packages/express/src/schema/upload-jet-config.dto.ts | 2 +- packages/express/src/upload-jet.ts | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/example/server/index.ts b/example/server/index.ts index dfcf2ed..ab4997b 100644 --- a/example/server/index.ts +++ b/example/server/index.ts @@ -6,11 +6,11 @@ const app = express(); const router = express.Router(); const port = 3001; const API_KEY = 'example-api-key'; -const API_URL = 'http://localhost:3000'; +const URL = 'http://localhost:3000'; app.use(cors()); -const uploadJet = new UploadJet({ apiKey: API_KEY, apiUrl: API_URL }); +const uploadJet = new UploadJet({ apiKey: API_KEY, url: URL }); const uploadRouteConfig: UploadOptions = { fileType: 'image', maxFileSize: '1MB', diff --git a/packages/express/apiProposal.md b/packages/express/apiProposal.md index db3214a..61dd01c 100644 --- a/packages/express/apiProposal.md +++ b/packages/express/apiProposal.md @@ -20,8 +20,8 @@ const UploadJet = require('upload-jet'); To use the uploader it is required to provide an api key and specify the URL of the Upload-Jet server when creating a new instance of the Upload Jet class. The server's URL is http://localhost:3000." ```javascript -const API_URL = 'http://localhost:3000'; -const uploadJet = new UploadJet({ apiKey: API_KEY, apiUrl: API_URL }); +const URL = 'http://localhost:3000'; +const uploadJet = new UploadJet({ apiKey: API_KEY, url: URL }); ``` ### Registering a new route diff --git a/packages/express/src/schema/upload-jet-config.dto.ts b/packages/express/src/schema/upload-jet-config.dto.ts index 8d1ea6a..6499ce3 100644 --- a/packages/express/src/schema/upload-jet-config.dto.ts +++ b/packages/express/src/schema/upload-jet-config.dto.ts @@ -3,7 +3,7 @@ import { z } from 'zod'; export const uploadJetConfigSchema = z .object({ apiKey: z.string(), - apiUrl: z.string() + url: z.string() }) .strict(); diff --git a/packages/express/src/upload-jet.ts b/packages/express/src/upload-jet.ts index d10bd71..2f4bdae 100644 --- a/packages/express/src/upload-jet.ts +++ b/packages/express/src/upload-jet.ts @@ -19,12 +19,12 @@ const DEFAULT_SERVER_ERROR_MESSAGE = 'Something went wrong.'; export class UploadJet { #apiKey: string; - #apiUrl: string; + #url: string; constructor(config: UploadJetConfig) { const data = uploadJetConfigSchema.parse(config); this.#apiKey = data.apiKey; - this.#apiUrl = data.apiUrl; + this.#url = data.url; } createUploadRoute(options: UploadOptions) { @@ -97,7 +97,7 @@ export class UploadJet { {} ); - const url = new URL('upload-policy', this.#apiUrl); + const url = new URL('upload-policy', this.#url); const headers = { Authorization: `Bearer ${this.#apiKey}` }; return axios .post(url.href, policyRules, { headers }) From 9ed8e8c12f90d186727842b8a120ed0f14b9593a Mon Sep 17 00:00:00 2001 From: Marko1310 Date: Tue, 10 Oct 2023 15:17:05 +0200 Subject: [PATCH 3/4] Api proposal fix import --- packages/express/apiProposal.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/express/apiProposal.md b/packages/express/apiProposal.md index 61dd01c..7387a56 100644 --- a/packages/express/apiProposal.md +++ b/packages/express/apiProposal.md @@ -8,11 +8,11 @@ Once the package is installed, you can import the library by using import or require approach: ```javascript -import UploadJet from 'upload-jet'; +import UploadJet from '@upload-jet/express'; // or -const UploadJet = require('upload-jet'); +const UploadJet = require('@upload-jet/express'); ``` ## Usage From 952f30d6b08749b86274389f99c3c303af142aa2 Mon Sep 17 00:00:00 2001 From: Marko1310 Date: Thu, 12 Oct 2023 11:04:17 +0200 Subject: [PATCH 4/4] Change server url in api propsal. --- packages/express/apiProposal.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/express/apiProposal.md b/packages/express/apiProposal.md index 7387a56..5ae4010 100644 --- a/packages/express/apiProposal.md +++ b/packages/express/apiProposal.md @@ -17,10 +17,10 @@ const UploadJet = require('@upload-jet/express'); ## Usage -To use the uploader it is required to provide an api key and specify the URL of the Upload-Jet server when creating a new instance of the Upload Jet class. The server's URL is http://localhost:3000." +To use the uploader it is required to provide an api key and specify the URL of the Upload-Jet server when creating a new instance of the Upload Jet class. ```javascript -const URL = 'http://localhost:3000'; +const URL = 'SERVER_URL'; const uploadJet = new UploadJet({ apiKey: API_KEY, url: URL }); ```