From 6c989a85080ad040c53c6fe99e5d49be34cd3a0c Mon Sep 17 00:00:00 2001 From: Postmodern Date: Thu, 10 Aug 2023 23:21:50 -0700 Subject: [PATCH] Added common `RequestParams` for both `Request` and `InterceptedRequest`. (#384) --- lib/ferrum/network/intercepted_request.rb | 15 ++---- lib/ferrum/network/request.rb | 50 ++------------------ lib/ferrum/network/request_params.rb | 57 +++++++++++++++++++++++ 3 files changed, 63 insertions(+), 59 deletions(-) create mode 100644 lib/ferrum/network/request_params.rb diff --git a/lib/ferrum/network/intercepted_request.rb b/lib/ferrum/network/intercepted_request.rb index 42574aff..fb63de22 100644 --- a/lib/ferrum/network/intercepted_request.rb +++ b/lib/ferrum/network/intercepted_request.rb @@ -1,10 +1,13 @@ # frozen_string_literal: true +require "ferrum/network/request_params" require "base64" module Ferrum class Network class InterceptedRequest + include RequestParams + attr_accessor :request_id, :frame_id, :resource_type, :network_id, :status def initialize(page, params) @@ -54,18 +57,6 @@ def abort @page.command("Fetch.failRequest", requestId: request_id, errorReason: "BlockedByClient") end - def url - @request["url"] - end - - def method - @request["method"] - end - - def headers - @request["headers"] - end - def initial_priority @request["initialPriority"] end diff --git a/lib/ferrum/network/request.rb b/lib/ferrum/network/request.rb index bfca8903..9981b4fc 100644 --- a/lib/ferrum/network/request.rb +++ b/lib/ferrum/network/request.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require "ferrum/network/request_params" require "time" module Ferrum @@ -9,6 +10,8 @@ class Network # object. # class Request + include RequestParams + # # Initializes the request object. # @@ -68,42 +71,6 @@ def frame_id @params["frameId"] end - # - # The URL for the request. - # - # @return [String] - # - def url - @request["url"] - end - - # - # The URL fragment for the request. - # - # @return [String, nil] - # - def url_fragment - @request["urlFragment"] - end - - # - # The request method. - # - # @return [String] - # - def method - @request["method"] - end - - # - # The request headers. - # - # @return [Hash{String => String}] - # - def headers - @request["headers"] - end - # # The request timestamp. # @@ -113,17 +80,6 @@ def time @time ||= Time.strptime(@params["wallTime"].to_s, "%s") end - # - # The optional HTTP `POST` form data. - # - # @return [String, nil] - # The HTTP `POST` form data. - # - def post_data - @request["postData"] - end - alias body post_data - # # Converts the request to a Hash. # diff --git a/lib/ferrum/network/request_params.rb b/lib/ferrum/network/request_params.rb new file mode 100644 index 00000000..a0c515cc --- /dev/null +++ b/lib/ferrum/network/request_params.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +module Ferrum + class Network + # + # Common methods used by both {Request} and {InterceptedRequest}. + # + module RequestParams + # + # The URL for the request. + # + # @return [String] + # + def url + @request["url"] + end + + # + # The URL fragment for the request. + # + # @return [String, nil] + # + def url_fragment + @request["urlFragment"] + end + + # + # The request method. + # + # @return [String] + # + def method + @request["method"] + end + + # + # The request headers. + # + # @return [Hash{String => String}] + # + def headers + @request["headers"] + end + + # + # The optional HTTP `POST` form data. + # + # @return [String, nil] + # The HTTP `POST` form data. + # + def post_data + @request["postData"] + end + alias body post_data + end + end +end