Compare commits

..

2 Commits

Author SHA1 Message Date
chyoo 860334a86b modify avatar url.. 2026-07-09 15:24:15 +09:00
chyoo 944d731573 r2 modify 2026-07-08 15:06:11 +09:00
4 changed files with 31 additions and 10 deletions
+25
View File
@@ -0,0 +1,25 @@
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: lms-api-strip
spec:
stripPrefix:
prefixes:
- /lms-api
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: lms-api
spec:
entryPoints:
- web
routes:
- match: Host(`workspace.autonomystudio.net`) && PathPrefix(`/lms-api`)
kind: Rule
middlewares:
- name: lms-api-strip
services:
- name: lms-be
port: 4400
+6 -2
View File
@@ -61,6 +61,7 @@ const AI_CHAT_CONTEXT_MESSAGE_LIMIT = 6;
@Injectable()
export class ChatService {
private readonly authServerUrl: string;
private readonly authPublicUrl: string;
constructor(
private readonly authService: AuthService,
@@ -71,6 +72,9 @@ export class ChatService {
this.authServerUrl = this.configService
.get<string>('AUTH_SERVER_URL', 'http://localhost:4100')
.replace(/\/$/, '');
this.authPublicUrl = this.configService
.get<string>('AUTH_PUBLIC_URL', this.authServerUrl)
.replace(/\/$/, '');
}
async listThreads(accessToken: string | undefined, query: ListChatThreadsDto) {
@@ -977,11 +981,11 @@ export class ChatService {
if (!user) return null;
if (user.authUserId) {
return `${this.authServerUrl}/auth/users/${user.authUserId}/avatar`;
return `${this.authPublicUrl}/auth/users/${user.authUserId}/avatar`;
}
if (user.email) {
return `${this.authServerUrl}/auth/users/avatar?email=${encodeURIComponent(user.email)}`;
return `${this.authPublicUrl}/auth/users/avatar?email=${encodeURIComponent(user.email)}`;
}
return null;
-1
View File
@@ -1551,7 +1551,6 @@ export class InstructorService {
key: storedFileName,
body: file.buffer,
contentType: file.mimetype,
fileName: originalFileName,
});
} else {
await mkdir(COURSE_REFERENCE_UPLOAD_ROOT, { recursive: true });
-7
View File
@@ -6,7 +6,6 @@ type UploadPublicFileInput = {
key: string;
body: Buffer;
contentType?: string | null;
fileName?: string | null;
};
@Injectable()
@@ -53,7 +52,6 @@ export class R2PublicFileService {
Body: input.body,
ContentLength: input.body.length,
ContentType: input.contentType ?? 'application/octet-stream',
ContentDisposition: input.fileName ? contentDispositionForFile(input.fileName) : undefined,
}));
return this.publicUrl(input.key);
@@ -120,8 +118,3 @@ export class R2PublicFileService {
function encodeObjectKey(key: string) {
return key.split('/').map(encodeURIComponent).join('/');
}
function contentDispositionForFile(fileName: string) {
const fallbackName = fileName.replace(/[\\\"\r\n]/g, '_');
return `attachment; filename="${fallbackName}"; filename*=UTF-8''${encodeURIComponent(fileName)}`;
}