# frozen_string_literal: true # # ronin-web-browser - An automated Chrome API. # # Copyright (c) 2022-2024 Hal Brodigan (postmodern.mod3@gmail.com) # # ronin-web-browser is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # ronin-web-browser is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with ronin-web-browser. If not, see . # require 'ronin/web/browser/cookie' module Ronin module Web module Browser # # Represents a file of cookies. # class CookieFile include Enumerable # The path to the file. # # @return [String] attr_reader :path # # Initializes a cookie file. # # @param [String] path # The path to the cookie file. # def initialize(path) @path = File.expand_path(path) end # # Writes the cookies to the cookie file. # # @param [String] path # The path to the cookie file to write to. # # @param [Array, Enumerator] cookies # The cookies to write. # def self.save(path,cookies) File.open(path,'w') do |file| cookies.each do |cookie| file.puts(cookie) end end end # # Parses each cookie in the cookie file. # # @yield [cookie] # The given block will be passed each cookie parsed from each line of # the file. # # @yieldparam [Cookie] cookie # A cookie parsed from the file. # # @return [Enumerator] # If no block is given, then an Enumerator will be returned. # def each return enum_for(__method__) unless block_given? File.open(@path) do |file| file.each_line(chomp: true) do |line| yield Cookie.parse(line) end end end end end end end