mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-24 23:41:10 +02:00
- Updated all hooks to import and use AUTH_TOKEN_KEY constant from lib/constants - Updated all components to use AUTH_TOKEN_KEY instead of hardcoded string - Updated all atoms to use AUTH_TOKEN_KEY - Updated all app pages to use AUTH_TOKEN_KEY - Made CORS origin configurable via CORS_ORIGINS environment variable - Added CORS_ORIGINS to .env.example with documentation This improves maintainability by centralizing the auth token key string, preventing typos and making it easier to change the key name if needed.
134 lines
3.4 KiB
TypeScript
134 lines
3.4 KiB
TypeScript
import { AUTH_TOKEN_KEY } from "@/lib/constants";
|
|
|
|
// Types for connector API
|
|
export interface ConnectorConfig {
|
|
[key: string]: string;
|
|
}
|
|
|
|
export interface Connector {
|
|
id: number;
|
|
name: string;
|
|
connector_type: string;
|
|
config: ConnectorConfig;
|
|
created_at: string;
|
|
user_id: string;
|
|
}
|
|
|
|
export interface CreateConnectorRequest {
|
|
name: string;
|
|
connector_type: string;
|
|
config: ConnectorConfig;
|
|
}
|
|
|
|
// Get connector type display name
|
|
export const getConnectorTypeDisplay = (type: string): string => {
|
|
const typeMap: Record<string, string> = {
|
|
SERPER_API: "Serper API",
|
|
TAVILY_API: "Tavily API",
|
|
SEARXNG_API: "SearxNG",
|
|
};
|
|
return typeMap[type] || type;
|
|
};
|
|
|
|
// API service for connectors
|
|
export const ConnectorService = {
|
|
// Create a new connector
|
|
async createConnector(data: CreateConnectorRequest): Promise<Connector> {
|
|
const response = await fetch(
|
|
`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/search-source-connectors`,
|
|
{
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${localStorage.getItem(AUTH_TOKEN_KEY)}`,
|
|
},
|
|
body: JSON.stringify(data),
|
|
}
|
|
);
|
|
|
|
if (!response.ok) {
|
|
const errorData = await response.json();
|
|
throw new Error(errorData.detail || "Failed to create connector");
|
|
}
|
|
|
|
return response.json();
|
|
},
|
|
|
|
// Get all connectors
|
|
async getConnectors(skip = 0, limit = 100): Promise<Connector[]> {
|
|
const response = await fetch(
|
|
`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/search-source-connectors?skip=${skip}&limit=${limit}`,
|
|
{
|
|
headers: {
|
|
Authorization: `Bearer ${localStorage.getItem(AUTH_TOKEN_KEY)}`,
|
|
},
|
|
}
|
|
);
|
|
|
|
if (!response.ok) {
|
|
const errorData = await response.json();
|
|
throw new Error(errorData.detail || "Failed to fetch connectors");
|
|
}
|
|
|
|
return response.json();
|
|
},
|
|
|
|
// Get a specific connector
|
|
async getConnector(connectorId: number): Promise<Connector> {
|
|
const response = await fetch(
|
|
`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/search-source-connectors/${connectorId}`,
|
|
{
|
|
headers: {
|
|
Authorization: `Bearer ${localStorage.getItem(AUTH_TOKEN_KEY)}`,
|
|
},
|
|
}
|
|
);
|
|
|
|
if (!response.ok) {
|
|
const errorData = await response.json();
|
|
throw new Error(errorData.detail || "Failed to fetch connector");
|
|
}
|
|
|
|
return response.json();
|
|
},
|
|
|
|
// Update a connector
|
|
async updateConnector(connectorId: number, data: CreateConnectorRequest): Promise<Connector> {
|
|
const response = await fetch(
|
|
`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/search-source-connectors/${connectorId}`,
|
|
{
|
|
method: "PUT",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${localStorage.getItem(AUTH_TOKEN_KEY)}`,
|
|
},
|
|
body: JSON.stringify(data),
|
|
}
|
|
);
|
|
|
|
if (!response.ok) {
|
|
const errorData = await response.json();
|
|
throw new Error(errorData.detail || "Failed to update connector");
|
|
}
|
|
|
|
return response.json();
|
|
},
|
|
|
|
// Delete a connector
|
|
async deleteConnector(connectorId: number): Promise<void> {
|
|
const response = await fetch(
|
|
`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/search-source-connectors/${connectorId}`,
|
|
{
|
|
method: "DELETE",
|
|
headers: {
|
|
Authorization: `Bearer ${localStorage.getItem(AUTH_TOKEN_KEY)}`,
|
|
},
|
|
}
|
|
);
|
|
|
|
if (!response.ok) {
|
|
const errorData = await response.json();
|
|
throw new Error(errorData.detail || "Failed to delete connector");
|
|
}
|
|
},
|
|
};
|