2 use NCIP::Configuration;
10 our $VERSION = '0.01';
11 our $nsURI = 'http://www.niso.org/2008/ncip';
20 my $nicp = NCIP->new($config_dir);
28 my $class = ref $proto || $proto;
29 my $config_dir = shift;
31 my $config = NCIP::Configuration->new($config_dir);
32 $self->{config} = $config;
33 return bless $self, $class;
37 =head2 process_request()
39 my $response = $ncip->process_request($xml);
47 my $request_type = $self->handle_initiation($xml);
48 unless ($request_type) {
50 # We have invalid xml, or we can't figure out what kind of request this is
56 my $handler = NCIP::Handler->new($request_type);
57 return $handler->handle($xml);
60 =head2 handle_initiation
64 sub handle_initiation {
69 $dom = XML::LibXML->load_xml( string => $xml );
72 warn "Invalid xml, caught error: $_";
76 # should check validity with validate at this point
77 if ( $self->validate($dom) ) {
78 my $request_type = $self->parse_request($dom);
79 # do whatever we should do to initiate, then hand back request_type
86 # not valid throw error
97 # this should perhaps be in it's own module
104 warn "Bad xml, caught error: $_";
108 # we could validate against the dtd here, might be good?
109 # my $dtd = XML::LibXML::Dtd->parse_string($dtd_str);
110 # $dom->validate($dtd);
111 # perhaps we could check the ncip version and validate that too
118 my $nodes = $dom->getElementsByTagNameNS( $nsURI, 'NCIPMessage' );
120 my @childnodes = $nodes->[0]->childNodes();
121 if ( $childnodes[1] ) {
122 return $childnodes[1]->localname();