Sha256: 65f90081f7cb334ea7712a9cc1c8985cc68f294f45af90a4dbd1d1de6d248b95

Contents?: true

Size: 707 Bytes

Versions: 4

Compression:

Stored size: 707 Bytes

Contents

class DiscourseTheme::Downloader

  def initialize(dir:, client:)
    @dir = dir
    @client = client
    @theme_id = nil
  end

  def download_theme(id)
    raw = @client.get_raw_theme_export(id)
    sio = StringIO.new(raw)
    gz = Zlib::GzipReader.new(sio)
    Minitar.unpack(gz, @dir)

    # Minitar extracts into a sub directory, move all the files up one dir
    Dir.chdir(@dir) do
      folders = Dir.glob('*/')
      raise "Extraction failed" unless folders.length == 1
      FileUtils.mv(Dir.glob("#{folders[0]}*"), "./")
      FileUtils.remove_dir(folders[0])
    end
  end

  private

  def add_headers(request)
    if @is_theme_creator
      request["User-Api-Key"] = @api_key
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
discourse_theme-0.2.3 lib/discourse_theme/downloader.rb
discourse_theme-0.2.2 lib/discourse_theme/downloader.rb
discourse_theme-0.2.1 lib/discourse_theme/downloader.rb
discourse_theme-0.2.0 lib/discourse_theme/downloader.rb