@elecerp/directus-extension-api-endpoint
Version:
weather/holiday/map/company/province/time
2 lines (1 loc) • 5.01 kB
JavaScript
;var e=(e,t,a=500)=>class extends Error{name="DirectusError";extensions;code=e.toUpperCase();status=a;constructor(e,a){super("string"==typeof t?t:t(e),a),this.extensions=e}toString(){return`${this.name} [${this.code}]: ${this.message}`}};const t=require("axios"),a=require("@province-city-china/province"),r=require("@province-city-china/city"),n=require("@province-city-china/area"),i=t.create({baseURL:"http://open.api.tianyancha.com",timeout:2e3}),s=t.create({baseURL:"https://api.open-meteo.com",timeout:8e3}),o=t.create({baseURL:"https://archive-api.open-meteo.com",timeout:2e4}),c=t.create({baseURL:"https://power.larc.nasa.gov",timeout:2e4}),d=t.create({baseURL:"https://restapi.amap.com",timeout:2e3});var u={id:"api",handler:(t,{services:u,env:l})=>{t.get("/",((e,t)=>t.send("/api endpoint"))),t.get("/companySearch",(async(t,a,r)=>{let{name:n}=t.query;try{const{data:e}=await i.get("/services/open/search/2.0",{params:{word:n,pageSize:20,pageNum:1},headers:{Authorization:l.TYC_TOKEN}});a.json(e)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/provinceSearch",(async(e,t,r)=>{let{name:n}=e.query;const i=await a.filter((e=>e.name.includes(n)));t.json(i)})),t.get("/citySearch",(async(e,t,a)=>{let{name:n}=e.query;const i=await r.concat([{code:"110000",name:"北京市",province:"11"},{code:"120000",name:"天津市",province:"12"},{code:"310000",name:"上海市",province:"31"},{code:"500000",name:"重庆市",province:"50"}]).filter((e=>e.name.includes(n)));t.json(i)})),t.get("/areaSearch",(async(e,t,a)=>{let{name:r}=e.query;const i=await n.filter((e=>e.name.includes(r)));t.json(i)})),t.get("/omPredict",(async(t,a,r)=>{try{let{lat:e,lon:r,parameters:n,past_days:i}=t.query;n||(n="temperature_2m,relativehumidity_2m,precipitation,surface_pressure,cloudcover,cloudcover_low,cloudcover_mid,cloudcover_high,direct_radiation,diffuse_radiation,direct_normal_irradiance,windspeed_10m,windspeed_80m,windspeed_120m,windgusts_10m"),i||(i=0);const{data:o}=await s.get(`/v1/forecast?latitude=${e}&longitude=${r}&hourly=${n}&windspeed_unit=ms&timezone=Asia%2FSingapore&past_days=${i}`);return a.send(o)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/omHourly",(async(t,a,r)=>{try{let{lat:e,lon:r,parameters:n,startDate:i,endDate:s}=t.query;n||(n="temperature_2m,precipitation,surface_pressure,cloudcover,cloudcover_low,cloudcover_mid,cloudcover_high,direct_radiation,diffuse_radiation,direct_normal_irradiance,windspeed_10m,windspeed_100m,windgusts_10m");const{data:c}=await o.get(`/v1/era5?latitude=${e}&longitude=${r}&start_date=${i}&end_date=${s}&hourly=${n}&windspeed_unit=ms&timezone=auto`);return a.send(c)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/nasaClimatology",(async(t,a,r)=>{try{const{parameters:e,lon:r,lat:n}=t.query,{data:i}=await c.get(`/api/temporal/climatology/point?parameters=${e}&community=RE&longitude=${r}&latitude=${n}`);return a.send(i)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/nasaMonthly",(async(t,a,r)=>{try{const{parameters:e,lon:r,lat:n,start:i,end:s}=t.query,{data:o}=await c.get(`/api/temporal/monthly/point?parameters=${e}&community=RE&longitude=${r}&latitude=${n}&start=${i}&end=${s}&format=JSON`);return a.send(o)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/nasaDaily",(async(t,a,r)=>{try{const{parameters:e,lon:r,lat:n,start:i,end:s}=t.query,{data:o}=await c.get(`/api/temporal/daily/point?parameters=${e}&community=re&longitude=${r}&latitude=${n}&start=${i}&end=${s}&format=JSON`);return a.send(o)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/nasaHourly",(async(t,a,r)=>{try{const{parameters:e,lon:r,lat:n,start:i,end:s}=t.query,{data:o}=await c.get(`/api/temporal/hourly/point?parameters=${e}&community=RE&longitude=${r}&latitude=${n}&start=${i}&end=${s}&format=JSON`);return a.send(o)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/getElevation",(async(t,a,r)=>{try{const{lat:e,lon:r}=t.query,{data:n}=await s.get(`/v1/elevation?latitude=${e}&longitude=${r}`);return a.send(n)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/getLocation",(async(t,a,r)=>{try{const{address:e}=t.query,{data:r}=await d.get(encodeURI(`/v3/geocode/geo?address=${e}&key=${l.GAODE_KEY}`));return a.send(r.geocodes)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/getAddress",(async(t,a,r)=>{try{const{lat:e,lon:r}=t.query,{data:n}=await d.get(encodeURI(`/v3/geocode/regeo?location=${r},${e}&key=${l.GAODE_KEY}`));return a.send(n.regeocode)}catch(t){return r(new(e("ServiceUnavailable",t.message,500)))}})),t.get("/getTime",(async(e,t,a)=>{const r=new Date,n=`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}-${String(r.getDate()).padStart(2,"0")} ${String(r.getHours()).padStart(2,"0")}:${String(r.getMinutes()).padStart(2,"0")}:${String(r.getSeconds()).padStart(2,"0")}`;return t.send(n)}))}};module.exports=u;