Sha256: b5a9e11c993befbbec2ac4ca756840e893222091cf6193092cf78b287b8fa01c
Contents?: true
Size: 1.7 KB
Versions: 2
Compression:
Stored size: 1.7 KB
Contents
=begin This file is part of the Arachni-RPC project and may be subject to redistribution and commercial restrictions. Please see the Arachni-RPC web site for more information on licensing and terms of use. =end module Arachni module RPC # # Represents an RPC message, serves as the basis for {Request} and {Response}. # # @author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com> # class Message # # @param [Hash] opts sets instance attributes # def initialize( opts = {} ) opts.each_pair { |k, v| instance_variable_set( "@#{k}".to_sym, v ) } end # # Merges the attributes of another message with self. # # (The param doesn't *really* have to be a message, any object will do.) # # @param [Message] message # def merge!( message ) message.instance_variables.each do |var| val = message.instance_variable_get( var ) instance_variable_set( var, val ) end end # # Prepares the message for transmission (i.e. converts the message to a Hash). # # Attributes that should not be included can be skipped by implementing # {#transmit?} and returning the appropriate value. # # @return [Hash] # def prepare_for_tx instance_variables.inject({}) do |h, k| h[normalize( k )] = instance_variable_get( k ) if transmit?( k ) h end end # # Decides which attributes should be skipped by {#prepare_for_tx}. # # @param [Symbol] attr attribute symbol (i.e. :@token) # def transmit?( attr ) true end private def normalize( attr ) attr.to_s.gsub( '@', '' ) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
arachni-rpc-0.1.3 | lib/arachni/rpc/message.rb |
arachni-rpc-0.1.2 | lib/arachni/rpc/message.rb |