/[cwmp]/google/trunk/lib/CWMP/Methods.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /google/trunk/lib/CWMP/Methods.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 173 - (hide annotations)
Sun Oct 28 16:39:58 2007 UTC (16 years, 8 months ago) by dpavlin
File size: 3072 byte(s)
great API breaking update to version [0.07]

CWMP::Response (which somewhat made sense since it was response from server)
is now called CWMP::Methods (to more closely match protocol terminology)
1 dpavlin 173 package CWMP::Methods;
2 dpavlin 31
3     use strict;
4     use warnings;
5    
6 dpavlin 106
7 dpavlin 32 use base qw/Class::Accessor/;
8 dpavlin 106 __PACKAGE__->mk_accessors( qw/debug/ );
9 dpavlin 31
10 dpavlin 38 use XML::Generator;
11     use Carp qw/confess/;
12     use Data::Dump qw/dump/;
13    
14 dpavlin 32 =head1 NAME
15 dpavlin 31
16 dpavlin 173 CWMP::Methods - generate SOAP meesages for CPE
17 dpavlin 31
18 dpavlin 32 =head2 METHODS
19    
20     =head2 new
21    
22 dpavlin 173 my $response = CWMP::Methods->new({ debug => 1 });
23 dpavlin 32
24     =cut
25    
26     sub new {
27     my $class = shift;
28     my $self = $class->SUPER::new( @_ );
29    
30 dpavlin 71 warn "created XML::Generator object\n" if $self->debug;
31 dpavlin 32
32     return $self;
33     }
34    
35    
36 dpavlin 31 my $cwmp = [ cwmp => 'urn:dslforum-org:cwmp-1-0' ];
37 dpavlin 172 my $soap = [ soap => 'http://schemas.xmlsoap.org/soap/envelope/' ];
38     my $xsd = [ xsd => 'http://www.w3.org/2001/XMLSchema-instance' ];
39 dpavlin 31
40 dpavlin 71 =head2 InformResponse
41 dpavlin 31
42 dpavlin 71 $response->InformResponse( $state );
43 dpavlin 32
44     =cut
45    
46 dpavlin 71 sub InformResponse {
47 dpavlin 46 my ( $self, $state ) = @_;
48     $self->xml( $state, sub {
49     my ( $X, $state ) = @_;
50     $X->InformResponse( $cwmp,
51     $X->MaxEnvelopes( $cwmp, 1 )
52     );
53     });
54     }
55    
56     =head2 GetRPCMethods
57    
58     $response->GetRPCMethods( $state );
59    
60     =cut
61    
62     sub GetRPCMethods {
63     my ( $self, $state ) = @_;
64     $self->xml( $state, sub {
65     my ( $X, $state ) = @_;
66     $X->GetRPCMethods();
67     });
68     };
69    
70 dpavlin 166 =head2 Reboot
71 dpavlin 53
72     $response->Reboot( $state );
73    
74     =cut
75    
76     sub Reboot {
77     my ( $self, $state ) = @_;
78     $self->xml( $state, sub {
79     my ( $X, $state ) = @_;
80     $X->Reboot();
81     });
82     }
83    
84 dpavlin 166 =head2 GetParameterNames
85 dpavlin 59
86 dpavlin 64 $response->GetParameterNames( $state, $ParameterPath, $NextLevel );
87 dpavlin 59
88     =cut
89    
90     sub GetParameterNames {
91 dpavlin 64 my ( $self, $state, $ParameterPath, $NextLevel ) = @_;
92     $ParameterPath ||= ''; # all
93     $NextLevel ||= 0; # all
94     warn "# GetParameterNames( '$ParameterPath', $NextLevel )\n" if $self->debug;
95 dpavlin 59 $self->xml( $state, sub {
96     my ( $X, $state ) = @_;
97 dpavlin 64
98 dpavlin 59 $X->GetParameterNames( $cwmp,
99 dpavlin 64 $X->ParameterPath( $cwmp, $ParameterPath ),
100     $X->NextLevel( $cwmp, $NextLevel ),
101 dpavlin 59 );
102     });
103     }
104 dpavlin 61
105 dpavlin 166 =head2 GetParameterValues
106 oleide 141
107 dpavlin 172 $response->GetParameterValues( $state, $ParameterNames );
108 oleide 141
109     =cut
110    
111     sub GetParameterValues {
112 dpavlin 172 my $self = shift;
113     my $state = shift;
114     my @ParameterNames = @_;
115     confess "need ParameterNames" unless @ParameterNames;
116     warn "# GetParameterValues", dump( @ParameterNames ), "\n" if $self->debug;
117    
118 oleide 141 $self->xml( $state, sub {
119     my ( $X, $state ) = @_;
120    
121     $X->GetParameterValues( $cwmp,
122 dpavlin 172 $X->ParameterNames( $cwmp,
123     map {
124     $X->string( $xsd, $_ )
125     } @ParameterNames
126     )
127 oleide 141 );
128     });
129     }
130    
131 dpavlin 48 =head2 xml
132    
133     Used to implement methods which modify just body of soap message.
134     For examples, see source of this module.
135    
136     =cut
137    
138 dpavlin 46 sub xml {
139 dpavlin 32 my $self = shift;
140    
141 dpavlin 46 my ( $state, $closure ) = @_;
142 dpavlin 38
143 dpavlin 46 confess "no state?" unless ($state);
144     confess "no body closure" unless ( $closure );
145    
146 dpavlin 38 confess "no ID in state ", dump( $state ) unless ( $state->{ID} );
147    
148 dpavlin 53 #warn "state used to generate xml = ", dump( $state ) if $self->debug;
149 dpavlin 50
150 dpavlin 32 my $X = XML::Generator->new(':pretty');
151    
152     return $X->Envelope( $soap, { 'soap:encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/" },
153 dpavlin 50 $X->Header( $soap,
154 dpavlin 38 $X->ID( $cwmp, { mustUnderstand => 1 }, $state->{ID} ),
155 dpavlin 50 $X->NoMoreRequests( $cwmp, $state->{NoMoreRequests} || 0 ),
156 dpavlin 32 ),
157 dpavlin 46 $X->Body( $soap, $closure->( $X, $state ) ),
158 dpavlin 32 );
159     }
160    
161     1;

  ViewVC Help
Powered by ViewVC 1.1.26