views.py 716 B

1234567891011121314151617181920212223
  1. import requests
  2. import logging
  3. from django.http import HttpResponse, HttpResponseServerError
  4. from django.conf import settings
  5. logger = logging.getLogger(__name__)
  6. def geonames_altitude(request, lat, lon):
  7. lat = float(lat)
  8. lon = float(lon)
  9. url = settings.GEONAMES_ASTERGDEM.format(lat=lat, lon=lon)
  10. r = requests.get(url)
  11. if r.status_code != 200:
  12. return HttpResponseServerError()
  13. # The API sometimes returns an error but still sends a 200 code,
  14. # so we validate the answer just to make sure...
  15. try:
  16. return HttpResponse(float(r.text))
  17. except ValueError:
  18. logger.warning("api.geonames.org error: {}".format(r.text))
  19. return HttpResponseServerError()