class Frameit::FrameDownloader

Constants

FRAME_PATH
HOST_URL

Public Class Methods

templates_path() click to toggle source
# File lib/frameit/frame_downloader.rb, line 33
def self.templates_path
  File.join(ENV['HOME'], FRAME_PATH, Frameit.frames_version)
end

Public Instance Methods

download_frames() click to toggle source
# File lib/frameit/frame_downloader.rb, line 6
def download_frames
  print_disclaimer

  require 'json'
  require 'fileutils'

  UI.message("Downloading device frames...")
  FileUtils.mkdir_p(templates_path)

  frames_version = download_file("version.txt")
  File.write(File.join(templates_path, "version.txt"), frames_version)
  UI.important("Using frame version '#{frames_version}', you can optionally lock that version in your Framefile.json using `device_frame_version`")

  files = JSON.parse(download_file("files.json"))
  files.each_with_index do |current, index|
    content = download_file(current, txt: "#{index + 1} of #{files.count} files")
    File.write(File.join(templates_path, current), content)
  end
  File.write(File.join(templates_path, "offsets.json"), download_file("offsets.json"))

  UI.success("Successfully downloaded all required image assets")
end
frames_exist?(version: "latest") click to toggle source
# File lib/frameit/frame_downloader.rb, line 29
def frames_exist?(version: "latest")
  Dir["#{templates_path}/*.png"].count > 0 && File.read(File.join(templates_path, "version.txt")).to_i > 0
end
print_disclaimer() click to toggle source
templates_path() click to toggle source
# File lib/frameit/frame_downloader.rb, line 37
def templates_path
  self.class.templates_path
end

Private Instance Methods

download_file(path, txt: "file") click to toggle source
# File lib/frameit/frame_downloader.rb, line 58
def download_file(path, txt: "file")
  require 'uri'

  url = File.join(HOST_URL, Frameit.frames_version, URI.escape(path))
  UI.message("Downloading #{txt} from '#{url}' ...")
  body = Excon.get(url).body
  raise body if body.include?("<Error>")
  return body
rescue => ex
  UI.error(ex)
  UI.user_error!("Error accessing URL '#{url}'")
end