class Kmc::DownloadUrl

Public Instance Methods

box?() click to toggle source
# File lib/kmc/download_url.rb, line 27
def box?
  url =~ /app\.box\.com/
end
curseforge?() click to toggle source
# File lib/kmc/download_url.rb, line 35
def curseforge?
  url =~ /curseforge/
end
dropbox?() click to toggle source
# File lib/kmc/download_url.rb, line 31
def dropbox?
  url =~ /dropbox\.com/
end
has_known_resolver?() click to toggle source
# File lib/kmc/download_url.rb, line 19
def has_known_resolver?
  mediafire? || box? || dropbox? || curseforge?
end
mediafire?() click to toggle source
# File lib/kmc/download_url.rb, line 23
def mediafire?
  url =~ /mediafire/
end
resolve_download_url() click to toggle source
# File lib/kmc/download_url.rb, line 5
def resolve_download_url
  if mediafire?
    extract_mediafire_url
  elsif box?
    extract_box_url
  elsif dropbox?
    extract_dropbox_url
  elsif curseforge?
    extract_curseforge_url
  else
    url
  end
end

Private Instance Methods

box_intermediate_url(shared_name, file_id) click to toggle source
# File lib/kmc/download_url.rb, line 62
def box_intermediate_url(shared_name, file_id)
  base = "https://app.box.com/index.php?rm=box_download_shared_file"
  shared_name_part = "&shared_name=#{shared_name}"
  file_id_part = "&file_id=#{file_id}"

  base + shared_name_part + file_id_part
end
extract_box_url() click to toggle source
# File lib/kmc/download_url.rb, line 53
def extract_box_url
  raw_html = HTTParty.get(url)

  shared_name = url.split("/").last
  file_id = raw_html.scan(/itemTypedID: \"(f_\d+)\"/)[0][0]

  box_intermediate_url(shared_name, file_id)
end
extract_curseforge_url() click to toggle source
# File lib/kmc/download_url.rb, line 49
def extract_curseforge_url
  rendered_html("#{url}/files/latest").strip
end
extract_dropbox_url() click to toggle source
# File lib/kmc/download_url.rb, line 45
def extract_dropbox_url
  rendered_page.css('#default_content_download_button').first['href']
end
extract_mediafire_url() click to toggle source
# File lib/kmc/download_url.rb, line 41
def extract_mediafire_url
  rendered_page.css('.download_link a').first['href']
end
rendered_html(url) click to toggle source
# File lib/kmc/download_url.rb, line 74
def rendered_html(url)
  Dir.chdir(File.dirname(__FILE__)) do
    `phantomjs page_fetcher.js #{url}`
  end
end
rendered_page(url = self.url) click to toggle source
# File lib/kmc/download_url.rb, line 70
def rendered_page(url = self.url)
  Nokogiri::HTML(rendered_html(url))
end