@uppy/companion-client
Version:
Client library for communication with Companion. Intended for use in Uppy plugins.
44 lines (35 loc) • 1.1 kB
text/typescript
import type { Body, Meta, Uppy } from '@uppy/core'
import type { CompanionClientSearchProvider } from '@uppy/utils/lib/CompanionClientProvider'
import RequestClient, { type Opts } from './RequestClient.js'
const getName = (id: string): string => {
return id
.split('-')
.map((s) => s.charAt(0).toUpperCase() + s.slice(1))
.join(' ')
}
export default class SearchProvider<M extends Meta, B extends Body>
extends RequestClient<M, B>
implements CompanionClientSearchProvider
{
provider: string
id: string
name: string
pluginId: string
constructor(uppy: Uppy<M, B>, opts: Opts) {
super(uppy, opts)
this.provider = opts.provider
this.id = this.provider
this.name = this.opts.name || getName(this.id)
this.pluginId = this.opts.pluginId
}
fileUrl(id: string): string {
return `${this.hostname}/search/${this.id}/get/${id}`
}
search<ResBody>(text: string, queries?: string): Promise<ResBody> {
return this.get<ResBody>(
`search/${this.id}/list?q=${encodeURIComponent(text)}${
queries ? `&${queries}` : ''
}`,
)
}
}