Class: RightAws::RightAWSParser
Overview
:nodoc:
Direct Known Subclasses
AcfInterface::AcfDistributionListParser, AcfInterface::AcfOriginAccesIdentitiesListParser, AcwInterface::GetMetricStatisticsParser, AcwInterface::ListMetricsParser, AsInterface::DescribeAutoScalingGroupsParser, AsInterface::DescribeLaunchConfigurationsParser, AsInterface::DescribeScalingActivitiesParser, AsInterface::DescribeTriggersParser, Ec2::QEc2AllocateAddressParser, Ec2::QEc2AttachAndDetachVolumeParser, Ec2::QEc2AttachVpnGatewayParser, Ec2::QEc2BundleInstanceParser, Ec2::QEc2CancelSpotInstanceParser, Ec2::QEc2ConfirmProductInstanceParser, Ec2::QEc2CreateKeyPairParser, Ec2::QEc2CreateVolumeParser, Ec2::QEc2DescribeAddressesParser, Ec2::QEc2DescribeAvailabilityZonesParser, Ec2::QEc2DescribeBundleTasksParser, Ec2::QEc2DescribeCustomerGatewaysParser, Ec2::QEc2DescribeDhcpOptionsParser, Ec2::QEc2DescribeImageAttributeParser, Ec2::QEc2DescribeImagesParser, Ec2::QEc2DescribeInstanceAttributeParser, Ec2::QEc2DescribeInstancesParser, Ec2::QEc2DescribeKeyPairParser, Ec2::QEc2DescribeRegionsParser, Ec2::QEc2DescribeReservedInstancesOfferingsParser, Ec2::QEc2DescribeReservedInstancesParser, Ec2::QEc2DescribeSecurityGroupsParser, Ec2::QEc2DescribeSnapshotAttributeParser, Ec2::QEc2DescribeSnapshotsParser, Ec2::QEc2DescribeSpotDatafeedSubscriptionParser, Ec2::QEc2DescribeSpotInstanceParser, Ec2::QEc2DescribeSpotPriceHistoryParser, Ec2::QEc2DescribeSubnetsParser, Ec2::QEc2DescribeVolumesParser, Ec2::QEc2DescribeVpcsParser, Ec2::QEc2DescribeVpnConnectionsParser, Ec2::QEc2DescribeVpnGatewaysParser, Ec2::QEc2GetConsoleOutputParser, Ec2::QEc2GetPasswordDataParser, Ec2::QEc2MonitorInstancesParser, Ec2::QEc2PurchaseReservedInstancesOfferingParser, Ec2::QEc2RegisterImageParser, Ec2::QEc2TerminateInstancesParser, ElbInterface::AvailabilityZonesForLoadBalancerParser, ElbInterface::CreateLoadBalancerParser, ElbInterface::DeleteLoadBalancerParser, ElbInterface::DescribeInstanceHealthParser, ElbInterface::DescribeLoadBalancersParser, ElbInterface::HealthCheckParser, ElbInterface::InstancesWithLoadBalancerParser, RightAws::RdsInterface::DescribeDbInstancesParser, RightAws::RdsInterface::DescribeDbParameterGroupsParser, RightAws::RdsInterface::DescribeDbParametersParser, RightAws::RdsInterface::DescribeDbSecurityGroupsParser, RightAws::RdsInterface::DescribeDbSnapshotsParser, RightAws::RdsInterface::DescribeEventsParser, RightBoolResponseParser, RightErrorResponseParser, RightHttp2xxParser, S3Interface::S3AclParser, S3Interface::S3BucketLocationParser, S3Interface::S3CopyParser, S3Interface::S3ImprovedListBucketParser, S3Interface::S3ListAllMyBucketsParser, S3Interface::S3ListBucketParser, S3Interface::S3LoggingParser, SdbInterface::QSdbGetAttributesParser, SdbInterface::QSdbListDomainParser, SdbInterface::QSdbQueryParser, SdbInterface::QSdbQueryWithAttributesParser, SdbInterface::QSdbSelectParser, SdbInterface::QSdbSimpleParser, SqsGen2Interface::SqsCreateQueueParser, SqsGen2Interface::SqsGetQueueAttributesParser, SqsGen2Interface::SqsListQueuesParser, SqsGen2Interface::SqsReceiveMessageParser, SqsGen2Interface::SqsSendMessagesParser, SqsGen2Interface::SqsStatusParser, SqsInterface::SqsCreateQueueParser, SqsInterface::SqsGetQueueAttributesParser, SqsInterface::SqsGetVisibilityTimeoutParser, SqsInterface::SqsListGrantsParser, SqsInterface::SqsListQueuesParser, SqsInterface::SqsReceiveMessagesParser, SqsInterface::SqsSendMessagesParser, SqsInterface::SqsStatusParser
Constant Summary
- DEFAULT_XML_LIBRARY =
default parsing library
'rexml'- @@supported_xml_libs =
a list of supported parsers
[DEFAULT_XML_LIBRARY, 'libxml']
- @@xml_lib =
xml library name: 'rexml' | 'libxml'
DEFAULT_XML_LIBRARY
Instance Attribute Summary (collapse)
-
- (Object) full_tag_name
readonly
Returns the value of attribute full_tag_name.
-
- (Object) result
Returns the value of attribute result.
-
- (Object) tag
readonly
Returns the value of attribute tag.
-
- (Object) xml_lib
Returns the value of attribute xml_lib.
-
- (Object) xmlpath
readonly
Returns the value of attribute xmlpath.
Class Method Summary (collapse)
Instance Method Summary (collapse)
-
- (RightAWSParser) initialize(params = {})
constructor
A new instance of RightAWSParser.
-
- (Object) method_missing(method, *params)
Parser must have a lots of methods (see /usr/lib/ruby/1.8/rexml/parsers/streamparser.rb) We dont need most of them in RightAWSParser and method_missing helps us to skip their definition.
-
- (Object) parse(xml_text, params = {})
Parser method.
-
- (Object) reset
the functions to be overriden by children (if nessesery).
- - (Object) tag_end(name)
- - (Object) tag_start(name, attributes)
- - (Object) tagend(name)
- - (Object) tagstart(name, attributes)
- - (Object) tagtext(text)
- - (Object) text(text)
Constructor Details
- (RightAWSParser) initialize(params = {})
A new instance of RightAWSParser
827 828 829 830 831 832 833 834 835 836 |
# File 'lib/awsbase/right_awsbase.rb', line 827 def initialize(params={}) @xmlpath = '' @full_tag_name = '' @result = false @text = '' @tag = '' @xml_lib = params[:xml_lib] || @@xml_lib @logger = params[:logger] reset end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(method, *params)
Parser must have a lots of methods (see /usr/lib/ruby/1.8/rexml/parsers/streamparser.rb) We dont need most of them in RightAWSParser and method_missing helps us to skip their definition
908 909 910 911 912 913 914 915 |
# File 'lib/awsbase/right_awsbase.rb', line 908 def method_missing(method, *params) # if the method is one of known - just skip it ... return if [:comment, :attlistdecl, :notationdecl, :elementdecl, :entitydecl, :cdata, :xmldecl, :attlistdecl, :instruction, :doctype].include?(method) # ... else - call super to raise an exception super(method, params) end |
Instance Attribute Details
- (Object) full_tag_name (readonly)
Returns the value of attribute full_tag_name
824 825 826 |
# File 'lib/awsbase/right_awsbase.rb', line 824 def full_tag_name @full_tag_name end |
- (Object) result
Returns the value of attribute result
821 822 823 |
# File 'lib/awsbase/right_awsbase.rb', line 821 def result @result end |
- (Object) tag (readonly)
Returns the value of attribute tag
825 826 827 |
# File 'lib/awsbase/right_awsbase.rb', line 825 def tag @tag end |
- (Object) xml_lib
Returns the value of attribute xml_lib
823 824 825 |
# File 'lib/awsbase/right_awsbase.rb', line 823 def xml_lib @xml_lib end |
- (Object) xmlpath (readonly)
Returns the value of attribute xmlpath
822 823 824 |
# File 'lib/awsbase/right_awsbase.rb', line 822 def xmlpath @xmlpath end |
Class Method Details
+ (Object) xml_lib
814 815 816 |
# File 'lib/awsbase/right_awsbase.rb', line 814 def self.xml_lib @@xml_lib end |
+ (Object) xml_lib=(new_lib_name)
817 818 819 |
# File 'lib/awsbase/right_awsbase.rb', line 817 def self.xml_lib=(new_lib_name) @@xml_lib = new_lib_name end |
Instance Method Details
- (Object) parse(xml_text, params = {})
Parser method. Params:
xml_text - xml message text(String) or Net:HTTPxxx instance (response)
params[:xml_lib] - library name: 'rexml' | 'libxml'
857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 |
# File 'lib/awsbase/right_awsbase.rb', line 857 def parse(xml_text, params={}) # Get response body xml_text = xml_text.body unless xml_text.is_a?(String) @xml_lib = params[:xml_lib] || @xml_lib # check that we had no problems with this library otherwise use default @xml_lib = DEFAULT_XML_LIBRARY unless @@supported_xml_libs.include?(@xml_lib) # load xml library if @xml_lib=='libxml' && !defined?(XML::SaxParser) begin require 'xml/libxml' # is it new ? - Setup SaxParserCallback if XML::Parser::VERSION >= '0.5.1.0' RightSaxParserCallback.include_callback end rescue LoadError => e @@supported_xml_libs.delete(@xml_lib) @xml_lib = DEFAULT_XML_LIBRARY if @logger @logger.error e.inspect @logger.error e.backtrace @logger.info "Can not load 'libxml' library. '#{DEFAULT_XML_LIBRARY}' is used for parsing." end end end # Parse the xml text case @xml_lib when 'libxml' if XML::Parser::VERSION >= '0.9.9' # avoid warning on every usage xml = XML::SaxParser.string(xml_text) else xml = XML::SaxParser.new xml.string = xml_text end # check libxml-ruby version if XML::Parser::VERSION >= '0.5.1.0' xml.callbacks = RightSaxParserCallback.new(self) else xml.on_start_element{|name, attr_hash| self.tag_start(name, attr_hash)} xml.on_characters{ |text| self.text(text)} xml.on_end_element{ |name| self.tag_end(name)} end xml.parse else REXML::Document.parse_stream(xml_text, self) end end |
- (Object) reset
the functions to be overriden by children (if nessesery)
917 |
# File 'lib/awsbase/right_awsbase.rb', line 917 def reset ; end |
- (Object) tag_end(name)
844 845 846 847 848 |
# File 'lib/awsbase/right_awsbase.rb', line 844 def tag_end(name) @xmlpath = @full_tag_name[/^(.*?)\/?#{name}$/] && $1 tagend(name) @full_tag_name = @xmlpath end |
- (Object) tag_start(name, attributes)
837 838 839 840 841 842 843 |
# File 'lib/awsbase/right_awsbase.rb', line 837 def tag_start(name, attributes) @text = '' @tag = name @full_tag_name += @full_tag_name.empty? ? name : "/#{name}" (name, attributes) @xmlpath = @full_tag_name end |
- (Object) tagend(name)
919 |
# File 'lib/awsbase/right_awsbase.rb', line 919 def tagend(name) ; end |
- (Object) tagstart(name, attributes)
918 |
# File 'lib/awsbase/right_awsbase.rb', line 918 def (name, attributes); end |
- (Object) tagtext(text)
920 |
# File 'lib/awsbase/right_awsbase.rb', line 920 def tagtext(text) ; end |
- (Object) text(text)
849 850 851 852 |
# File 'lib/awsbase/right_awsbase.rb', line 849 def text(text) @text += text tagtext(text) end |