recatfor
This commit is contained in:
parent
8e365867bd
commit
74c66e74c9
13 changed files with 363 additions and 112 deletions
|
@ -13,11 +13,8 @@ export async function loadPostsForAuthor(
|
|||
): Promise<components['schemas']['GetAuthorPostsResponse']> {
|
||||
const url = new URL(`authors/${authorId}/posts`, ApiHost)
|
||||
if (amount != null) url.searchParams.set('amount', amount.toString())
|
||||
|
||||
if (cursor != null) url.searchParams.set('from', cursor)
|
||||
|
||||
const res = await doGetRequest(url)
|
||||
|
||||
return res as components['schemas']['GetAuthorPostsResponse']
|
||||
}
|
||||
|
||||
|
@ -27,14 +24,46 @@ export async function loadPublicFeed(
|
|||
): Promise<components['schemas']['GetAllPublicPostsResponse']> {
|
||||
const url = new URL(`posts`, ApiHost)
|
||||
if (amount != null) url.searchParams.set('amount', amount.toString())
|
||||
|
||||
if (cursor) url.searchParams.set('from', cursor)
|
||||
if (cursor != null) url.searchParams.set('from', cursor)
|
||||
|
||||
const res = await doGetRequest(url)
|
||||
|
||||
return res as components['schemas']['GetAllPublicPostsResponse']
|
||||
}
|
||||
|
||||
export async function uploadMedia(
|
||||
file: File,
|
||||
): Promise<components['schemas']['UploadMediaResponse']> {
|
||||
const url = new URL('media', ApiHost)
|
||||
const body = new FormData()
|
||||
body.append('file', file)
|
||||
const response = await fetch(
|
||||
new Request(url, {
|
||||
method: 'POST',
|
||||
body: body,
|
||||
}),
|
||||
)
|
||||
|
||||
if (!response.ok) throw new Error(await response.text())
|
||||
return await response.json()
|
||||
}
|
||||
|
||||
export async function createPost(
|
||||
authorId: string,
|
||||
content: string,
|
||||
media: string[],
|
||||
): Promise<components['schemas']['CreatePostResponse']> {
|
||||
const url = new URL('posts', ApiHost)
|
||||
const body: components['schemas']['CreatePostRequest'] = {
|
||||
authorId,
|
||||
content,
|
||||
media,
|
||||
}
|
||||
|
||||
const res = await doPostRequest(url, body)
|
||||
return res as components['schemas']['CreatePostResponse']
|
||||
}
|
||||
|
||||
async function doGetRequest(url: URL): Promise<unknown> {
|
||||
const response = await fetch(new Request(url))
|
||||
|
||||
|
@ -42,3 +71,19 @@ async function doGetRequest(url: URL): Promise<unknown> {
|
|||
|
||||
return await response.json()
|
||||
}
|
||||
|
||||
async function doPostRequest(url: URL, body: unknown): Promise<unknown> {
|
||||
const response = await fetch(
|
||||
new Request(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(body),
|
||||
}),
|
||||
)
|
||||
|
||||
if (!response.ok) throw new Error(await response.text())
|
||||
|
||||
return await response.json()
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ export interface paths {
|
|||
get: {
|
||||
parameters: {
|
||||
query?: {
|
||||
Cursor?: string
|
||||
From?: string
|
||||
Amount?: number
|
||||
}
|
||||
header?: never
|
||||
|
@ -66,6 +66,85 @@ export interface paths {
|
|||
patch?: never
|
||||
trace?: never
|
||||
}
|
||||
'/media': {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
get?: never
|
||||
put?: never
|
||||
post: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
requestBody: {
|
||||
content: {
|
||||
'multipart/form-data': {
|
||||
/** Format: binary */
|
||||
file?: string
|
||||
}
|
||||
}
|
||||
}
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content: {
|
||||
'text/plain': components['schemas']['UploadMediaResponse']
|
||||
'application/json': components['schemas']['UploadMediaResponse']
|
||||
'text/json': components['schemas']['UploadMediaResponse']
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
delete?: never
|
||||
options?: never
|
||||
head?: never
|
||||
patch?: never
|
||||
trace?: never
|
||||
}
|
||||
'/media/{id}': {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path?: never
|
||||
cookie?: never
|
||||
}
|
||||
get: {
|
||||
parameters: {
|
||||
query?: never
|
||||
header?: never
|
||||
path: {
|
||||
id: string
|
||||
}
|
||||
cookie?: never
|
||||
}
|
||||
requestBody?: never
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown
|
||||
}
|
||||
content?: never
|
||||
}
|
||||
}
|
||||
}
|
||||
put?: never
|
||||
post?: never
|
||||
delete?: never
|
||||
options?: never
|
||||
head?: never
|
||||
patch?: never
|
||||
trace?: never
|
||||
}
|
||||
'/authors/{username}/posts': {
|
||||
parameters: {
|
||||
query?: never
|
||||
|
@ -76,7 +155,7 @@ export interface paths {
|
|||
get: {
|
||||
parameters: {
|
||||
query?: {
|
||||
Cursor?: string
|
||||
From?: string
|
||||
Amount?: number
|
||||
}
|
||||
header?: never
|
||||
|
@ -160,6 +239,11 @@ export interface components {
|
|||
/** Format: date-time */
|
||||
createdAt: string
|
||||
}
|
||||
UploadMediaResponse: {
|
||||
/** Format: uuid */
|
||||
mediaId: string
|
||||
url: string
|
||||
}
|
||||
}
|
||||
responses: never
|
||||
parameters: never
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue