gfw-api/gfw-viirs-fires-api

View on GitHub
src/serializers/viirsFiresSerializer.ts

Summary

Maintainability
B
6 hrs
Test Coverage
import { Serializer } from 'jsonapi-serializer';

const viirsFiresSerializer: Serializer = new Serializer('viirs-fires', {
    attributes: ['value', 'period', 'downloadUrls', 'area_ha', 'latitude', 'longitude', 'acq_date', 'acq_time', 'day'],
    typeForAttribute: (attribute: string) => attribute,
    downloadUrls: {
        attributes: ['csv', 'geojson', 'kml', 'shp', 'svg']
    },
    keyForAttribute: 'camelCase'
});

const viirsFiresLatestSerializer: Serializer = new Serializer('viirs-latest', {
    attributes: ['date'],
    typeForAttribute: (attribute: string) => attribute,
});

export interface SerializedViirsFiresResponse {
    data: Record<string, any>,
    links: {
        self: string,
        first: string,
        last: string,
        prev: string,
        next: string,
    },
    meta: {
        'total-pages': number,
        'total-items': number
        size: number
    }
}

class ViirsFiresSerializer {

    static serialize(data: Record<string, any>): SerializedViirsFiresResponse {
        return viirsFiresSerializer.serialize(data);
    }

    static serializeLatest(data: Record<string, any>): SerializedViirsFiresResponse {
        return viirsFiresLatestSerializer.serialize(data);
    }

}

export default ViirsFiresSerializer;