dev-to-js
Version:
An universal client for the Dev.to API written in Typescript
46 lines (38 loc) • 1.32 kB
text/typescript
import qs from 'querystringify'
import { Base, Pagination } from '../base'
import { Listing, ListingCategory, NewListing, UpdateListing } from './types'
const resourceName = 'listings'
type SearchListingsParams = Pagination & {
category?: ListingCategory,
}
export class Listings extends Base {
getListings (params?: SearchListingsParams) {
let query = resourceName
if (params) {
query += qs.stringify(params, '?')
}
return this.request<Listing[]>(query)
}
getListingsByCategory (category: ListingCategory, params?: Pagination) {
let query = `${resourceName}/category/${category}`
if (params) {
query += qs.stringify(params, '?')
}
return this.request<Listing[]>(query)
}
getListing (id: number) {
return this.request<Listing>(`${resourceName}/${id}`)
}
createListing (params: NewListing) {
return this.request<Listing>(resourceName, {
method: 'POST',
body: JSON.stringify({ classified_listing: params })
})
}
updateListing (id: number, params?: UpdateListing) {
return this.request<Listing>(`${resourceName}/${id}`, {
method: 'PUT',
body: JSON.stringify({ classified_listing: params })
})
}
}