X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FAgent.pm;h=daede59a8faa6281fd20e18c711dc6ac36988926;hb=673b9a458d9138523026963df6fa3b4683e09bae;hp=f534a86858298b33044d08a06fdc3932a24e5476;hpb=f7fd2a3e34da751cbc02bbf215e99c6dc89adc15;p=freeside.git diff --git a/FS/FS/ClientAPI/Agent.pm b/FS/FS/ClientAPI/Agent.pm index f534a8685..daede59a8 100644 --- a/FS/FS/ClientAPI/Agent.pm +++ b/FS/FS/ClientAPI/Agent.pm @@ -4,24 +4,18 @@ package FS::ClientAPI::Agent; use strict; use vars qw($cache); +use subs qw(_cache); use Digest::MD5 qw(md5_hex); -use Cache::SharedMemoryCache; #store in db? use FS::Record qw(qsearchs); # qsearch dbdef dbh); +use FS::ClientAPI_SessionCache; use FS::agent; use FS::cust_main qw(smart_search); -use FS::ClientAPI; -FS::ClientAPI->register_handlers( - 'Agent/agent_login' => \&agent_login, - 'Agent/agent_logout' => \&agent_logout, - 'Agent/agent_info' => \&agent_info, - 'Agent/agent_list_customers' => \&agent_list_customers, -); - -#store in db? -my $cache = new Cache::SharedMemoryCache( { - 'namespace' => 'FS::ClientAPI::Agent', -} ); +sub _cache { + $cache ||= new FS::ClientAPI_SessionCache( { + 'namespace' => 'FS::ClientAPI::Agent', + } ); +} sub agent_login { my $p = shift; @@ -45,9 +39,9 @@ sub agent_login { my $session_id; do { $session_id = md5_hex(md5_hex(time(). {}. rand(). $$)) - } until ( ! defined $cache->get($session_id) ); #just in case + } until ( ! defined _cache->get($session_id) ); #just in case - $cache->set( $session_id, $session, '1 hour' ); + _cache->set( $session_id, $session, '1 hour' ); { 'error' => '', 'session_id' => $session_id, @@ -57,7 +51,7 @@ sub agent_login { sub agent_logout { my $p = shift; if ( $p->{'session_id'} ) { - $cache->remove($p->{'session_id'}); + _cache->remove($p->{'session_id'}); return { 'error' => '' }; } else { return { 'error' => "Can't resume session" }; #better error message @@ -67,7 +61,7 @@ sub agent_logout { sub agent_info { my $p = shift; - my $session = $cache->get($p->{'session_id'}) + my $session = _cache->get($p->{'session_id'}) or return { 'error' => "Can't resume session" }; #better error message #my %return; @@ -92,7 +86,7 @@ sub agent_info { sub agent_list_customers { my $p = shift; - my $session = $cache->get($p->{'session_id'}) + my $session = _cache->get($p->{'session_id'}) or return { 'error' => "Can't resume session" }; #better error message #my %return; @@ -128,3 +122,4 @@ sub agent_list_customers { } +1;