src: Trying to implement module factory
This commit is contained in:
parent
44b71c5296
commit
da431878dd
202
src/index.js
202
src/index.js
@ -1,127 +1,127 @@
|
|||||||
const axios = require('axios');
|
const axios = require('axios');
|
||||||
|
|
||||||
const BASE_URL = "https://api.ebird.org/v2"
|
module.exports = function (EBIRD_API_KEY) {
|
||||||
const API_KEY = process.env.EBIRD_API_KEY;
|
const BASE_URL = "https://api.ebird.org/v2"
|
||||||
|
let key = EBIRD_API_KEY;
|
||||||
|
|
||||||
function query(endpoint, params) {
|
function query(endpoint, params) {
|
||||||
let data = undefined;
|
let data = undefined;
|
||||||
axios.get(`${BASE_URL}/${endpoint}`, {
|
axios.get(`${BASE_URL}/${endpoint}`, {
|
||||||
headers: {
|
headers: {
|
||||||
'X-eBirdApiToken': API_KEY
|
'X-eBirdApiToken': key
|
||||||
},
|
},
|
||||||
params: {
|
params: {
|
||||||
...params
|
...params
|
||||||
}
|
}
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
console.log('GET response');
|
console.log('GET response');
|
||||||
data = response.data;
|
data = response.data;
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
});
|
});
|
||||||
return data;
|
return data;
|
||||||
}
|
|
||||||
|
|
||||||
function get(endpoint) {
|
|
||||||
return params => {
|
|
||||||
query(endpoint, params);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const ebird = {
|
function get(endpoint) {
|
||||||
data: {
|
return params => {
|
||||||
obs: {
|
query(endpoint, params);
|
||||||
recent: {
|
}
|
||||||
in: (regionCode) => get(`data/obs/${regionCode}/recent`),
|
}
|
||||||
|
|
||||||
|
const api = {
|
||||||
|
data: {
|
||||||
|
obs: {
|
||||||
recent: {
|
recent: {
|
||||||
|
in: (regionCode) => get(`data/obs/${regionCode}/recent`),
|
||||||
|
recent: {
|
||||||
|
in: (regionCode) => {
|
||||||
|
return {
|
||||||
|
for: (speciesCode) => get(`data/obs/${regionCode}/recent/${speciesCode}`)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
notable: {
|
||||||
|
in: (regionCode) => get(`data/obs/${regionCode}/recent/notable`),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
geo: {
|
||||||
|
recent: {
|
||||||
|
in: get(`data/obs/geo/recent`),
|
||||||
|
species: (speciesCode) => get(`data/obs/geo/recent/${speciesCode}`),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
historic: {
|
||||||
in: (regionCode) => {
|
in: (regionCode) => {
|
||||||
return {
|
return {
|
||||||
for: (speciesCode) => get(`data/obs/${regionCode}/recent/${speciesCode}`)
|
on: (year, month, day) => get(`data/${regionCode}/historic/${year}/${month}/${day}`)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
notable: {
|
},
|
||||||
in: (regionCode) => get(`data/obs/${regionCode}/recent/notable`),
|
},
|
||||||
|
nearest: {
|
||||||
|
geo: {
|
||||||
|
recent: {
|
||||||
|
species: (speciesCode) => get(`data/nearest/geo/recent/${speciesCode}`),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
geo: {
|
},
|
||||||
recent: {
|
product: {
|
||||||
in: get(`data/obs/geo/recent`),
|
lists: {
|
||||||
species: (speciesCode) => get(`data/obs/geo/recent/${speciesCode}`),
|
get: (regionCode) => get(`product/lists/${regionCode}`),
|
||||||
},
|
|
||||||
},
|
|
||||||
historic: {
|
|
||||||
in: (regionCode) => {
|
in: (regionCode) => {
|
||||||
return {
|
return {
|
||||||
on: (year, month, day) => get(`data/${regionCode}/historic/${year}/${month}/${day}`)
|
on: (year, month, day) => get(`product/lists/${regionCode}/${year}/${month}/${day}`)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
top100: {
|
||||||
nearest: {
|
in: (regionCode) => {
|
||||||
geo: {
|
return {
|
||||||
recent: {
|
on: (year, month, day) => get(`product/top100/${regionCode}/${year}/${month}/${day}`),
|
||||||
species: (speciesCode) => get(`data/nearest/geo/recent/${speciesCode}`),
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
stats: {
|
||||||
},
|
in: (regionCode) => {
|
||||||
product: {
|
return {
|
||||||
lists: {
|
on: (year, month, day) => get(`product/stats/${regionCode}/${year}/${month}/${day}`)
|
||||||
get: (regionCode) => get(`product/lists/${regionCode}`),
|
}
|
||||||
in: (regionCode) => {
|
|
||||||
return {
|
|
||||||
on: (year, month, day) => get(`product/lists/${regionCode}/${year}/${month}/${day}`)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
spplist: {
|
||||||
top100: {
|
in: (regionCode) => get(`product/spplist/${regionCode}`),
|
||||||
in: (regionCode) => {
|
},
|
||||||
return {
|
checklist: {
|
||||||
on: (year, month, day) => get(`product/top100/${regionCode}/${year}/${month}/${day}`),
|
view: (subId) => get(`product/checklist/view/${subId}`),
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
stats: {
|
ref: {
|
||||||
in: (regionCode) => {
|
geo: {
|
||||||
return {
|
adjacent: {
|
||||||
on: (year, month, day) => get(`product/stats/${regionCode}/${year}/${month}/${day}`)
|
of: (regionCode) => get(`ref/geo/adjacent/${regionCode}`),
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
hotspot: {
|
||||||
spplist: {
|
in: (regionCode) => get(`ref/hotspot/${regionCode}`),
|
||||||
in: (regionCode) => get(`product/spplist/${regionCode}`),
|
geo: get(`ref/hostspot/geo`),
|
||||||
},
|
info: (locId) => get(`ref/hotspot/info/${locId}`),
|
||||||
checklist: {
|
},
|
||||||
view: (subId) => get(`product/checklist/view/${subId}`),
|
taxonomy: {
|
||||||
},
|
ebird: get(`ref/taxonomy/ebird`),
|
||||||
},
|
versions: get(`ref/taxonomy/versions`),
|
||||||
ref: {
|
},
|
||||||
geo: {
|
taxon: {
|
||||||
adjacent: {
|
forms: (speciesCode) => get(`ref/taxon/${speciesCode}`),
|
||||||
of: (regionCode) => get(`ref/geo/adjacent/${regionCode}`),
|
},
|
||||||
|
taxa_locales: {
|
||||||
|
ebird: get(`ref/taxa-locales/ebird`),
|
||||||
|
},
|
||||||
|
sppgroup: (speciesGrouping) => get(`ref/sppgroup/${speciesGrouping}`),
|
||||||
|
region: {
|
||||||
|
info: (regionCode) => get(`ref/region/${regionCode}`),
|
||||||
|
list: (regionType, parentRegionCode) => get(`ref/region/list/${regionType}/${parentRegionCode}`),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
hotspot: {
|
}
|
||||||
in: (regionCode) => get(`ref/hotspot/${regionCode}`),
|
};
|
||||||
geo: get(`ref/hostspot/geo`),
|
|
||||||
info: (locId) => get(`ref/hotspot/info/${locId}`),
|
|
||||||
},
|
|
||||||
taxonomy: {
|
|
||||||
ebird: get(`ref/taxonomy/ebird`),
|
|
||||||
versions: get(`ref/taxonomy/versions`),
|
|
||||||
},
|
|
||||||
taxon: {
|
|
||||||
forms: (speciesCode) => get(`ref/taxon/${speciesCode}`),
|
|
||||||
},
|
|
||||||
taxa_locales: {
|
|
||||||
ebird: get(`ref/taxa-locales/ebird`),
|
|
||||||
},
|
|
||||||
sppgroup: (speciesGrouping) => get(`ref/sppgroup/${speciesGrouping}`),
|
|
||||||
region: {
|
|
||||||
info: (regionCode) => get(`ref/region/${regionCode}`),
|
|
||||||
list: (regionType, parentRegionCode) => get(`ref/region/list/${regionTypie}/${parentRegionCode}`),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = ebird;
|
|
@ -2,8 +2,8 @@ const ebird = require('../src/index');
|
|||||||
require('dotenv').config;
|
require('dotenv').config;
|
||||||
|
|
||||||
test('/data/obs/${regionCode}/recent for location France', () => {
|
test('/data/obs/${regionCode}/recent for location France', () => {
|
||||||
let data = ebird.obs.recent.in('FR');
|
let data = ebird.data.obs.recent.in('FR')();
|
||||||
expect(data.length).toBeGreaterThan(1);
|
console.log(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user