autotrader-connect-api
Version:
Production-ready TypeScript wrapper for Auto Trader UK Connect APIs
140 lines • 5.63 kB
JavaScript
"use strict";
/**
* Advertiser management module for AutoTrader API
* Handles dealer/advertiser account operations and information retrieval
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.listResources = exports.getResource = exports.getTopRatedAdvertisers = exports.getNearbyAdvertisers = exports.getAdvertiserVehicleCount = exports.getAdvertiserStats = exports.updateAdvertiser = exports.getAllAdvertisers = exports.searchAdvertisers = exports.getAdvertiser = exports.getCurrentAdvertiser = void 0;
const client_1 = __importDefault(require("../client"));
/**
* Get current advertiser information (authenticated advertiser)
* @returns Promise resolving to advertiser details
*/
async function getCurrentAdvertiser() {
const response = await client_1.default.get('/advertisers/me');
return response.data;
}
exports.getCurrentAdvertiser = getCurrentAdvertiser;
/**
* Get advertiser by ID
* @param advertiserId Advertiser ID
* @returns Promise resolving to advertiser details
*/
async function getAdvertiser(advertiserId) {
const response = await client_1.default.get(`/advertisers/${advertiserId}`);
return response.data;
}
exports.getAdvertiser = getAdvertiser;
/**
* Search advertisers with filters
* @param params Search parameters
* @returns Promise resolving to paginated advertiser results
*/
async function searchAdvertisers(params = {}) {
const response = await client_1.default.get('/advertisers/search', {
params: {
name: params.name,
type: params.type,
accountStatus: params.accountStatus,
subscriptionType: params.subscriptionType,
postcode: params.postcode,
radius: params.radius,
county: params.county,
region: params.region,
specializations: Array.isArray(params.specializations) ? params.specializations.join(',') : params.specializations,
minRating: params.minRating,
minVehicleCount: params.minVehicleCount,
maxVehicleCount: params.maxVehicleCount,
page: params.page || 1,
pageSize: params.pageSize || 20,
sortBy: params.sortBy || 'name',
sortOrder: params.sortOrder || 'asc',
},
});
return response;
}
exports.searchAdvertisers = searchAdvertisers;
/**
* Get all advertisers (admin function)
* @param page Page number
* @param pageSize Number of results per page
* @returns Promise resolving to paginated advertiser list
*/
async function getAllAdvertisers(page = 1, pageSize = 50) {
const response = await client_1.default.get('/advertisers', {
params: { page, pageSize },
});
return response;
}
exports.getAllAdvertisers = getAllAdvertisers;
/**
* Update advertiser information
* @param advertiserId Advertiser ID (optional, defaults to current advertiser)
* @param updates Partial advertiser information to update
* @returns Promise resolving to updated advertiser details
*/
async function updateAdvertiser(updates, advertiserId) {
const endpoint = advertiserId ? `/advertisers/${advertiserId}` : '/advertisers/me';
const response = await client_1.default.put(endpoint, updates);
return response.data;
}
exports.updateAdvertiser = updateAdvertiser;
/**
* Get advertiser statistics
* @param advertiserId Advertiser ID (optional, defaults to current advertiser)
* @param period Time period for statistics
* @returns Promise resolving to advertiser statistics
*/
async function getAdvertiserStats(advertiserId, period = '30d') {
const endpoint = advertiserId ? `/advertisers/${advertiserId}/stats` : '/advertisers/me/stats';
const response = await client_1.default.get(endpoint, {
params: { period },
});
return response.data;
}
exports.getAdvertiserStats = getAdvertiserStats;
/**
* Get advertiser's vehicle count by status
* @param advertiserId Advertiser ID (optional, defaults to current advertiser)
* @returns Promise resolving to vehicle count breakdown
*/
async function getAdvertiserVehicleCount(advertiserId) {
const endpoint = advertiserId ? `/advertisers/${advertiserId}/vehicles/count` : '/advertisers/me/vehicles/count';
const response = await client_1.default.get(endpoint);
return response.data;
}
exports.getAdvertiserVehicleCount = getAdvertiserVehicleCount;
/**
* Get nearby advertisers
* @param postcode Postcode to search around
* @param radius Search radius in miles
* @param limit Maximum number of results
* @returns Promise resolving to nearby advertisers
*/
async function getNearbyAdvertisers(postcode, radius = 10, limit = 20) {
const response = await client_1.default.get('/advertisers/nearby', {
params: { postcode, radius, limit },
});
return response.data;
}
exports.getNearbyAdvertisers = getNearbyAdvertisers;
/**
* Get top-rated advertisers
* @param limit Maximum number of results
* @param minReviews Minimum number of reviews required
* @returns Promise resolving to top-rated advertisers
*/
async function getTopRatedAdvertisers(limit = 10, minReviews = 5) {
const response = await client_1.default.get('/advertisers/top-rated', {
params: { limit, minReviews },
});
return response.data;
}
exports.getTopRatedAdvertisers = getTopRatedAdvertisers;
// Legacy exports for backward compatibility
exports.getResource = getCurrentAdvertiser;
exports.listResources = getAllAdvertisers;
//# sourceMappingURL=advertisers.js.map