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: