module Arachni::Element::Capabilities::Submittable

@author Tasos “Zapotek” Laskos <tasos.laskos@arachni-scanner.com>

Public Class Methods

new( options ) click to toggle source
Calls superclass method
# File lib/arachni/element/capabilities/submittable.rb, line 15
def initialize( options )
    super
    self.method ||= options[:method] || :get
    self.action ||= options[:action] || self.url
end

Public Instance Methods

action() click to toggle source

@note Ex. ‘href’ for links, ‘action’ for forms, etc.

@return [String]

URI to which the element points and should be audited against.
# File lib/arachni/element/capabilities/submittable.rb, line 51
def action
    @action.freeze
end
action=( url ) click to toggle source

@see action

# File lib/arachni/element/capabilities/submittable.rb, line 56
def action=( url )
    @action = self.url ? to_absolute( url, self.url ) : normalize_url( url )
end
dup() click to toggle source
Calls superclass method
# File lib/arachni/element/capabilities/submittable.rb, line 114
def dup
    new = super
    new.method = self.method
    new.action = self.action
    new
end
http() click to toggle source

@return [Arachni::HTTP]

# File lib/arachni/element/capabilities/submittable.rb, line 102
def http
    HTTP::Client
end
http_method( *args )
Alias for: method
http_method=( method )
Alias for: method=
http_request( opts, &block ) click to toggle source

Must be implemented by the including class and perform the appropriate HTTP request (get/post/whatever) for the current element.

Invoked by {#submit} to submit the object.

@param [Hash] opts @param [Block] block

Callback to be passed the HTTP response.

@return [HTTP::Request]

@see submit @abstract

# File lib/arachni/element/capabilities/submittable.rb, line 97
def http_request( opts, &block )
    fail NotImplementedError
end
id() click to toggle source

@note Differences in input values will be taken into consideration.

@return [String]

String uniquely identifying self.
# File lib/arachni/element/capabilities/submittable.rb, line 110
def id
    "#{type}:#{method}:#{action}:#{inputtable_id}"
end
method( *args ) click to toggle source

Should represent a method in {Arachni::Check::HTTP}.

Ex. get, post, cookie, header

@see Arachni::Check::HTTP

@return [Symbol]

HTTP request method for the element.
Calls superclass method
# File lib/arachni/element/capabilities/submittable.rb, line 35
def method( *args )
    return super( *args ) if args.any?
    @method.freeze
end
Also aliased as: http_method
method=( method ) click to toggle source

@see method

# File lib/arachni/element/capabilities/submittable.rb, line 42
def method=( method )
    @method = method.to_s.downcase.to_sym
end
Also aliased as: http_method=
platforms() click to toggle source

@return [Platform]

Applicable platforms for the {#action} resource.
# File lib/arachni/element/capabilities/submittable.rb, line 23
def platforms
    Platform::Manager[@action]
end
submit( options = {}, &block ) click to toggle source

@note Sets ‘self` as the {HTTP::Request#performer}.

Submits ‘self` to the {#action} URL with the appropriate {Capabilities::Inputtable#inputs parameters}.

@param [Hash] options @param [Block] block

Callback to be passed the {HTTP::Response}.

@see http_request

# File lib/arachni/element/capabilities/submittable.rb, line 70
def submit( options = {}, &block )
    options                   = options.dup
    options[:parameters]      = @inputs.dup
    options[:follow_location] = true if !options.include?( :follow_location )

    @auditor ||= options.delete( :auditor )

    options[:performer] ||= self

    options[:raw_parameters] ||= raw_inputs

    http_request( options, &block )
end
to_h() click to toggle source
Calls superclass method
# File lib/arachni/element/capabilities/submittable.rb, line 121
def to_h
    (defined?( super ) ? super : {}).merge(
        url:    url,
        action: action,
        method: method
    )
end