1 line
12 KiB
JSON
1 line
12 KiB
JSON
{"repo": "abinaya661/api-lens", "files": {"app/api/platforms/detect/route.ts": {"f6c762fd9b7f575f4c64401ed0293e066e64a5df": {"t": 1785747466.1315775, "n": 2223, "h": "2ad7480817b954b3", "c": "export const dynamic = 'force-dynamic';\nimport { NextRequest, NextResponse } from 'next/server';\nimport { validateOrigin } from '@/lib/utils/csrf';\n\ninterface DetectionResult {\n provider: string;\n confidence: 'high' | 'medium' | 'low';\n pattern: string;\n}\n\nconst KEY_PATTERNS: { provider: string; regex: RegExp; confidence: 'high' | 'medium' }[] = [\n { provider: 'openai', regex: /^sk-[a-zA-Z0-9]{20,}$/, confidence: 'high' },\n { provider: 'openai', regex: /^sk-proj-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'anthropic', regex: /^sk-ant-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'openrouter', regex: /^sk-or-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'grok', regex: /^xai-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'deepseek', regex: /^sk-[a-f0-9]{48,}$/, confidence: 'medium' },\n { provider: 'elevenlabs', regex: /^[a-f0-9]{32}$/, confidence: 'medium' },\n];\n\nfunction detectProvider(keyPrefix: string): DetectionResult | null {\n for (const pattern of KEY_PATTERNS) {\n if (pattern.regex.test(keyPrefix)) {\n return {\n provider: pattern.provider,\n confidence: pattern.confidence,\n pattern: pattern.regex.source,\n };\n }\n }\n return null;\n}\n\nexport async function POST(request: NextRequest) {\n if (!validateOrigin(request)) {\n return NextResponse.json({ error: 'Invalid origin' }, { status: 403 });\n }\n\n try {\n const body = await request.json() as { apiKey?: string };\n\n if (!body.apiKey || typeof body.apiKey !== 'string') {\n return NextResponse.json({ error: 'apiKey is required' }, { status: 400 });\n }\n\n if (body.apiKey.length > 1000) {\n return NextResponse.json({ error: 'API key too long' }, { status: 400 });\n }\n\n // Only use the key for pattern matching — never log or store\n const result = detectProvider(body.apiKey);\n\n if (result) {\n return NextResponse.json({\n detected: true,\n provider: result.provider,\n confidence: result.confidence,\n });\n }\n\n return NextResponse.json({\n detected: false,\n provider: null,\n confidence: null,\n });\n } catch {\n return NextResponse.json({ error: 'Invalid request' }, { status: 400 });\n }\n}\n"}, "0dbac411e509febf8df428945ad86b93b3d0215b": {"t": 1785773475.5073285, "n": 2223, "h": "2ad7480817b954b3", "c": "export const dynamic = 'force-dynamic';\nimport { NextRequest, NextResponse } from 'next/server';\nimport { validateOrigin } from '@/lib/utils/csrf';\n\ninterface DetectionResult {\n provider: string;\n confidence: 'high' | 'medium' | 'low';\n pattern: string;\n}\n\nconst KEY_PATTERNS: { provider: string; regex: RegExp; confidence: 'high' | 'medium' }[] = [\n { provider: 'openai', regex: /^sk-[a-zA-Z0-9]{20,}$/, confidence: 'high' },\n { provider: 'openai', regex: /^sk-proj-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'anthropic', regex: /^sk-ant-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'openrouter', regex: /^sk-or-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'grok', regex: /^xai-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'deepseek', regex: /^sk-[a-f0-9]{48,}$/, confidence: 'medium' },\n { provider: 'elevenlabs', regex: /^[a-f0-9]{32}$/, confidence: 'medium' },\n];\n\nfunction detectProvider(keyPrefix: string): DetectionResult | null {\n for (const pattern of KEY_PATTERNS) {\n if (pattern.regex.test(keyPrefix)) {\n return {\n provider: pattern.provider,\n confidence: pattern.confidence,\n pattern: pattern.regex.source,\n };\n }\n }\n return null;\n}\n\nexport async function POST(request: NextRequest) {\n if (!validateOrigin(request)) {\n return NextResponse.json({ error: 'Invalid origin' }, { status: 403 });\n }\n\n try {\n const body = await request.json() as { apiKey?: string };\n\n if (!body.apiKey || typeof body.apiKey !== 'string') {\n return NextResponse.json({ error: 'apiKey is required' }, { status: 400 });\n }\n\n if (body.apiKey.length > 1000) {\n return NextResponse.json({ error: 'API key too long' }, { status: 400 });\n }\n\n // Only use the key for pattern matching — never log or store\n const result = detectProvider(body.apiKey);\n\n if (result) {\n return NextResponse.json({\n detected: true,\n provider: result.provider,\n confidence: result.confidence,\n });\n }\n\n return NextResponse.json({\n detected: false,\n provider: null,\n confidence: null,\n });\n } catch {\n return NextResponse.json({ error: 'Invalid request' }, { status: 400 });\n }\n}\n"}, "7143537bf838f2fbedf139e668e9b216e02f5309": {"t": 1785773477.0003538, "n": 2183, "h": "84d070d8dbbaf4f6", "c": "import { NextRequest, NextResponse } from 'next/server';\nimport { validateOrigin } from '@/lib/utils/csrf';\n\ninterface DetectionResult {\n provider: string;\n confidence: 'high' | 'medium' | 'low';\n pattern: string;\n}\n\nconst KEY_PATTERNS: { provider: string; regex: RegExp; confidence: 'high' | 'medium' }[] = [\n { provider: 'openai', regex: /^sk-[a-zA-Z0-9]{20,}$/, confidence: 'high' },\n { provider: 'openai', regex: /^sk-proj-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'anthropic', regex: /^sk-ant-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'openrouter', regex: /^sk-or-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'grok', regex: /^xai-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'deepseek', regex: /^sk-[a-f0-9]{48,}$/, confidence: 'medium' },\n { provider: 'elevenlabs', regex: /^[a-f0-9]{32}$/, confidence: 'medium' },\n];\n\nfunction detectProvider(keyPrefix: string): DetectionResult | null {\n for (const pattern of KEY_PATTERNS) {\n if (pattern.regex.test(keyPrefix)) {\n return {\n provider: pattern.provider,\n confidence: pattern.confidence,\n pattern: pattern.regex.source,\n };\n }\n }\n return null;\n}\n\nexport async function POST(request: NextRequest) {\n if (!validateOrigin(request)) {\n return NextResponse.json({ error: 'Invalid origin' }, { status: 403 });\n }\n\n try {\n const body = await request.json() as { apiKey?: string };\n\n if (!body.apiKey || typeof body.apiKey !== 'string') {\n return NextResponse.json({ error: 'apiKey is required' }, { status: 400 });\n }\n\n if (body.apiKey.length > 1000) {\n return NextResponse.json({ error: 'API key too long' }, { status: 400 });\n }\n\n // Only use the key for pattern matching — never log or store\n const result = detectProvider(body.apiKey);\n\n if (result) {\n return NextResponse.json({\n detected: true,\n provider: result.provider,\n confidence: result.confidence,\n });\n }\n\n return NextResponse.json({\n detected: false,\n provider: null,\n confidence: null,\n });\n } catch {\n return NextResponse.json({ error: 'Invalid request' }, { status: 400 });\n }\n}\n"}, "c44ff42d11857291165f725c2a7de2fbcce56400": {"t": 1785773478.5841973, "n": 2463, "h": "9111ee0a8535f3c5", "c": "import { NextRequest, NextResponse } from 'next/server';\nimport { validateOrigin } from '@/lib/utils/csrf';\n\ninterface DetectionResult {\n provider: string;\n confidence: 'high' | 'medium' | 'low';\n pattern: string;\n}\n\nconst KEY_PATTERNS: { provider: string; regex: RegExp; confidence: 'high' | 'medium' }[] = [\n { provider: 'openai', regex: /^sk-[a-zA-Z0-9]{20,}$/, confidence: 'high' },\n { provider: 'openai', regex: /^sk-proj-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'anthropic', regex: /^sk-ant-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'mistral', regex: /^[a-zA-Z0-9]{32}$/, confidence: 'medium' },\n { provider: 'cohere', regex: /^[a-zA-Z0-9]{40}$/, confidence: 'medium' },\n { provider: 'openrouter', regex: /^sk-or-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'replicate', regex: /^r8_[a-zA-Z0-9]{37}$/, confidence: 'high' },\n { provider: 'deepgram', regex: /^[a-f0-9]{40}$/, confidence: 'medium' },\n { provider: 'elevenlabs', regex: /^[a-f0-9]{32}$/, confidence: 'medium' },\n { provider: 'fal', regex: /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}:[a-f0-9]+$/, confidence: 'high' },\n];\n\nfunction detectProvider(keyPrefix: string): DetectionResult | null {\n for (const pattern of KEY_PATTERNS) {\n if (pattern.regex.test(keyPrefix)) {\n return {\n provider: pattern.provider,\n confidence: pattern.confidence,\n pattern: pattern.regex.source,\n };\n }\n }\n return null;\n}\n\nexport async function POST(request: NextRequest) {\n if (!validateOrigin(request)) {\n return NextResponse.json({ error: 'Invalid origin' }, { status: 403 });\n }\n\n try {\n const body = await request.json() as { apiKey?: string };\n\n if (!body.apiKey || typeof body.apiKey !== 'string') {\n return NextResponse.json({ error: 'apiKey is required' }, { status: 400 });\n }\n\n if (body.apiKey.length > 1000) {\n return NextResponse.json({ error: 'API key too long' }, { status: 400 });\n }\n\n // Only use the key for pattern matching — never log or store\n const result = detectProvider(body.apiKey);\n\n if (result) {\n return NextResponse.json({\n detected: true,\n provider: result.provider,\n confidence: result.confidence,\n });\n }\n\n return NextResponse.json({\n detected: false,\n provider: null,\n confidence: null,\n });\n } catch {\n return NextResponse.json({ error: 'Invalid request' }, { status: 400 });\n }\n}\n"}, "27d083562d1d56b3402999cf691b64afaa252c2b": {"t": 1785773479.7193944, "n": 2173, "h": "3bf78dabcab5cd64", "c": "import { NextRequest, NextResponse } from 'next/server';\n\ninterface DetectionResult {\n provider: string;\n confidence: 'high' | 'medium' | 'low';\n pattern: string;\n}\n\nconst KEY_PATTERNS: { provider: string; regex: RegExp; confidence: 'high' | 'medium' }[] = [\n { provider: 'openai', regex: /^sk-[a-zA-Z0-9]{20,}$/, confidence: 'high' },\n { provider: 'openai', regex: /^sk-proj-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'anthropic', regex: /^sk-ant-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'mistral', regex: /^[a-zA-Z0-9]{32}$/, confidence: 'medium' },\n { provider: 'cohere', regex: /^[a-zA-Z0-9]{40}$/, confidence: 'medium' },\n { provider: 'openrouter', regex: /^sk-or-[a-zA-Z0-9_-]+$/, confidence: 'high' },\n { provider: 'replicate', regex: /^r8_[a-zA-Z0-9]{37}$/, confidence: 'high' },\n { provider: 'deepgram', regex: /^[a-f0-9]{40}$/, confidence: 'medium' },\n { provider: 'elevenlabs', regex: /^[a-f0-9]{32}$/, confidence: 'medium' },\n { provider: 'fal', regex: /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}:[a-f0-9]+$/, confidence: 'high' },\n];\n\nfunction detectProvider(keyPrefix: string): DetectionResult | null {\n for (const pattern of KEY_PATTERNS) {\n if (pattern.regex.test(keyPrefix)) {\n return {\n provider: pattern.provider,\n confidence: pattern.confidence,\n pattern: pattern.regex.source,\n };\n }\n }\n return null;\n}\n\nexport async function POST(request: NextRequest) {\n try {\n const body = await request.json() as { apiKey?: string };\n\n if (!body.apiKey || typeof body.apiKey !== 'string') {\n return NextResponse.json({ error: 'apiKey is required' }, { status: 400 });\n }\n\n // Only use the key for pattern matching — never log or store\n const result = detectProvider(body.apiKey);\n\n if (result) {\n return NextResponse.json({\n detected: true,\n provider: result.provider,\n confidence: result.confidence,\n });\n }\n\n return NextResponse.json({\n detected: false,\n provider: null,\n confidence: null,\n });\n } catch {\n return NextResponse.json({ error: 'Invalid request' }, { status: 400 });\n }\n}\n"}}}} |