Sha256: 51b679c8cc81f3b1b695172bfe69b3cc4eacf94b8336f1cc684100971e8563cd

Contents?: true

Size: 1.35 KB

Versions: 9

Compression:

Stored size: 1.35 KB

Contents

require 'sitehub/cookie'
require 'sitehub/constants'
class SiteHub
  # TODO: - change in to object and remove .reek exclusions for UtilityFunction
  module CookieRewriting
    ENDING_WITH_NEWLINE = /#{NEW_LINE}$/

    def rewrite_cookies(headers, substitute_domain:)
      cookies_hash = cookies_string_as_hash(headers[Constants::HttpHeaderKeys::SET_COOKIE])

      cookies_hash.values.each do |cookie|
        domain_attribute = cookie.find(:domain) || next
        update_domain(domain_attribute, substitute_domain)
      end
      headers[Constants::HttpHeaderKeys::SET_COOKIE] = cookies_hash_to_string(cookies_hash)
    end

    def update_domain(domain_attribute, substitute_domain)
      substitute = substitute_domain.dup
      if domain_attribute.value.start_with?(FULL_STOP)
        domain_attribute.update(substitute.prepend(FULL_STOP))
      else
        domain_attribute.update(substitute)
      end
    end

    def cookies_hash_to_string(cookies_hash)
      cookies_hash.values.inject(EMPTY_STRING.dup) do |cookie_string, cookie|
        cookie_string << "#{cookie}#{NEW_LINE}"
      end.sub(ENDING_WITH_NEWLINE, EMPTY_STRING)
    end

    def cookies_string_as_hash(cookie_string)
      cookie_string.lines.each_with_object({}) do |cookie_line, cookies|
        cookie = SiteHub::Cookie.new(cookie_line)
        cookies[cookie.name] = cookie
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sitehub-0.4.10 lib/sitehub/cookie_rewriting.rb
sitehub-0.5.0.alpha5 lib/sitehub/cookie_rewriting.rb
sitehub-0.5.0.alpha4 lib/sitehub/cookie_rewriting.rb
sitehub-0.5.0.alpha3 lib/sitehub/cookie_rewriting.rb
sitehub-0.5.0.alpha2 lib/sitehub/cookie_rewriting.rb
sitehub-0.4.9 lib/sitehub/cookie_rewriting.rb
sitehub-0.4.8 lib/sitehub/cookie_rewriting.rb
sitehub-0.4.7 lib/sitehub/cookie_rewriting.rb
sitehub-0.4.6 lib/sitehub/cookie_rewriting.rb