You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Controller/API/VoicemailGreetingsItem.pm

63 lines
2.3 KiB

package NGCP::Panel::Controller::API::VoicemailGreetingsItem;
use NGCP::Panel::Utils::Generic qw(:all);
use Sipwise::Base;
use NGCP::Panel::Utils::Subscriber;
use NGCP::Panel::Utils::Sounds;
use parent qw/NGCP::Panel::Role::EntitiesItem NGCP::Panel::Role::API::VoicemailGreetings/;
__PACKAGE__->set_config({
PUT => {
'ContentType' => ['multipart/form-data'],#,
'Uploads' => {'greetingfile' => ['audio/x-wav', 'application/octet-stream']},
},
GET => {
#'application/json' is first one and thus is default, if no accept header was received.
'ReturnContentType' => ['application/json', 'audio/x-wav', 'audio/mpeg', 'audio/ogg'],#,
},
allowed_roles => [qw/admin reseller ccareadmin ccare subscriberadmin subscriber/],
});
sub allowed_methods{
return [qw/GET OPTIONS HEAD PUT DELETE/];
}
sub update_item_model{
my($self, $c, $item, $old_resource, $resource, $form, $process_extras) = @_;
my $dir = NGCP::Panel::Utils::Subscriber::get_subscriber_voicemail_directory(c => $c, subscriber => $c->stash->{checked}->{subscriber}, dir => $resource->{dir} );
$item->update({
'recording' => ${$process_extras->{binary_ref}},
'dir' => $dir,
'mailboxuser' => $c->stash->{checked}->{subscriber}->uuid,
'origtime' => time(),#just to make inflate possible. Really we don't need this value
});
#we need to return subscriber id, so item can be used for further update
#We can't just add field to the item object, so we need to reselect it
$item = $self->item_by_id($c, $item->id);
return $item;
}
sub get_item_binary_data{
my($self, $c, $id, $item, $return_type) = @_;
#caller waits for: $data_ref,$mime_type,$filename
#while we will not strictly check Accepted header, if item can return only one type of the binary data
my $extension = mime_type_to_extension($return_type);
my $data_ref;
if ($extension ne 'wav') {
$data_ref = NGCP::Panel::Utils::Sounds::transcode_data(\$item->recording, 'WAV', uc($extension));
} else {
$data_ref = \$item->recording;
}
my $filename = 'voicemail_'. NGCP::Panel::Utils::Subscriber::get_subscriber_voicemail_type( dir => $item->dir ).'_'.$item->get_column('subscriber_id').'.'.$extension;
return $data_ref, $return_type, $filename;
}
1;
# vim: set tabstop=4 expandtab: