X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FFreeside.pm;fp=FS%2FFS%2FClientAPI%2FFreeside.pm;h=4e25f02e0691ff135525e7db29fa1d782f5ac326;hb=fad183c519f7d8b7c905708efc984c571b2c2990;hp=0000000000000000000000000000000000000000;hpb=f4ee374e9bbb313234278c7231c046f8e07086f0;p=freeside.git diff --git a/FS/FS/ClientAPI/Freeside.pm b/FS/FS/ClientAPI/Freeside.pm new file mode 100644 index 000000000..4e25f02e0 --- /dev/null +++ b/FS/FS/ClientAPI/Freeside.pm @@ -0,0 +1,59 @@ +package FS::ClientAPI::Freeside; + +use strict; +#use vars qw($DEBUG $me); +use FS::Record qw(qsearchs); +use FS::Conf; +use FS::svc_external; +use FS::webservice_log; + +#$DEBUG = 0; +#$me = '[FS::ClientAPI::PrepaidPhone]'; + +# inputs: +# support-key +# method +# quantity (i.e. pages) - defaults to 1 +# +# returns: +# error (empty, or error message) + +sub freesideinc_service { + my $packet = shift; + + my $svcpart = FS::Conf->new->config('freesideinc-webservice-svcpart') + or return { 'error' => 'guru meditation #pow' }; + die 'no' unless $svcpart =~ /^\d+$/; + + ( my $support_key = $packet->{'support-key'} ) =~ /^\s*([^:]+):(.+)\s*$/ + or return { 'error' => 'bad support-key' }; + my($username, $_password) = ($1,$2); + + my $svc_external = qsearchs({ + 'table' => 'svc_external', + 'addl_from' => 'LEFT JOIN cust_svc USING ( svcnum )', + 'hashref' => { 'username' => $username, + '_password' => $_password, + }, + 'extra_sql' => " AND svcpart = $svcpart", + }) + or return { 'error' => 'bad support-key' }; + + #XXX check if some customers can use some API calls, rate-limiting, etc. + # but for now, everybody can use everything + + #record it happened + my $webservice_log = new FS::webservice_log { + 'custnum' => $svc_external->cust_svc->cust_pkg->custnum, + 'svcnum' => $svc_external->svcnum, + 'method' => $packet->{'method'}, + 'quantity' => $packet->{'quantity'} || 1, + }; + my $error = $webservice_log->insert; + return { 'error' => $error } if $error; + + return { 'error' => '' }; + +} + +1;