1.0.31 • Published 3 months ago

@vepler/http-sdk v1.0.31

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

Vepler HTTP SDK

The Vepler HTTP SDK provides a simple interface to interact with Propbar API services.

Installation

npm install @vepler/http-sdk

Usage

import { initializeSDK, property, areaReference } from '@vepler/http-sdk';

// Initialize the SDK first
initializeSDK({
  apiKey: 'your-api-key',
  // Optional configuration
  timeout: 120000, // Default: 60000ms (60 seconds)
  logLevel: 'debug' // Default: 'info'
});

// Example: Get property by ID
const propertyData = await property.getById({
  locationIds: ['123456'],
  attributes: ['address', 'price']
});

// Example: Find areas within a location (single type)
const response = await areaReference.within({
  lat: 51.5074,
  lng: -0.1278,
  radius: 2,
  type: 'lsoa21'
});
// Result format: { results: AreaResult[] }

// Example: Find multiple area types using a comma-separated string
const multipleAreas1 = await areaReference.within({
  lat: 51.5074,
  lng: -0.1278,
  radius: 5,
  type: 'lsoa21,msoa21,county'
});

// Example: Find multiple area types using an array (more convenient in code)
const multipleAreas2 = await areaReference.within({
  lat: 51.5074,
  lng: -0.1278,
  radius: 5,
  type: ['lsoa21', 'msoa21', 'county'] // Array is automatically joined with commas
});

// Results will include items of all the requested types
// You can filter by type if needed: 
const lsoaResults = multipleAreas1.results.filter(item => item.type === 'lsoa21');
const msoa21Results = multipleAreas1.results.filter(item => item.type === 'msoa21');

// Example: Query metrics 
const metrics = await areaReference.metrics.query({
  metricIds: '1',
  geographicEntityTypes: 'lsoa21',
  attributes: 'geographicCode',
});

Error Handling

The SDK provides detailed error classes to make handling API errors easier:

import { 
  initializeSDK, 
  PropbarApiError,
  PropbarTimeoutError,
  PropbarNetworkError, 
  PropbarAuthenticationError,
  PropbarValidationError 
} from '@vepler/http-sdk';

try {
  const metrics = await areaReference.metrics.query({
    metricIds: '1',
    geographicEntityTypes: 'lsoa21',
    attributes: 'geographicCode',
  });
} catch (error) {
  if (error instanceof PropbarTimeoutError) {
    console.error(`Request timed out after ${error.timeout}ms: ${error.message}`);
    // Handle timeout, maybe retry
  } else if (error instanceof PropbarNetworkError) {
    console.error(`Network error: ${error.message}`);
    // Handle network issues
  } else if (error instanceof PropbarAuthenticationError) {
    console.error(`Authentication error: ${error.message}`);
    // Handle auth issues
  } else if (error instanceof PropbarValidationError) {
    console.error(`Validation error: ${error.message}`);
    // Handle validation issues
  } else if (error instanceof PropbarApiError) {
    console.error(`API error: ${error.message}`);
    // Handle general API errors
  } else {
    console.error(`Unknown error: ${error.message}`);
  }
}

Each error includes:

  • Clear error message
  • Endpoint where the error occurred
  • Parameters used in the request
  • HTTP status code (when available)
  • Original error object for debugging

Configuration

You can customize the SDK with these options:

initializeSDK({
  apiKey: 'your-api-key',
  timeout: 120000, // Request timeout in milliseconds (default is 60000ms/60s)
  logLevel: 'debug', // Log level (debug, info, warn, error)
  propertyHost: 'https://custom-api-host.com/property', // Override default API host
  areaReferenceHost: 'https://custom-api-host.com/area-reference', // Override default API host
  headers: { // Custom headers to include in all requests
    'Custom-Header': 'value'
  }
});

Environment

The SDK supports both production and development environments:

// Use development environment (longer timeouts, more debugging)
initializeSDK({ apiKey: 'your-api-key' }, 'development');

// Use production environment (default)
initializeSDK({ apiKey: 'your-api-key' }, 'production');

License

MIT

1.0.26

4 months ago

1.0.25

4 months ago

1.0.29

4 months ago

1.0.28

4 months ago

1.0.27

4 months ago

1.0.31

3 months ago

1.0.30

4 months ago

1.0.22

4 months ago

1.0.21

4 months ago

1.0.20

4 months ago

1.0.24

4 months ago

1.0.23

4 months ago

1.0.19

5 months ago

1.0.18

7 months ago

1.0.17

7 months ago

1.0.16

8 months ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago