class FCC::Station::ExtendedInfo

Attributes

results[RW]
service[RW]

Public Class Methods

new(service) click to toggle source
# File lib/fcc/station/extended_info.rb, line 12
def initialize(service)
  @service = service
  @options = {
    follow_redirects: true
  }
  
  @query = {
    # state: nil,
    # call: nil,
    # city: nil,
    # arn: nil,
    # serv: service.to_s.downcase, # Only return primary main records, no backup transmitters, etc… for now
    status: 3, # licensed records only
    # freq: @service.to_sym == :fm ? '87.1' : '530',
    # fre2: @service.to_sym == :fm ? '107.9' : '1700',
    # facid: nil,
    # class: nil,
    # dkt:   nil,
    # dist:  nil,
    # dlat2: nil,
    # dlon2: nil,
    # mlon2: nil,
    # mlat2: nil,
    # slat2: nil,
    # slon2: nil,
    # NS: "N",
    # e: 9,
    # EW: 'W',
    list: 4, # pipe separated output
    size: 9
  }
end

Public Instance Methods

all_results() click to toggle source
# File lib/fcc/station/extended_info.rb, line 45
def all_results

  begin
    cache_key = "#{self.class.instance_variable_get('@default_options')[:base_uri]}/#{@service.to_s.downcase}q"
    FCC.cache.fetch cache_key do
      response = self.class.get("/#{service.to_s.downcase}q", @options.merge(query: @query))

      FCC.log("Request: #{response.request.uri}")
      FCC.log("Inspect: #{response.request.uri.to_s.gsub('&list=4', '&list=0')}")

      response.parsed_response
    end
  rescue StandardError => e
    FCC.error(e.message)
    FCC.error(e.backtrace)
  end
end
find(id_or_call_sign) click to toggle source
# File lib/fcc/station/extended_info.rb, line 63
def find(id_or_call_sign)
  if id_or_call_sign =~ /^\d+$/
    id = id_or_call_sign
    all_results.filter { |r| r[:fcc_id].to_s == id.to_s } || find_directly({ facid: id_or_call_sign })
  else
    all_results.filter { |r| 
      r[:call_sign].to_s == id_or_call_sign.to_s || r[:call_sign].to_s.upcase =~ Regexp.new("^#{id_or_call_sign.upcase}[-—–][A-Z0-9]+$")
    } || find_directly({ call: id_or_call_sign })
  end
end
find_directly(options) click to toggle source
# File lib/fcc/station/extended_info.rb, line 74
def find_directly(options)
  response = self.class.get("/#{service.to_s.downcase}q", @options.merge(query: @query.merge(options)))
  FCC.log response.request.uri.to_s.gsub('&list=4', '&list=0')
  response.parsed_response
end