Class: Ephem::Download

Inherits:
Object
  • Object
show all
Defined in:
lib/ephem/download.rb

Constant Summary collapse

JPL_BASE_URL =
"https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/"
IMCCE_BASE_URL =
"https://ftp.imcce.fr/pub/ephem/planets/"
JPL_KERNELS =
%w[
  de102.bsp
  de200.bsp
  de202.bsp
  de403.bsp
  de405.bsp
  de405_1960_2020.bsp
  de406.bsp
  de410.bsp
  de413.bsp
  de414.bsp
  de418.bsp
  de421.bsp
  de422.bsp
  de422_1850_2050.bsp
  de423.bsp
  de424.bsp
  de424s.bsp
  de425.bsp
  de430_1850-2150.bsp
  de430_plus_MarsPC.bsp
  de430t.bsp
  de431.bsp
  de432t.bsp
  de433.bsp
  de433_plus_MarsPC.bsp
  de433t.bsp
  de434.bsp
  de434s.bsp
  de434t.bsp
  de435.bsp
  de435s.bsp
  de435t.bsp
  de436.bsp
  de436s.bsp
  de436t.bsp
  de438.bsp
  de438_plus_MarsPC.bsp
  de438s.bsp
  de438t.bsp
  de440.bsp
  de440s.bsp
  de440s_plus_MarsPC.bsp
  de440t.bsp
  de441.bsp
].freeze
IMCCE_KERNELS =
{
  "inpop10b.bsp" => "inpop10b_TDB_m100_p100_spice.bsp",
  "inpop10b_large.bsp" => "inpop10b_TDB_m1000_p1000_spice.bsp",
  "inpop10e.bsp" => "inpop10e_TDB_m100_p100_spice.bsp",
  "inpop10e_large.bsp" => "inpop10e_TDB_m1000_p1000_spice.bsp",
  "inpop13c.bsp" => "inpop13c_TDB_m100_p100_spice.bsp",
  "inpop13c_large.bsp" => "inpop13c_TDB_m1000_p1000_spice.bsp",
  "inpop17a.bsp" => "inpop17a_TDB_m100_p100_spice.bsp",
  "inpop17a_large.bsp" => "inpop17a_TDB_m1000_p1000_spice.bsp",
  "inpop19a.bsp" => "inpop19a_TDB_m100_p100_spice.bsp",
  "inpop19a_large.bsp" => "inpop19a_TDB_m1000_p1000_spice.bsp",
  "inpop21a.bsp" => "inpop21a_TDB_m100_p100_spice.bsp",
  "inpop21a_large.bsp" => "inpop21a_TDB_m1000_p1000_spice.bsp"
}.freeze
IMCCE_KERNELS_MATCHING =
{
  "inpop10b.bsp" => "inpop10b/inpop10b_TDB_m100_p100_spice.tar.gz",
  "inpop10b_large.bsp" => "inpop10b/inpop10b_TDB_m1000_p1000_spice.tar.gz",
  "inpop10e.bsp" => "inpop10e/inpop10e_TDB_m100_p100_spice_release2.tar.gz",
  "inpop10e_large.bsp" =>
    "inpop10e/inpop10e_TDB_m1000_p1000_spice_release2.tar.gz",
  "inpop13c.bsp" => "inpop13c/inpop13c_TDB_m100_p100_spice.tar.gz",
  "inpop13c_large.bsp" => "inpop13c/inpop13c_TDB_m1000_p1000_spice.tar.gz",
  "inpop17a.bsp" => "inpop17a/inpop17a_TDB_m100_p100_spice.tar.gz",
  "inpop17a_large.bsp" => "inpop17a/inpop17a_TDB_m1000_p1000_spice.tar.gz",
  "inpop19a.bsp" => "inpop19a/inpop19a_TDB_m100_p100_spice.tar.gz",
  "inpop19a_large.bsp" => "inpop19a/inpop19a_TDB_m1000_p1000_spice.tar.gz",
  "inpop21a.bsp" => "inpop21a/inpop21a_TDB_m100_p100_spice.tar.gz",
  "inpop21a_large.bsp" => "inpop21a/inpop21a_TDB_m1000_p1000_spice.tar.gz"
}.freeze
SUPPORTED_KERNELS =
(JPL_KERNELS + IMCCE_KERNELS.keys).freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, local_path) ⇒ Download

Returns a new instance of Download.



97
98
99
100
101
# File 'lib/ephem/download.rb', line 97

def initialize(name, local_path)
  @name = name
  @local_path = local_path
  validate_requested_kernel!
end

Class Method Details

.call(name:, target:) ⇒ Object



93
94
95
# File 'lib/ephem/download.rb', line 93

def self.call(name:, target:)
  new(name, target).call
end

Instance Method Details

#callObject



103
104
105
106
107
108
# File 'lib/ephem/download.rb', line 103

def call
  content = jpl_kernel? ? download_from_jpl : download_from_imcce
  File.write(@local_path, content)

  true
end