Sha256: 5aa5fb7217622725622c68f77688dcc8c7693936e9269e6a4239b799fae0351b

Contents?: true

Size: 806 Bytes

Versions: 3

Compression:

Stored size: 806 Bytes

Contents

require 'excon'
require 'json'
require 'postcodes_io/autocomplete_list'

module Postcodes
  module Autocomplete

    def autocomplete(postcode)
      autocomplete_postcode postcode
    end

    private

    def autocomplete_postcode(postcode)
      postcode = remove_whitespace postcode
      response = Excon.get("https://api.postcodes.io/postcodes/#{postcode}/autocomplete")

      unless response.status == 404
        parsed_response = JSON.parse(response.body)
        return Postcodes::AutocompleteList.new(parsed_response['result'])
      end
      return nil
    end

    def remove_whitespace(string)
      string.gsub(/\s+/, '')
    end

    def process_response(response, &block)
      unless response.status == 404
        yield JSON.parse(response.body)
      end
      nil
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
postcodes_io-0.4.0 lib/postcodes_io/autocomplete.rb
postcodes_io-0.3.0 lib/postcodes_io/autocomplete.rb
postcodes_io-0.2.0 lib/postcodes_io/autocomplete.rb