mirror of
https://github.com/geoffsee/open-gsio.git
synced 2025-09-08 22:56:46 +00:00
**Refactor:** Restructure server
package to streamline imports and improve file organization
- Moved `providers`, `services`, `models`, `lib`, and related files to `src` directory within `server` package. - Adjusted imports across the codebase to reflect the new paths. - Renamed several `.ts` files for consistency. - Introduced an `index.ts` in the `ai/providers` package to export all providers. This improves maintainability and aligns with the project's updated directory structure.
This commit is contained in:
84
packages/server/src/router/router.ts
Normal file
84
packages/server/src/router/router.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
import { Router, withParams } from 'itty-router';
|
||||
|
||||
import { createRequestContext } from '../../RequestContext.ts';
|
||||
|
||||
export function createRouter() {
|
||||
return (
|
||||
Router()
|
||||
.get('/assets/*', (r, e, c) => {
|
||||
const { assetService } = createRequestContext(e, c);
|
||||
return assetService.handleStaticAssets(r, e, c);
|
||||
})
|
||||
|
||||
.post('/api/contact', (r, e, c) => {
|
||||
const { contactService } = createRequestContext(e, c);
|
||||
return contactService.handleContact(r);
|
||||
})
|
||||
|
||||
.post('/api/chat', (r, e, c) => {
|
||||
const { chatService } = createRequestContext(e, c);
|
||||
return chatService.handleChatRequest(r);
|
||||
})
|
||||
|
||||
.get('/api/streams/:streamId', withParams, async ({ streamId }, env, ctx) => {
|
||||
const { chatService } = createRequestContext(env, ctx);
|
||||
return chatService.handleSseStream(streamId); // Handles SSE for streamId
|
||||
})
|
||||
|
||||
.get('/api/models', async (req, env, ctx) => {
|
||||
const { chatService } = createRequestContext(env, ctx);
|
||||
return chatService.getSupportedModels();
|
||||
})
|
||||
|
||||
.post('/api/feedback', async (r, e, c) => {
|
||||
const { feedbackService } = createRequestContext(e, c);
|
||||
return feedbackService.handleFeedback(r);
|
||||
})
|
||||
|
||||
.post('/api/tx', async (r, e, c) => {
|
||||
const { transactionService } = createRequestContext(e, c);
|
||||
return transactionService.handleTransact(r);
|
||||
})
|
||||
|
||||
// used for file handling, can be enabled but is not fully implemented in this fork.
|
||||
// .post('/api/documents', async (r, e, c) => {
|
||||
// const {documentService} = createServerContext(e, c);
|
||||
// return documentService.handlePutDocument(r)
|
||||
// })
|
||||
//
|
||||
// .get('/api/documents', async (r, e, c) => {
|
||||
// const {documentService} = createServerContext(e, c);
|
||||
// return documentService.handleGetDocument(r)
|
||||
// })
|
||||
|
||||
.get('/api/metrics*', async (r, e, c) => {
|
||||
const { metricsService } = createRequestContext(e, c);
|
||||
return metricsService.handleMetricsRequest(r);
|
||||
})
|
||||
|
||||
.post('/api/metrics*', async (r, e, c) => {
|
||||
const { metricsService } = createRequestContext(e, c);
|
||||
return metricsService.handleMetricsRequest(r);
|
||||
})
|
||||
|
||||
// renders the app
|
||||
.all('^(?!/api/)(?!/assets/).*$', async (r, e, c) => {
|
||||
const { assetService } = createRequestContext(e, c);
|
||||
|
||||
// First attempt to serve pre-rendered HTML
|
||||
const preRenderedHtml = await assetService.handleStaticAssets(r, e);
|
||||
if (preRenderedHtml !== null) {
|
||||
return preRenderedHtml;
|
||||
}
|
||||
|
||||
// If no pre-rendered HTML, attempt SSR
|
||||
const ssrResponse = await assetService.handleSsr(r.url, r.headers, e);
|
||||
if (ssrResponse !== null) {
|
||||
return ssrResponse;
|
||||
}
|
||||
|
||||
// Finally, proxy to static assets if nothing else matched
|
||||
return assetService.handleStaticAssets(r, e);
|
||||
})
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user