Sha256: 7eb7c0c4ba4d4ee6755f917e13898101931e8021a4a8d7f5a25362d6313f025f

Contents?: true

Size: 1.16 KB

Versions: 15

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true
require 'http'

module Geonames
  # Service for transformation of location and find near airport
  class GeonamesApi
    GEONAMES_URL = 'http://api.geonames.org'
    SEARCH_URL = [GEONAMES_URL, 'searchJSON'].join('/')
    FIND_NEARBY_URL = [GEONAMES_URL, 'findNearbyJSON'].join('/')

    def self.config=(credentials)
      @config = {} unless @config
      @config.update(credentials)
    end

    def self.config
      return @config if @config
      @config = {
        username: ENV['GEONAMES_USERNAME']
      }
    end

    def self.geo_info(location)
      search_response = HTTP.get(
        SEARCH_URL,
        params: {
          username: config[:username],
          q: location,
          fuzzy: 0.5,
          maxRows: 1
        }
      )
      JSON.parse(search_response.to_s)['geonames'].first
    end

    def self.near_airports(lat:, lng:)
      findnearby_response = HTTP.get(
        FIND_NEARBY_URL,
        params: {
          username: config[:username],
          fcode: 'AIRP',
          lat: lat, lng: lng,
          radius: 50, maxRows: 10
        }
      )
      JSON.parse(findnearby_response.to_s)['geonames']
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
movlog-0.3.15 lib/movlog/geonames_api.rb
movlog-0.3.14 lib/movlog/geonames_api.rb
movlog-0.3.13 lib/movlog/geonames_api.rb
movlog-0.3.12 lib/movlog/geonames_api.rb
movlog-0.3.11 lib/movlog/geonames_api.rb
movlog-0.3.10 lib/movlog/geonames_api.rb
movlog-0.3.9 lib/movlog/geonames_api.rb
movlog-0.3.8 lib/movlog/geonames_api.rb
movlog-0.3.7 lib/movlog/geonames_api.rb
movlog-0.3.6 lib/movlog/geonames_api.rb
movlog-0.3.5 lib/movlog/geonames_api.rb
movlog-0.3.4 lib/movlog/geonames_api.rb
movlog-0.3.3 lib/movlog/geonames_api.rb
movlog-0.3.2 lib/movlog/geonames_api.rb
movlog-0.3.1 lib/movlog/geonames_api.rb