X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FCWMP%2FRequest.pm;h=0cea935227fb4d15a7ebbf58a1f5fe1956324a1f;hb=df6a32df87becf896cccaae4b24cb88461391ffe;hp=51f70f3ae6416bb711c90b67388722a32020083d;hpb=5ea6e09597af2a09a847b8973e30601811f52725;p=perl-cwmp.git diff --git a/lib/CWMP/Request.pm b/lib/CWMP/Request.pm index 51f70f3..0cea935 100644 --- a/lib/CWMP/Request.pm +++ b/lib/CWMP/Request.pm @@ -31,6 +31,7 @@ our $rules = [ 'ID' => sub { my ($tag_name, $tag_hash, $context, $parent_data) = @_; $state->{ID} = $tag_hash->{_content}; + chomp( $state->{ID} ); }, 'DeviceId' => sub { @@ -103,6 +104,28 @@ push @$rules, $state->{_trigger} = 'GetParameterNamesResponse'; }; +=head2 GetParameterAttributesResponse + +=cut + +push @$rules, + 'ParameterAttributeStruct' => sub { + my ($tag_name, $tag_hash, $context, $parent_data) = @_; + warn dump( $tag_name, $tag_hash, $context ); + + confess "need state" unless ( $state ); # don't remove! + + my $name = _tag($tag_hash, 'Name', '_content'); + + + $state->{ParameterAttribute}->{$name} = { + Notification => _tag($tag_hash, 'Notification', '_content' ), + AccessList => _tag($tag_hash, 'AccessList', 'string' ), + }; + + $state->{_trigger} = 'GetParameterAttributesResponse'; + }; + =head2 Fault =cut @@ -147,7 +170,7 @@ sub parse { rules => $rules, ); - warn "## created $parser\n"; +# warn "## created $parser\n"; $parser->parsestring( $xml ); @@ -157,8 +180,8 @@ sub parse { warn "### call_trigger( $trigger )\n"; $self->call_trigger( $trigger, $state ); } - # XXX don't propagate _trigger (useful?) - delete( $state->{_trigger} ); + # XXX propagate _trigger (useful for symlinks) + return $state; }