Merged in feat/creditCards-api (pull request #240)

feat(WEB-295): Add creditCards profile endpoint

Approved-by: Michael Zetterberg
This commit is contained in:
Matilda Landström
2024-06-19 07:49:32 +00:00
committed by Michael Zetterberg
6 changed files with 79 additions and 2 deletions

View File

@@ -166,3 +166,17 @@ export const getFriendTransactionsSchema = z.object({
})
.nullable(),
})
export const getCreditCardsSchema = z.object({
data: z.array(
z.object({
attribute: z.object({
cardName: z.string().optional(),
alias: z.string(),
truncatedNumber: z.string(),
expirationDate: z.string(),
cardType: z.string(),
}),
})
),
})

View File

@@ -3,6 +3,7 @@ import { protectedProcedure, router } from "@/server/trpc"
import { friendTransactionsInput, staysInput } from "./input"
import {
getCreditCardsSchema,
getFriendTransactionsSchema,
getStaysSchema,
getUserSchema,
@@ -270,4 +271,31 @@ export const userQueryRouter = router({
}
}),
}),
creditCards: protectedProcedure.query(async function ({ ctx }) {
const apiResponse = await api.get(api.endpoints.v1.creditCards, {
cache: "no-store",
headers: {
Authorization: `Bearer ${ctx.session.token.access_token}`,
},
})
if (!apiResponse.ok) {
console.info(`API Response Failed - Getting Creadit Cards`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(apiResponse)
return null
}
const apiJson = await apiResponse.json()
const verifiedData = getCreditCardsSchema.safeParse(apiJson)
if (!verifiedData.success) {
console.info(`Failed to validate Credit Cards Data`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(verifiedData.error)
return null
}
return verifiedData.data.data
}),
})