package NGCP::Panel::Utils::DeviceBootstrap::Polycom; use strict; use URI::Escape; use XML::Mini::Document;; use Data::Dumper; use Moo; use Types::Standard qw(Str); extends 'NGCP::Panel::Utils::DeviceBootstrap::VendorRPC'; has 'register_subscriber_content' => ( is => 'rw', isa => Str, accessor => '_register_subscriber_content', ); sub rpc_server_params{ my $self = shift; my $cfg = { proto => 'https', host => 'ztpconsole.polycom.com', port => '443', path => '/inboundservlet/GenericServlet', #https://ztpconsole.polycom.com/inboundservlet/GenericServlet }; #$cfg->{headers} = { %{$self->get_basic_authorization($self->params->{credentials})} }; $self->{rpc_server_params} = $cfg; return $self->{rpc_server_params}; } sub register_model{ my($self) = @_; $self->rpc_server_params; $self->redirect_server_call('register_package'); } sub register_package_content { my $self = shift; #.'_'.$self->content_params->{mac} $self->{register_package_content} ||= " default "; return $self->{register_package_content}; } sub register_content { my $self = shift; #.'_'.$self->content_params->{mac} $self->{register_content} ||= " ".$self->content_params->{mac}." ".$self->content_params->{mac}." Polycom Polycom_UCS_Device ".uri_escape($self->params->{redirect_params}->{profile})." default "; return $self->{register_content}; } sub unregister_content { my $self = shift; #.'_'.$self->content_params->{mac} $self->{unregister_content} ||= " ".$self->content_params->{mac}." ".$self->content_params->{mac}." Polycom Polycom_UCS_Device "; return $self->{unregister_content}; } around 'parse_rpc_response_page' => sub { my($self, $page) = @_; my $xmlDoc = XML::Mini::Document->new(); $xmlDoc->parse($page); my $ref = $xmlDoc->toHash(); return $ref; }; around 'parse_rpc_response' => sub { my($self, $rpc_response) = @_; my $c = $self->params->{c}; my $ret = 0; my ($code,$message) = @{$rpc_response->{response}->{status}}{qw/ErrorCode ErrorMessage/}; if(0 != $code){ $ret = $message; } #todo: configure log4perl (or override) to print out caller info and string $c->log->debug("NGCP::Panel::Utils::DeviceBootstrap::Polycom::parse_rpc_response: ret=$ret; code=$code; message=$message;"); return $ret; }; 1; =head1 NAME NGCP::Panel::Utils::DeviceBootstrap =head1 DESCRIPTION Make API requests to configure remote redirect servers for requested MAC with autorpov uri. =head1 METHODS =head2 bootstrap Dispatch to proper vendor API call. =head1 AUTHOR Irina Peshinskaya C<< >> =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut # vim: set tabstop=4 expandtab: