package NGCP::Panel::Utils::DeviceBootstrap::Yealink;
use strict;
use Moo;
use Types::Standard qw(Str);
use Digest::MD5 qw/md5_hex/;
extends 'NGCP::Panel::Utils::DeviceBootstrap::VendorRPC';
has 'register_model_content' => (
is => 'rw',
isa => Str,
accessor => '_register_model_content',
);
sub rpc_server_params{
my $self = shift;
my $cfg = {
proto => 'https',
host => 'rps.yealink.com',
port => '443',
path => '/xmlrpc',
};
$cfg->{headers} = { %{$self->get_basic_authorization($self->params->{credentials})} };
$self->{rpc_server_params} = $cfg;
return $self->{rpc_server_params};
}
sub register_content {
my $self = shift;
$self->{register_content} ||= "
redirect.registerDevice
".$self->content_params->{mac}."
content_params->{server_name}."]]>
";
return $self->{register_content};
}
sub unregister_content {
my $self = shift;
$self->{unregister_content} ||= "
redirect.deRegisterDevice
".($self->content_params->{mac_old} // '')."
";
return $self->{unregister_content};
}
sub register_model_content {
my $self = shift;
$self->{register_model_content} ||= "
redirect.addServer
content_params->{server_name}."]]>
content_params->{uri}."]]>
";
return $self->{register_model_content};
}
around 'process_bootstrap_uri' => sub {
my($orig_method, $self, $uri) = @_;
$uri = $self->$orig_method($uri);
$self->content_params->{uri} = $uri;
$self->bootstrap_uri_server_name($uri);
return $self->content_params->{uri};
};
sub bootstrap_uri_server_name{
my($self,$uri) = @_;
$uri ||= $self->content_params->{uri};
#http://stackoverflow.com/questions/4826403/hash-algorithm-with-alphanumeric-output-of-20-characters-max
$self->content_params->{server_name} ||= substr(md5_hex($uri),0,20);
return $self->content_params->{server_name};
}
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: