class Lt::Lcms::Lesson::Downloader::Gspreadsheet

Constants

MIME_TYPE
MIME_TYPE_EXPORT

Public Class Methods

gdoc_file_url(id) click to toggle source
# File lib/lt/lcms/lesson/downloader/gspreadsheet.rb, line 13
def self.gdoc_file_url(id)
  "https://docs.google.com/spreadsheets/d/#{id}"
end

Public Instance Methods

download_sheet(sheet_name) click to toggle source
# File lib/lt/lcms/lesson/downloader/gspreadsheet.rb, line 17
def download_sheet(sheet_name)
  result = StringIO.new
  tempfile = Tempfile.new
  tempfile.binmode
  download(mime_type: 'application/zip') do |raw_zip|
    tempfile.write raw_zip
    # NOTE: It's impossible to use ::Zip::InputStream due to `General Purpose Flag Bit 3`
    ::Zip::File.open(tempfile.path) do |zip|
      if (entry = zip.find_entry "#{sheet_name}.html")
        result.write entry.get_input_stream.read
      end
    end
    result.string
  end
ensure
  tempfile.close
  tempfile.unlink
end