require 'uri' require 'net/http' require 'json' class CPIFetcher DEFAULT_CPI_SERIES_URL = 'http://api.bls.gov/publicAPI/v2/timeseries/data/CUUSA210SA0' attr_reader :cpi_series_url def initialize @cpi_series_url = URI(ENV['CPI_SERIES_URL'] || DEFAULT_CPI_SERIES_URL) end def cpi resp = fetch_raw_response return nil unless resp['Results']['series'] resp['Results']['series'].first['data'].first['value'] end private def fetch_raw_response JSON.parse(Net::HTTP.get_response(cpi_series_url).body) end end if $PROGRAM_NAME == __FILE__ puts CPIFetcher.new.cpi exit 0 end