Sha256: e9319faf2746fe739631c3e78c20fb13062cffc6ecd4c883cc6b9832d77c8601

Contents?: true

Size: 998 Bytes

Versions: 1

Compression:

Stored size: 998 Bytes

Contents

module GSheets
  module V3
    class SpreadSheet
      def initialize(session:, id:)
        @id = id
        @session = session
      end

      def worksheets
        list_work_sheets.keys.map do |title|
          WorkSheet.new(session: @session, id: @id, grid_id: list_work_sheets[title])
        end
      end

      private

      def list_work_sheets
        result = {}
        document["feed"]["entry"].each do |e|
          result[get_title(e)] = get_grid_id_from_link(e["link"])
        end
        result
      end

      def document
        JSON.parse(@session.get_worksheets(id: @id).body)
      end

      def get_title(entry)
        entry["title"]["$t"]
      end

      def get_self_link(link)
        link.select { |l| l["rel"] == "self" }.first["href"]
      end

      def get_grid_id(self_link)
        self_link.split("/").last
      end

      def get_grid_id_from_link(link)
        self_link = get_self_link(link)
        get_grid_id(self_link)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
g_sheets-0.2.0 lib/g_sheets/v3/spread_sheet.rb