lib/iron_warbler.rb in iron_warbler-2.0.7.35 vs lib/iron_warbler.rb in iron_warbler-2.0.7.36

- old
+ new

@@ -12,16 +12,125 @@ headers: { 'X-CMC_PRO_API_KEY' => COINMARKETCAP[:key] }, }) out = out.parsed_response.deep_symbolize_keys out[:data].each do |k, item| opi = Iro::Datapoint.new({ + date: Time.now.to_date, kind: Iro::Datapoint::KIND_CRYPTO, symbol: item[:symbol], quote_at: item[:quote][:USD][:last_updated], value: item[:quote][:USD][:price], volume: item[:quote][:USD][:volume_24h], }) opi.save! + end + end + + def self.get_treasuries + response = HTTParty.get( "https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv/all/#{Time.now.strftime('%Y%m')}?type=daily_treasury_yield_curve&field_tdr_date_value_month=#{Time.now.strftime('%Y%m')}&page&_format=csv") + outs = CSV.parse( response.body, { headers: true }) + out = outs[0] + date = Date.strptime(out['Date'], '%m/%d/%Y') + { + '1 Mo' => Iro::Datapoint::SYMBOL_T1MO, + '2 Mo' => Iro::Datapoint::SYMBOL_T2MO, + '3 Mo' => Iro::Datapoint::SYMBOL_T3MO, + '4 Mo' => Iro::Datapoint::SYMBOL_T4MO, + '6 Mo' => Iro::Datapoint::SYMBOL_T6MO, + '1 Yr' => Iro::Datapoint::SYMBOL_T1YR, + '2 Yr' => Iro::Datapoint::SYMBOL_T2YR, + '3 Yr' => Iro::Datapoint::SYMBOL_T3YR, + '5 Yr' => Iro::Datapoint::SYMBOL_T5YR, + '7 Yr' => Iro::Datapoint::SYMBOL_T7YR, + '10 Yr' => Iro::Datapoint::SYMBOL_T10YR, + '20 Yr' => Iro::Datapoint::SYMBOL_T20YR, + '30 Yr' => Iro::Datapoint::SYMBOL_T30YR, + }.each do |k, v| + opi = Iro::Datapoint.new({ + date: date, + quote_at: date, + kind: Iro::Datapoint::KIND_TREASURY, + symbol: v, + value: out[k], + }) + opi.save! + print '^' + end + end + + def self.import_1990_2023_treasuries + outs = CSV.parse( File.read( Rails.root.join('data', 'treasuries', '1990..23 daily-treasury-rates.csv') ), { headers: true }) + outs.each do |out| + date = Date.strptime(out['Date'], '%m/%d/%y') + { + '1 Mo' => Iro::Datapoint::SYMBOL_T1MO, + '2 Mo' => Iro::Datapoint::SYMBOL_T2MO, + '3 Mo' => Iro::Datapoint::SYMBOL_T3MO, + '4 Mo' => Iro::Datapoint::SYMBOL_T4MO, + '6 Mo' => Iro::Datapoint::SYMBOL_T6MO, + '1 Yr' => Iro::Datapoint::SYMBOL_T1YR, + '2 Yr' => Iro::Datapoint::SYMBOL_T2YR, + '3 Yr' => Iro::Datapoint::SYMBOL_T3YR, + '5 Yr' => Iro::Datapoint::SYMBOL_T5YR, + '7 Yr' => Iro::Datapoint::SYMBOL_T7YR, + '10 Yr' => Iro::Datapoint::SYMBOL_T10YR, + '20 Yr' => Iro::Datapoint::SYMBOL_T20YR, + '30 Yr' => Iro::Datapoint::SYMBOL_T30YR, + }.each do |k, v| + if out[k] + opi = Iro::Datapoint.new({ + date: date, + quote_at: date, + kind: Iro::Datapoint::KIND_TREASURY, + symbol: v, + value: out[k], + }) + begin + opi.save! + rescue Mongoid::Errors::Validations => err + puts! err, 'err' + end + print '^' + end + end + end + end + + def self.import_2024_treasuries + outs = CSV.parse( File.read( Rails.root.join('data', 'treasuries', '2024 daily-treasury-rates.csv') ), { headers: true }) + outs.each do |out| + date = Date.strptime(out['Date'], '%m/%d/%Y') + { + '1 Mo' => Iro::Datapoint::SYMBOL_T1MO, + '2 Mo' => Iro::Datapoint::SYMBOL_T2MO, + '3 Mo' => Iro::Datapoint::SYMBOL_T3MO, + '4 Mo' => Iro::Datapoint::SYMBOL_T4MO, + '6 Mo' => Iro::Datapoint::SYMBOL_T6MO, + '1 Yr' => Iro::Datapoint::SYMBOL_T1YR, + '2 Yr' => Iro::Datapoint::SYMBOL_T2YR, + '3 Yr' => Iro::Datapoint::SYMBOL_T3YR, + '5 Yr' => Iro::Datapoint::SYMBOL_T5YR, + '7 Yr' => Iro::Datapoint::SYMBOL_T7YR, + '10 Yr' => Iro::Datapoint::SYMBOL_T10YR, + '20 Yr' => Iro::Datapoint::SYMBOL_T20YR, + '30 Yr' => Iro::Datapoint::SYMBOL_T30YR, + }.each do |k, v| + if out[k] + opi = Iro::Datapoint.new({ + date: date, + quote_at: date, + kind: Iro::Datapoint::KIND_TREASURY, + symbol: v, + value: out[k], + }) + begin + opi.save! + rescue Mongoid::Errors::Validations => err + puts! err, 'err' + end + print '^' + end + end end end end