Factored out adsbx-url and adsbx-headers, with tests.
This commit is contained in:
parent
632fb472e9
commit
02ee1c5050
@ -108,20 +108,30 @@
|
|||||||
(js->clj (parse-json json-str))
|
(js->clj (parse-json json-str))
|
||||||
"ac"))})
|
"ac"))})
|
||||||
|
|
||||||
(defn get-adsbexchange-live-data [{:keys [url lat lon radius-nm api-key api-whitelist rapid-api?]}]
|
|
||||||
(let [url (str
|
(defn adsbx-url [{:keys [url lat lon radius-nm rapid-api?]}]
|
||||||
(->> [url
|
(let [url-pieces [url
|
||||||
"lat" lat
|
"lat" lat
|
||||||
"lon" lon
|
"lon" lon
|
||||||
"dist" (.toFixed radius-nm (if rapid-api? 0 1))]
|
"dist" (.toFixed radius-nm (if rapid-api? 0 1))]
|
||||||
|
url-str (->> url-pieces
|
||||||
(map str)
|
(map str)
|
||||||
(string/join "/"))
|
(string/join "/"))]
|
||||||
;; RapidAPI expects a trailing slash.
|
url-str))
|
||||||
(if rapid-api? "/" ""))
|
|
||||||
headers (cond-> (if rapid-api?
|
|
||||||
{:x-rapidapi-key api-key :x-rapidapi-host (:host (c-url/url url)) :useQueryString true}
|
(defn adsbx-headers [{:keys [url api-key api-whitelist rapid-api?]}]
|
||||||
|
(cond-> (if rapid-api?
|
||||||
|
{:x-rapidapi-key api-key
|
||||||
|
:x-rapidapi-host (:host (c-url/url url))
|
||||||
|
:useQueryString true}
|
||||||
{:auth-key api-key})
|
{:auth-key api-key})
|
||||||
api-whitelist (assoc :ADSBX-WL api-whitelist))]
|
api-whitelist (assoc :ADSBX-WL api-whitelist)))
|
||||||
|
|
||||||
|
|
||||||
|
(defn get-adsbexchange-live-data [options]
|
||||||
|
(let [url (adsbx-url options)
|
||||||
|
headers (adsbx-headers (assoc options :url url))]
|
||||||
(p/let [http-result (util/http-get url {:headers headers})]
|
(p/let [http-result (util/http-get url {:headers headers})]
|
||||||
(let [result (parse-adsbexchange-live-data http-result)]
|
(let [result (parse-adsbexchange-live-data http-result)]
|
||||||
(log-verbose "Got %s aircraft from API" (count (:aircraft result)))
|
(log-verbose "Got %s aircraft from API" (count (:aircraft result)))
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
(:require [cljs.test :refer (async deftest is testing)]
|
(:require [cljs.test :refer (async deftest is testing)]
|
||||||
[kitchen-async.promise :as p]
|
[kitchen-async.promise :as p]
|
||||||
[lemondronor.advisorycircular :as advisorycircular]
|
[lemondronor.advisorycircular :as advisorycircular]
|
||||||
[lemondronor.advisorycircular.pelias :as pelias]))
|
[lemondronor.advisorycircular.pelias :as pelias]
|
||||||
|
[lemondronor.advisorycircular.util :as util]))
|
||||||
|
|
||||||
|
|
||||||
(def epsilon 0.0000010)
|
(def epsilon 0.0000010)
|
||||||
@ -457,3 +458,39 @@
|
|||||||
:aircraft-info-db-path "/"
|
:aircraft-info-db-path "/"
|
||||||
:pelias {:url "http://pelias/"}
|
:pelias {:url "http://pelias/"}
|
||||||
:icaos ["123" "456"]})))))
|
:icaos ["123" "456"]})))))
|
||||||
|
|
||||||
|
|
||||||
|
(deftest adsbx-url
|
||||||
|
(is (= (advisorycircular/adsbx-url
|
||||||
|
{:url "http://adsbx"
|
||||||
|
:lat 0
|
||||||
|
:lon 1
|
||||||
|
:radius-nm 2})
|
||||||
|
"http://adsbx/lat/0/lon/1/dist/2.0"))
|
||||||
|
(is (= (advisorycircular/adsbx-url
|
||||||
|
{:url "http://adsbx"
|
||||||
|
:lat 0
|
||||||
|
:lon 1
|
||||||
|
:radius-nm 2
|
||||||
|
:rapid-api? true})
|
||||||
|
"http://adsbx/lat/0/lon/1/dist/2")))
|
||||||
|
|
||||||
|
|
||||||
|
(deftest adsbx-headers
|
||||||
|
(is (= (advisorycircular/adsbx-headers
|
||||||
|
{:url "http://adsbx/lat/0/lon/1/dist/2"
|
||||||
|
:api-key "key"})
|
||||||
|
{:auth-key "key"}))
|
||||||
|
(is (= (advisorycircular/adsbx-headers
|
||||||
|
{:url "http://adsbx/lat/0/lon/1/dist/2"
|
||||||
|
:api-key "key"
|
||||||
|
:api-whitelist "whitelist"})
|
||||||
|
{:auth-key "key"
|
||||||
|
:ADSBX-WL "whitelist"}))
|
||||||
|
(is (= (advisorycircular/adsbx-headers
|
||||||
|
{:url "http://adsbx/lat/0/lon/1/dist/2"
|
||||||
|
:api-key "key"
|
||||||
|
:rapid-api? true})
|
||||||
|
{:x-rapidapi-key "key"
|
||||||
|
:x-rapidapi-host "adsbx"
|
||||||
|
:useQueryString true})))
|
||||||
|
Loading…
Reference in New Issue
Block a user