Browse Source

refactor: rename temporary url to presigned url

pull/6572/head
mertmit 11 months ago
parent
commit
d0c3cbc7cb
  1. 4
      packages/nocodb/src/controllers/attachments-secure.controller.ts
  2. 4
      packages/nocodb/src/controllers/attachments.controller.ts
  3. 6
      packages/nocodb/src/db/BaseModelSqlv2.ts
  4. 18
      packages/nocodb/src/models/PresignedUrl.ts
  5. 2
      packages/nocodb/src/models/index.ts
  6. 6
      packages/nocodb/src/services/attachments.service.ts
  7. 2
      packages/nocodb/src/utils/globals.ts

4
packages/nocodb/src/controllers/attachments-secure.controller.ts

@ -17,7 +17,7 @@ import moment from 'moment';
import { AnyFilesInterceptor } from '@nestjs/platform-express';
import { GlobalGuard } from '~/guards/global/global.guard';
import { AttachmentsService } from '~/services/attachments.service';
import { TemporaryUrl } from '~/models';
import { PresignedUrl } from '~/models';
import { UploadAllowedInterceptor } from '~/interceptors/is-upload-allowed/is-upload-allowed.interceptor';
@Controller()
@ -57,7 +57,7 @@ export class AttachmentsSecureController {
@Get('/dltemp/:param(*)')
async fileReadv3(@Param('param') param: string, @Response() res) {
try {
const fpath = await TemporaryUrl.getPath(`dltemp/${param}`);
const fpath = await PresignedUrl.getPath(`dltemp/${param}`);
const { img } = await this.attachmentsService.fileRead({
path: path.join('nc', 'uploads', fpath),

4
packages/nocodb/src/controllers/attachments.controller.ts

@ -17,7 +17,7 @@ import { AnyFilesInterceptor } from '@nestjs/platform-express';
import { UploadAllowedInterceptor } from '~/interceptors/is-upload-allowed/is-upload-allowed.interceptor';
import { GlobalGuard } from '~/guards/global/global.guard';
import { AttachmentsService } from '~/services/attachments.service';
import { TemporaryUrl } from '~/models';
import { PresignedUrl } from '~/models';
@Controller()
export class AttachmentsController {
@ -101,7 +101,7 @@ export class AttachmentsController {
@Get('/dltemp/:param(*)')
async fileReadv3(@Param('param') param: string, @Response() res) {
try {
const fpath = await TemporaryUrl.getPath(`dltemp/${param}`);
const fpath = await PresignedUrl.getPath(`dltemp/${param}`);
const { img } = await this.attachmentsService.fileRead({
path: path.join('nc', 'uploads', fpath),

6
packages/nocodb/src/db/BaseModelSqlv2.ts

@ -50,9 +50,9 @@ import {
Column,
Filter,
Model,
PresignedUrl,
Sort,
Source,
TemporaryUrl,
View,
} from '~/models';
import { sanitize, unsanitize } from '~/helpers/sqlSanitize';
@ -4067,7 +4067,7 @@ class BaseModelSqlv2 {
for (const attachment of d[col.title]) {
if (attachment?.path) {
promises.push(
TemporaryUrl.getTemporaryUrl({
PresignedUrl.getSignedUrl({
path: attachment.path.replace(/^download\//, ''),
}).then((r) => (attachment.signedPath = r)),
);
@ -4076,7 +4076,7 @@ class BaseModelSqlv2 {
const relativePath =
attachment.url.split('.amazonaws.com/')[1];
promises.push(
TemporaryUrl.getTemporaryUrl({
PresignedUrl.getSignedUrl({
path: relativePath,
s3: true,
}).then((r) => (attachment.signedUrl = r)),

18
packages/nocodb/src/models/TemporaryUrl.ts → packages/nocodb/src/models/PresignedUrl.ts

@ -14,12 +14,12 @@ const DEFAULT_EXPIRE_SECONDS = isNaN(
? 2 * 60 * 60
: parseInt(process.env.NC_ATTACHMENT_EXPIRE_SECONDS);
export default class TemporaryUrl {
export default class PresignedUrl {
path: string;
url: string;
expires_at: string;
constructor(data: Partial<TemporaryUrl>) {
constructor(data: Partial<PresignedUrl>) {
Object.assign(this, data);
}
@ -36,7 +36,7 @@ export default class TemporaryUrl {
expiresInSeconds = DEFAULT_EXPIRE_SECONDS,
} = param;
await NocoCache.setExpiring(
`${CacheScope.TEMPORARY_URL}:path:${path}`,
`${CacheScope.PRESIGNED_URL}:path:${path}`,
{
path,
url,
@ -45,7 +45,7 @@ export default class TemporaryUrl {
expiresInSeconds,
);
await NocoCache.setExpiring(
`${CacheScope.TEMPORARY_URL}:url:${decodeURIComponent(url)}`,
`${CacheScope.PRESIGNED_URL}:url:${decodeURIComponent(url)}`,
{
path,
url,
@ -57,15 +57,15 @@ export default class TemporaryUrl {
private static async delete(param: { path: string; url: string }) {
const { path, url } = param;
await NocoCache.del(`${CacheScope.TEMPORARY_URL}:path:${path}`);
await NocoCache.del(`${CacheScope.TEMPORARY_URL}:url:${url}`);
await NocoCache.del(`${CacheScope.PRESIGNED_URL}:path:${path}`);
await NocoCache.del(`${CacheScope.PRESIGNED_URL}:url:${url}`);
}
public static async getPath(url: string, _ncMeta = Noco.ncMeta) {
const urlData =
url &&
(await NocoCache.get(
`${CacheScope.TEMPORARY_URL}:url:${url}`,
`${CacheScope.PRESIGNED_URL}:url:${url}`,
CacheGetType.TYPE_OBJECT,
));
if (!urlData) {
@ -85,7 +85,7 @@ export default class TemporaryUrl {
return urlData?.path;
}
public static async getTemporaryUrl(
public static async getSignedUrl(
param: {
path: string;
expireSeconds?: number;
@ -106,7 +106,7 @@ export default class TemporaryUrl {
let tempUrl;
const url = await NocoCache.get(
`${CacheScope.TEMPORARY_URL}:path:${path}`,
`${CacheScope.PRESIGNED_URL}:path:${path}`,
CacheGetType.TYPE_OBJECT,
);

2
packages/nocodb/src/models/index.ts

@ -36,4 +36,4 @@ export { default as User } from './User';
export { default as View } from './View';
export { default as LinksColumn } from './LinksColumn';
export { default as Notification } from './Notification';
export { default as TemporaryUrl } from './TemporaryUrl';
export { default as PresignedUrl } from './PresignedUrl';

6
packages/nocodb/src/services/attachments.service.ts

@ -7,7 +7,7 @@ import { AppHooksService } from '~/services/app-hooks/app-hooks.service';
import NcPluginMgrv2 from '~/helpers/NcPluginMgrv2';
import Local from '~/plugins/storage/Local';
import mimetypes, { mimeIcons } from '~/utils/mimeTypes';
import { TemporaryUrl } from '~/models';
import { PresignedUrl } from '~/models';
@Injectable()
export class AttachmentsService {
@ -61,7 +61,7 @@ export class AttachmentsService {
attachment.path = `download/${filePath.join('/')}/${fileName}`;
promises.push(
TemporaryUrl.getTemporaryUrl({
PresignedUrl.getSignedUrl({
path: attachment.path.replace(/^download\//, ''),
}).then((r) => (attachment.signedPath = r)),
);
@ -69,7 +69,7 @@ export class AttachmentsService {
if (attachment.url.includes('.amazonaws.com/')) {
const relativePath = attachment.url.split('.amazonaws.com/')[1];
promises.push(
TemporaryUrl.getTemporaryUrl({
PresignedUrl.getSignedUrl({
path: relativePath,
s3: true,
}).then((r) => (attachment.signedUrl = r)),

2
packages/nocodb/src/utils/globals.ts

@ -157,7 +157,7 @@ export enum CacheScope {
DASHBOARD_PROJECT_DB_PROJECT_LINKING = 'dashboardProjectDBProjectLinking',
SINGLE_QUERY = 'singleQuery',
JOBS = 'nc_jobs',
TEMPORARY_URL = 'temporaryUrl',
PRESIGNED_URL = 'presignedUrl',
}
export enum CacheGetType {

Loading…
Cancel
Save