@crypticorn-ai/api
v1.1.6
Published
API client and server library for networking with backend services
Downloads
68
Readme
api
API client and server library for networking with Crypticorn authorization server and RPC backend. Uses tRPC framework. More extensive documentation is thanks to stronly typed API, use the Typescript language server to explore the API.
See package.json for NPM scripts.
Usage
// In Browser
import { createClient } from '@crypticorn-ai/api'
// Express and NodeJs
import { createServer } from '@crypticorn-ai/api/src/server'
const app = createServer()
// Or with Adapters
import { appRouter, createContext } from '@crypticorn-ai/api/src/server'
import { createNextApiHandler } from '@trpc/server/adapters/next'
const nextApiHandler = createNextApiHandler({
router: appRouter,
createContext: createContext,
})
Client
const trpc = createClient('https://app.crypticorn.com/trpc');
// get JWT
await trpc.authorizeUser
.mutate({
email: '[email protected]',
password: 'testpass',
})
.then((loginInfo) => {
document.cookie = 'accessToken=' + loginInfo.accessToken
document.cookie = 'refreshToken=' + loginInfo.refreshToken
console.log('logged in')
})
// helpers
function getCookies() {
return document.cookie.split(';').reduce((cookies, cookie) => {
const [name, value] = cookie.split('=').map((c) => c.trim())
cookies[name] = value
return cookies
}, {})
}
function getCookie(name) {
return getCookies()[name]
}
// refresh JWT
await trpc.refreshJwt
.mutate({
accessToken: getCookie('accessToken'),
refreshToken: getCookie('refreshToken'),
})
.then((loginInfo) => {
document.cookie = 'accessToken=' + loginInfo.accessToken
document.cookie = 'refreshToken=' + loginInfo.refreshToken
console.log('refreshed jwt')
})
// perform authenticated requests
const user = await trpc.whoami.query()
console.log('logged in as', user)