5 use Date::Format 'time2str';
6 use Date::Parse 'str2time';
9 use Net::HTTPS::Any qw(https_post https_get);
12 use FS::Record qw(qsearchs dbh);
13 use FS::UID qw(adminsuidsetup);
17 my $host = "cdr.teleapi.net";
19 my @now = localtime();
20 my $now = timelocal($now[0],$now[1],$now[2],$now[3],$now[4],$now[5]); #most recent midnight
24 freeside-cdr-telapi-import -t type -p token -s startdate [-e enddate] freesideuser
26 Downloads any existing CDR voip files or CDR SMS files (type) from the start date untill the enddate and
27 imports those records.";
30 my ($type,$token,$startdate,$enddate);
34 "startdate=s" => \$startdate,
35 "enddate=s" => \$enddate,
38 $startdate = str2time($startdate) or die "can't parse start date $startdate\n";
39 $startdate = time2str('%m-%d-%Y', $startdate);
40 $enddate = str2time($enddate) or die "can't parse start date $enddate\n";
41 $enddate = time2str('%m-%d-%Y', $enddate);
43 my $fsuser = $ARGV[-1];
45 die usage() unless $fsuser;
47 adminsuidsetup($fsuser);
49 my ( $page, $response, %reply_headers )= https_get(
52 'path' => '/'.$type.'/'.$startdate.'/'.$enddate.'?token='.$token,
55 die "Bad response from telapi server: $response"
56 unless $response =~ /^200/;
58 my $cdrbatch = "Telapi-import-" . $type . "-" . time2str('%Y/%m/%d-%T',$now);
60 my $dir = $FS::UID::cache_dir. "/cache.". $FS::UID::datasrc;
62 my $cfh = new File::Temp( TEMPLATE => 'telapi.XXXXXXXX',
66 or die "can't open temporary file to save data: $!\n";
68 #print returned data to file handle for temp file.
73 warn "Importing batch $cdrbatch\n";
74 my $error = FS::cdr::batch_import({
75 'batch_namevalue' => $cdrbatch,
76 'file' => $cfh->filename,
77 'format' => 'telapi_'.$type
80 warn "Error importing CDR's\n".$error if $error;