class Geminabox::Proxy::FileHandler

def create_local_folder

def create_local_folder
  FileUtils.mkdir_p(local_file_folder)
end

def create_proxy_folder

def create_proxy_folder
  FileUtils.mkdir_p(proxy_file_folder)
end

def encoding

def encoding
  "UTF-8"
end

def ensure_destination_exists

def ensure_destination_exists
  create_local_folder unless local_folder_exists?
  create_proxy_folder unless proxy_folder_exists?
end

def file_exists?(path)

def file_exists?(path)
  File.exist? path
end

def initialize(file_name)

def initialize(file_name)
  @file_name = file_name
  ensure_destination_exists
end

def local_content

def local_content
  File.read(local_path).force_encoding(encoding)
end

def local_file_exists?

def local_file_exists?
  file_exists? local_path
end

def local_file_folder

def local_file_folder
  File.dirname local_path
end

def local_folder_exists?

def local_folder_exists?
  Dir.exist?(local_file_folder)
end

def local_path

def local_path
  File.expand_path(file_name, root_path)
end

def proxy_file_exists?

def proxy_file_exists?
  file_exists? proxy_path
end

def proxy_file_folder

def proxy_file_folder
  File.dirname proxy_path
end

def proxy_folder_exists?

def proxy_folder_exists?
  Dir.exist?(proxy_file_folder)
end

def proxy_folder_name

def proxy_folder_name
  'proxy'
end

def proxy_folder_path

def proxy_folder_path
  File.join(root_path, proxy_folder_name)
end

def proxy_path

def proxy_path
  File.expand_path(file_name, proxy_folder_path)
end

def remote_content

def remote_content
  Geminabox.http_adapter.get_content(remote_url).force_encoding(encoding)
rescue
  return nil if Geminabox.allow_remote_failure
  raise GemStoreError.new(500, "Unable to get content from #{remote_url}")
end

def remote_url

def remote_url
  URI.join(Geminabox.ruby_gems_url, file_name)
end

def root_path

def root_path
  Geminabox.data
end