From aeea3ef5c5502d3527fe75a10acb4b4233763466 Mon Sep 17 00:00:00 2001
From: Travis Rivers <trivers@contractor.usgs.gov>
Date: Fri, 18 Sep 2020 12:07:26 -0600
Subject: [PATCH] add observatories endpoint

---
 Pipfile.lock                     | 99 ++++++++++++++++++++++++++++++++
 geomagio/api/secure/login.py     |  1 +
 geomagio/api/ws/observatories.py | 23 +++++++-
 3 files changed, 122 insertions(+), 1 deletion(-)

diff --git a/Pipfile.lock b/Pipfile.lock
index ba0dd2e72..2a26ade89 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,11 @@
 {
     "_meta": {
         "hash": {
+<<<<<<< HEAD
             "sha256": "d66957b30cff9d753efb31ff03f3e6cacc900f7702dfc0d113c6b2e64a0a3739"
+=======
+            "sha256": "43d433eeabd702a645eb41c4c59069ff003a7a364504d6374f596fcba83cfa9e"
+>>>>>>> add observatories endpoint
         },
         "pipfile-spec": 6,
         "requires": {},
@@ -223,7 +227,10 @@
                 "sha256:61bcfe25cd4c97f014292576863fe142e962fbff6157ea567188a10341b134ef",
                 "sha256:dcaa0cdc68e3cc581817c72adb5e9dacc992574397e01c9bab66759d41af72f5"
             ],
+<<<<<<< HEAD
             "markers": "python_version >= '3.6'",
+=======
+>>>>>>> add observatories endpoint
             "version": "==2020.9.9"
         },
         "httptools": {
@@ -333,7 +340,10 @@
                 "sha256:ecc930ae559ea8a43377e8b60ca6f8d61ac532fc57efb915d899de4a67928efd",
                 "sha256:f161af26f596131b63b236372e4ce40f3167c1b5b5d459b29d2514bd8c9dc9ee"
             ],
+<<<<<<< HEAD
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
+=======
+>>>>>>> add observatories endpoint
             "version": "==4.5.2"
         },
         "matplotlib": {
@@ -366,11 +376,15 @@
                 "sha256:fab11637734eb14affb9c5e20d44d69429c18b49595d6e67c69295de24827fc4",
                 "sha256:ffbae66e2db70dc330cb3299525f97e1c0efdfc763e04e1a4e08f968c7ad21f0"
             ],
+<<<<<<< HEAD
             "markers": "python_version >= '3.6'",
+=======
+>>>>>>> add observatories endpoint
             "version": "==3.3.1"
         },
         "numpy": {
             "hashes": [
+<<<<<<< HEAD
                 "sha256:04c7d4ebc5ff93d9822075ddb1751ff392a4375e5885299445fcebf877f179d5",
                 "sha256:0bfd85053d1e9f60234f28f63d4a5147ada7f432943c113a11afcf3e65d9d4c8",
                 "sha256:0c66da1d202c52051625e55a249da35b31f65a81cb56e4c69af0dfb8fb0125bf",
@@ -400,6 +414,37 @@
             ],
             "index": "pypi",
             "version": "==1.19.2"
+=======
+                "sha256:082f8d4dd69b6b688f64f509b91d482362124986d98dc7dc5f5e9f9b9c3bb983",
+                "sha256:1bc0145999e8cb8aed9d4e65dd8b139adf1919e521177f198529687dbf613065",
+                "sha256:309cbcfaa103fc9a33ec16d2d62569d541b79f828c382556ff072442226d1968",
+                "sha256:3673c8b2b29077f1b7b3a848794f8e11f401ba0b71c49fbd26fb40b71788b132",
+                "sha256:480fdd4dbda4dd6b638d3863da3be82873bba6d32d1fc12ea1b8486ac7b8d129",
+                "sha256:56ef7f56470c24bb67fb43dae442e946a6ce172f97c69f8d067ff8550cf782ff",
+                "sha256:5a936fd51049541d86ccdeef2833cc89a18e4d3808fe58a8abeb802665c5af93",
+                "sha256:5b6885c12784a27e957294b60f97e8b5b4174c7504665333c5e94fbf41ae5d6a",
+                "sha256:667c07063940e934287993366ad5f56766bc009017b4a0fe91dbd07960d0aba7",
+                "sha256:7ed448ff4eaffeb01094959b19cbaf998ecdee9ef9932381420d514e446601cd",
+                "sha256:8343bf67c72e09cfabfab55ad4a43ce3f6bf6e6ced7acf70f45ded9ebb425055",
+                "sha256:92feb989b47f83ebef246adabc7ff3b9a59ac30601c3f6819f8913458610bdcc",
+                "sha256:935c27ae2760c21cd7354402546f6be21d3d0c806fffe967f745d5f2de5005a7",
+                "sha256:aaf42a04b472d12515debc621c31cf16c215e332242e7a9f56403d814c744624",
+                "sha256:b12e639378c741add21fbffd16ba5ad25c0a1a17cf2b6fe4288feeb65144f35b",
+                "sha256:b1cca51512299841bf69add3b75361779962f9cee7d9ee3bb446d5982e925b69",
+                "sha256:b8456987b637232602ceb4d663cb34106f7eb780e247d51a260b84760fd8f491",
+                "sha256:b9792b0ac0130b277536ab8944e7b754c69560dac0415dd4b2dbd16b902c8954",
+                "sha256:c9591886fc9cbe5532d5df85cb8e0cc3b44ba8ce4367bd4cf1b93dc19713da72",
+                "sha256:cf1347450c0b7644ea142712619533553f02ef23f92f781312f6a3553d031fc7",
+                "sha256:de8b4a9b56255797cbddb93281ed92acbc510fb7b15df3f01bd28f46ebc4edae",
+                "sha256:e1b1dc0372f530f26a03578ac75d5e51b3868b9b76cd2facba4c9ee0eb252ab1",
+                "sha256:e45f8e981a0ab47103181773cc0a54e650b2aef8c7b6cd07405d0fa8d869444a",
+                "sha256:e4f6d3c53911a9d103d8ec9518190e52a8b945bab021745af4939cfc7c0d4a9e",
+                "sha256:ed8a311493cf5480a2ebc597d1e177231984c818a86875126cfd004241a73c3e",
+                "sha256:ef71a1d4fd4858596ae80ad1ec76404ad29701f8ca7cdcebc50300178db14dfc"
+            ],
+            "index": "pypi",
+            "version": "==1.19.1"
+>>>>>>> add observatories endpoint
         },
         "obspy": {
             "hashes": [
@@ -671,7 +716,10 @@
                 "sha256:bd2ffe5e37fb75d014728511f8e68ebf2c80b0fa3d04ca1479f4dc752ae31ac9",
                 "sha256:ebe8ee08d9be96a3c9f31b2cb2a24dbdf845247b745664bd8a3f9bd0c977fdbc"
             ],
+<<<<<<< HEAD
             "markers": "python_version >= '3.6'",
+=======
+>>>>>>> add observatories endpoint
             "version": "==0.13.6"
         },
         "typing": {
@@ -696,7 +744,10 @@
                 "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a",
                 "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"
             ],
+<<<<<<< HEAD
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
+=======
+>>>>>>> add observatories endpoint
             "version": "==1.25.10"
         },
         "uvicorn": {
@@ -763,6 +814,7 @@
             "hashes": [
                 "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594",
                 "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"
+<<<<<<< HEAD
             ],
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
             "version": "==20.2.0"
@@ -774,6 +826,10 @@
             ],
             "index": "pypi",
             "version": "==1.6.2"
+=======
+            ],
+            "version": "==20.2.0"
+>>>>>>> add observatories endpoint
         },
         "beautifulsoup4": {
             "hashes": [
@@ -790,6 +846,7 @@
             ],
             "index": "pypi",
             "version": "==20.8b1"
+<<<<<<< HEAD
         },
         "certifi": {
             "hashes": [
@@ -797,11 +854,14 @@
                 "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
             ],
             "version": "==2020.6.20"
+=======
+>>>>>>> add observatories endpoint
         },
         "cfgv": {
             "hashes": [
                 "sha256:32e43d604bbe7896fe7c248a9c2276447dbef840feb28fe20494f62af110211d",
                 "sha256:cf22deb93d4bcf92f345a5c3cd39d3d41d6340adc60c78bbbd6588c384fda6a1"
+<<<<<<< HEAD
             ],
             "markers": "python_full_version >= '3.6.1'",
             "version": "==3.2.0"
@@ -812,6 +872,10 @@
                 "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
             ],
             "version": "==3.0.4"
+=======
+            ],
+            "version": "==3.2.0"
+>>>>>>> add observatories endpoint
         },
         "click": {
             "hashes": [
@@ -858,7 +922,10 @@
                 "sha256:ce7866f29d3025b5b34c2e944e66ebef0d92e4a4f2463f7266daa03a1332a651",
                 "sha256:e26c993bd4b220429d4ec8c1468eca445a4064a61c74ca08da7429af9bc53bb0"
             ],
+<<<<<<< HEAD
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
+=======
+>>>>>>> add observatories endpoint
             "version": "==5.2.1"
         },
         "distlib": {
@@ -903,6 +970,7 @@
             "hashes": [
                 "sha256:009f92ba753c467a99f6fd3eb395412cbc34077dd5a64313b62ba04297f2ab8e",
                 "sha256:0868312cb7402b48cf44fe3f568259f804ef4e983c143d11bf7a51ca311ebc34"
+<<<<<<< HEAD
             ],
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
             "version": "==1.5.0"
@@ -914,6 +982,17 @@
             ],
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
             "version": "==2.10"
+=======
+            ],
+            "version": "==1.5.0"
+>>>>>>> add observatories endpoint
+        },
+        "iniconfig": {
+            "hashes": [
+                "sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437",
+                "sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69"
+            ],
+            "version": "==1.0.1"
         },
         "iniconfig": {
             "hashes": [
@@ -926,6 +1005,7 @@
             "hashes": [
                 "sha256:6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20",
                 "sha256:9b30f12df9393f0d28af9210ff8efe48d10c94f73e5daf886f10c4b0b0b4f03c"
+<<<<<<< HEAD
             ],
             "markers": "python_version >= '3.5'",
             "version": "==8.5.0"
@@ -935,6 +1015,16 @@
                 "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d",
                 "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"
             ],
+=======
+            ],
+            "version": "==8.5.0"
+        },
+        "mypy-extensions": {
+            "hashes": [
+                "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d",
+                "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"
+            ],
+>>>>>>> add observatories endpoint
             "version": "==0.4.3"
         },
         "nodeenv": {
@@ -1056,6 +1146,7 @@
                 "sha256:e46d13f38cfcbb79bfdb2964b0fe12561fe633caf964a77a5f8d4e45fe5d2ef7"
             ],
             "version": "==2020.7.14"
+<<<<<<< HEAD
         },
         "requests": {
             "hashes": [
@@ -1072,6 +1163,8 @@
             ],
             "index": "pypi",
             "version": "==1.9.0"
+=======
+>>>>>>> add observatories endpoint
         },
         "six": {
             "hashes": [
@@ -1147,6 +1240,7 @@
             "index": "pypi",
             "version": "==3.7.4.3"
         },
+<<<<<<< HEAD
         "urllib3": {
             "hashes": [
                 "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a",
@@ -1155,12 +1249,17 @@
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
             "version": "==1.25.10"
         },
+=======
+>>>>>>> add observatories endpoint
         "virtualenv": {
             "hashes": [
                 "sha256:43add625c53c596d38f971a465553f6318decc39d98512bc100fa1b1e839c8dc",
                 "sha256:e0305af10299a7fb0d69393d8f04cb2965dda9351140d11ac8db4e5e3970451b"
             ],
+<<<<<<< HEAD
             "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+=======
+>>>>>>> add observatories endpoint
             "version": "==20.0.31"
         },
         "waitress": {
diff --git a/geomagio/api/secure/login.py b/geomagio/api/secure/login.py
index c3407d931..e9bd6e1dc 100644
--- a/geomagio/api/secure/login.py
+++ b/geomagio/api/secure/login.py
@@ -141,6 +141,7 @@ async def login(request: Request):
     if "Referer" in request.headers:
         request.session["after_authorize_redirect"] = request.headers["Referer"]
     # redirect to openid login
+
     return await oauth.openid.authorize_redirect(request, redirect_uri)
 
 
diff --git a/geomagio/api/ws/observatories.py b/geomagio/api/ws/observatories.py
index 9e9d19416..4e433dae2 100644
--- a/geomagio/api/ws/observatories.py
+++ b/geomagio/api/ws/observatories.py
@@ -8,7 +8,7 @@ from .Observatory import OBSERVATORIES
 router = APIRouter()
 
 
-@router.get("/observatories/")
+@router.get("/observatories")
 def get_observatories() -> Dict:
     return {
         "type": "FeatureCollection",
@@ -32,3 +32,24 @@ def get_observatories() -> Dict:
             for o in OBSERVATORIES
         ],
     }
+
+
+@router.get("/observatories/{id}")
+async def get_observatory_by_id(id: str):
+    for o in OBSERVATORIES:
+        if o.id == id:
+            return {
+                "id": o.id,
+                "properties": {
+                    "name": o.name,
+                    "agency": o.agency,
+                    "agency_name": o.agency_name,
+                    "sensor_orientation": o.sensor_orientation,
+                    "sensor_sampling_rate": 0.01,
+                    "declination_base": o.declination_base,
+                },
+                "geometry": {
+                    "type": "Point",
+                    "coordinates": [o.longitude, o.latitude, o.elevation],
+                },
+            }
-- 
GitLab