How did I ever live without interfaces

This commit is contained in:
Eclypsed
2024-02-03 02:47:23 -05:00
parent 20454e22d1
commit cbe9b60973
10 changed files with 178 additions and 76 deletions

View File

@@ -7,7 +7,7 @@ export const GET: RequestHandler = async ({ params }) => {
const userId = params.userId as string
const connections = Connections.getUserConnections(userId)
return new Response(JSON.stringify(connections))
return Response.json(connections)
}
// This schema should be identical to the Connection Data Type but without the id and userId
@@ -30,7 +30,7 @@ export const POST: RequestHandler = async ({ params, request }) => {
const { service, accessToken } = connection
const newConnection = Connections.addConnection(userId, service, accessToken)
return new Response(JSON.stringify(newConnection))
return Response.json(newConnection)
}
export const DELETE: RequestHandler = async ({ request }) => {

View File

@@ -0,0 +1,34 @@
import type { RequestHandler } from '@sveltejs/kit'
import { SECRET_INTERNAL_API_KEY } from '$env/static/private'
// This is temporary functionally for the sake of developing the app.
// In the future will implement more robust algorith for offering recommendations
export const GET: RequestHandler = async ({ params, fetch }) => {
const userId = params.userId as string
const connectionsResponse = await fetch(`/api/users/${userId}/connections`, { headers: { apikey: SECRET_INTERNAL_API_KEY } })
const userConnections: Connection[] = await connectionsResponse.json()
const recommendations = []
for (const connection of userConnections) {
const { service, accessToken } = connection
switch (service.type) {
case 'jellyfin':
const mostPlayedSongsSearchParams = new URLSearchParams({
SortBy: 'PlayCount',
SortOrder: 'Descending',
IncludeItemTypes: 'Audio',
Recursive: 'true',
limit: '10',
})
const mostPlayedSongsURL = new URL(`/Users/${service.userId}/Items?${mostPlayedSongsSearchParams.toString()}`, service.urlOrigin).href
const requestHeaders = new Headers({ Authorization: `MediaBrowser Token="${accessToken}"` })
const mostPlayedResponse = await fetch(mostPlayedSongsURL, { headers: requestHeaders })
const mostPlayedData = await mostPlayedResponse.json()
}
}
}