declare const plooginsData: PlooginsData; export const getSearchPlugins = async (query: string, settings: Settings): Promise => { const response = await fetch(plooginsData.ploogins_public_api_url + 'search/', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query: query, ...(settings.featured_authors && settings.featured_authors.length > 0 ? { featured_authors: settings.featured_authors } : {}), ...(settings.featured_plugins && settings.featured_plugins.length > 0 ? { featured_plugins: settings.featured_plugins } : {}), ...(settings.exclude_authors && settings.exclude_authors.length > 0 ? { exclude_authors: settings.exclude_authors } : {}), ...(settings.exclude_plugins && settings.exclude_plugins.length > 0 ? { exclude_plugins: settings.exclude_plugins } : {}), ...(settings.exclude_premium !== undefined ? { exclude_premium: settings.exclude_premium } : {}), ...(settings.min_last_updated ? { min_last_updated: settings.min_last_updated } : {}), ...(settings.min_active_installs ? { min_active_installs: settings.min_active_installs } : {}), ...(settings.min_rating ? { min_rating: settings.min_rating } : {}), ...(settings.max_rating ? { max_rating: settings.max_rating } : {}), ...(settings.min_tested_version ? { min_tested_version: settings.min_tested_version } : {}), ...(settings.max_results ? { max_results: settings.max_results } : {}), }), }); return response.json(); } export const getSuggestedSearches = async (args: SuggestedSearchesAPIArguments): Promise => { const response = await fetch(plooginsData.ploogins_public_api_url + 'suggested-searches', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ...(args.site_title && args.site_title ? { site_title: args.site_title } : {}), ...(args.site_description && args.site_description ? { site_description: args.site_description } : {}), ...(args.site_plugins && args.site_plugins.length > 0 ? { site_plugins: args.site_plugins } : {}), ...(args.site_locale && args.site_locale ? { site_locale: args.site_locale } : {}), }), }); return response.json(); } export const getRelatedPlugins = async (plugin_slug: string): Promise => { const response = await fetch(plooginsData.ploogins_public_api_url + 'related', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ...(plugin_slug ? { plugin_slug: plugin_slug } : {}), }), }); const plugins = await response.json(); return plugins.slice(0, 4); } export const getFeaturedPlugins = async (): Promise => { const response = await fetch(plooginsData.ploogins_public_api_url + 'featured', { method: 'GET', }); return response.json(); } export const getPluginData = async (plugin_slugs: string[]): Promise => { const queryString = `slugs=${plugin_slugs.join(',')}`; const url = `${plooginsData.ploogins_public_api_url}plugins?${queryString}`; const response = await fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); return response.json(); } export const getPluginAuthors = async (args: { query: string }): Promise => { const response = await fetch(plooginsData.ploogins_public_api_url + 'authors', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ...(args.query && args.query ? { query: args.query } : {}), }), }); return response.json(); } export const getSimpleSearchPlugins = async (args: { query: string }): Promise => { const response = await fetch(plooginsData.ploogins_public_api_url + 'simple-search', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ...(args.query && args.query ? { query: args.query } : {}), }), }); return response.json(); }