feat: update SocialDataClient return types

old-agentic
Travis Fischer 2024-06-17 21:28:03 -07:00
rodzic 2b0037e8ac
commit 90bf4d9d94
1 zmienionych plików z 94 dodań i 62 usunięć

Wyświetl plik

@ -205,11 +205,13 @@ export class SocialDataClient extends AIFunctionsProvider {
async getTweetById(idOrOpts: string | socialdata.GetTweetByIdOptions) { async getTweetById(idOrOpts: string | socialdata.GetTweetByIdOptions) {
const options = typeof idOrOpts === 'string' ? { id: idOrOpts } : idOrOpts const options = typeof idOrOpts === 'string' ? { id: idOrOpts } : idOrOpts
return this.ky return this._handleResponse(
.get('twitter/statuses/show', { this.ky
searchParams: sanitizeSearchParams(options) .get('twitter/statuses/show', {
}) searchParams: sanitizeSearchParams(options)
.json<socialdata.TweetResponse>() })
.json<socialdata.TweetResponse>()
)
} }
/** /**
@ -221,11 +223,13 @@ export class SocialDataClient extends AIFunctionsProvider {
const { tweetId, ...params } = const { tweetId, ...params } =
typeof idOrOpts === 'string' ? { tweetId: idOrOpts } : idOrOpts typeof idOrOpts === 'string' ? { tweetId: idOrOpts } : idOrOpts
return this.ky return this._handleResponse(
.get(`twitter/tweets/${tweetId}/liking_users`, { this.ky
searchParams: sanitizeSearchParams(params) .get(`twitter/tweets/${tweetId}/liking_users`, {
}) searchParams: sanitizeSearchParams(params)
.json<socialdata.UsersResponse>() })
.json<socialdata.UsersResponse>()
)
} }
/** /**
@ -237,11 +241,13 @@ export class SocialDataClient extends AIFunctionsProvider {
const { tweetId, ...params } = const { tweetId, ...params } =
typeof idOrOpts === 'string' ? { tweetId: idOrOpts } : idOrOpts typeof idOrOpts === 'string' ? { tweetId: idOrOpts } : idOrOpts
return this.ky return this._handleResponse(
.get(`twitter/tweets/${tweetId}/retweeted_by`, { this.ky
searchParams: sanitizeSearchParams(params) .get(`twitter/tweets/${tweetId}/retweeted_by`, {
}) searchParams: sanitizeSearchParams(params)
.json<socialdata.UsersResponse>() })
.json<socialdata.UsersResponse>()
)
} }
/** /**
@ -255,14 +261,16 @@ export class SocialDataClient extends AIFunctionsProvider {
const options = const options =
typeof queryOrOpts === 'string' ? { query: queryOrOpts } : queryOrOpts typeof queryOrOpts === 'string' ? { query: queryOrOpts } : queryOrOpts
return this.ky return this._handleResponse(
.get('twitter/search', { this.ky
searchParams: sanitizeSearchParams({ .get('twitter/search', {
type: 'top', searchParams: sanitizeSearchParams({
...options type: 'top',
...options
})
}) })
}) .json<socialdata.TweetsResponse>()
.json<socialdata.TweetsResponse>() )
} }
/** /**
@ -286,9 +294,9 @@ export class SocialDataClient extends AIFunctionsProvider {
? { username: usernameOrOptions } ? { username: usernameOrOptions }
: usernameOrOptions : usernameOrOptions
return this.ky return this._handleResponse(
.get(`twitter/user/${username}`) this.ky.get(`twitter/user/${username}`).json<socialdata.UserResponse>()
.json<socialdata.UserResponse>() )
} }
/** /**
@ -306,14 +314,16 @@ export class SocialDataClient extends AIFunctionsProvider {
...params ...params
} = typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts } = typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts
return this.ky return this._handleResponse(
.get( this.ky
`twitter/user/${userId}/${replies ? 'tweets-and-replies' : 'tweets'}`, .get(
{ `twitter/user/${userId}/${replies ? 'tweets-and-replies' : 'tweets'}`,
searchParams: sanitizeSearchParams(params) {
} searchParams: sanitizeSearchParams(params)
) }
.json<socialdata.TweetsResponse>() )
.json<socialdata.TweetsResponse>()
)
} }
/** /**
@ -327,11 +337,13 @@ export class SocialDataClient extends AIFunctionsProvider {
const { userId, ...params } = const { userId, ...params } =
typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts
return this.ky return this._handleResponse(
.get(`twitter/user/${userId}/likes`, { this.ky
searchParams: sanitizeSearchParams(params) .get(`twitter/user/${userId}/likes`, {
}) searchParams: sanitizeSearchParams(params)
.json<socialdata.TweetsResponse>() })
.json<socialdata.TweetsResponse>()
)
} }
/** /**
@ -343,14 +355,16 @@ export class SocialDataClient extends AIFunctionsProvider {
const { userId: user_id, ...params } = const { userId: user_id, ...params } =
typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts
return this.ky return this._handleResponse(
.get('twitter/followers/list', { this.ky
searchParams: sanitizeSearchParams({ .get('twitter/followers/list', {
user_id, searchParams: sanitizeSearchParams({
...params user_id,
...params
})
}) })
}) .json<socialdata.UsersResponse>()
.json<socialdata.UsersResponse>() )
} }
/** /**
@ -362,14 +376,16 @@ export class SocialDataClient extends AIFunctionsProvider {
const { userId: user_id, ...params } = const { userId: user_id, ...params } =
typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts typeof idOrOpts === 'string' ? { userId: idOrOpts } : idOrOpts
return this.ky return this._handleResponse(
.get('twitter/friends/list', { this.ky
searchParams: sanitizeSearchParams({ .get('twitter/friends/list', {
user_id, searchParams: sanitizeSearchParams({
...params user_id,
...params
})
}) })
}) .json<socialdata.UsersResponse>()
.json<socialdata.UsersResponse>() )
} }
/** /**
@ -381,11 +397,13 @@ export class SocialDataClient extends AIFunctionsProvider {
async isUserFollowingUser(opts: socialdata.UserFollowingOptions) { async isUserFollowingUser(opts: socialdata.UserFollowingOptions) {
const { sourceUserId, targetUserId, ...params } = opts const { sourceUserId, targetUserId, ...params } = opts
return this.ky return this._handleResponse(
.get(`twitter/user/${sourceUserId}/following/${targetUserId}`, { this.ky
searchParams: sanitizeSearchParams(params) .get(`twitter/user/${sourceUserId}/following/${targetUserId}`, {
}) searchParams: sanitizeSearchParams(params)
.json<socialdata.UserFollowingResponse>() })
.json<socialdata.UserFollowingResponse>()
)
} }
/** /**
@ -397,10 +415,24 @@ export class SocialDataClient extends AIFunctionsProvider {
const params = const params =
typeof queryOrOpts === 'string' ? { query: queryOrOpts } : queryOrOpts typeof queryOrOpts === 'string' ? { query: queryOrOpts } : queryOrOpts
return this.ky return this._handleResponse(
.get('twitter/search-users', { this.ky
searchParams: sanitizeSearchParams(params) .get('twitter/search-users', {
}) searchParams: sanitizeSearchParams(params)
.json<socialdata.UsersResponse>() })
.json<socialdata.UsersResponse>()
)
}
protected async _handleResponse<T extends object | socialdata.ErrorResponse>(
resP: Promise<T>
): Promise<Exclude<T, socialdata.ErrorResponse>> {
const res = await resP
if ((res as socialdata.ErrorResponse).status === 'error') {
throw new Error((res as socialdata.ErrorResponse).message)
}
return res as unknown as Exclude<T, socialdata.ErrorResponse>
} }
} }