HTTP-QuickBase
view release on metacpan or search on metacpan
QuickBase.pm view on Meta::CPAN
}
$self = bless {
'URLprefix' => $prefix || "https://www.quickbase.com/db" ,
'ticket' => undef,
'apptoken' => "",
'error' => undef,
'errortext' => undef,
'username' => undef,
'password' => undef,
'credentials' => undef,
'proxy' => undef,
'realmhost' => undef
}, $class;
}
sub authenticate ($$)
{
my($self, $username, $password) = @_;
$self->{'username'} = $username;
$self->{'password'} = $password;
$username = $self->xml_escape($username);
$password = $self->xml_escape($password);
$self->{'credentials'} = "<username>$username<\/username><password>$password<\/password>";
$self->{'ticket'}="";
return "";
}
sub setAppToken($)
{
my($self,$apptoken) = @_;
$self->{'apptoken'} = $apptoken;
}
sub getTicket()
{
my($self) = @_;
#First we have to get the authorization ticket
#We do this by posting the QuickBase username and password to QuickBase
#This is where we post the QuickBase username and password
my $res = $self->PostAPIURL ("main", "API_Authenticate",
"<qdbapi>".
$self->{'credentials'}.
"</qdbapi>");
if ($res->content =~ /<errcode>(.*?)<\/errcode>.*?<errtext>(.*?)<\/errtext>/s)
{
$self->{'error'} = $1;
$self->{'errortext'} = $2;
}
if ($res->content =~ /<errdetail>(.*?)<\/errdetail>/s)
{
$self->{'errortext'} = $1;
}
if ($self->{'error'} eq '0')
{
$res->content =~ /<ticket>(.*?)<\/ticket>/s;
$self->{'ticket'} = $1;
$self->{'credentials'} = "<ticket>$self->{'ticket'}<\/ticket>";
}
else
{
return "";
}
return $self->{'ticket'};
}
sub URLprefix()
{
QuickBase.pm view on Meta::CPAN
$req->uri($self->URLprefix()."/$QuickBaseDBid?realmhost=$self->{'realmhost'}");
}
else
{
$req->uri($self->URLprefix()."/$QuickBaseDBid");
}
$req->content_type('text/xml');
$req->header('QUICKBASE-ACTION' => "$action");
if ($self->{'apptoken'} ne "" && $self->{'credentials'} !~ /<apptoken>/)
{
$self->{'credentials'} .= "<apptoken>".$self->{'apptoken'}."</apptoken>";
}
if($content =~ /^<qdbapi>/)
{
$content =~s/^<qdbapi>/<qdbapi>$self->{'credentials'}/;
}
elsif($content eq "" || !defined($content))
{
$content ="<qdbapi>$self->{'credentials'}</qdbapi>";
}
if($content =~ /^<qdbapi>/)
{
$content = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" . $content;
}
my $res;
if ($self->{'ticket'})
{
$req->header('Cookie' => "TICKET=$self->{'ticket'};");
}
QuickBase.pm view on Meta::CPAN
$req->content($content);
$res = $ua->request($req);
if($res->is_error()){
$self->{'error'} = $res->code;
$self->{'errortext'} =$res->message;
return $res;
}
if (defined ($res->header('Set-Cookie')) && $res->header('Set-Cookie') =~ /TICKET=(.+?);/)
{
$self->{'ticket'} = $1;
$self->{'credentials'} = "<ticket>$self->{'ticket'}</ticket>";
}
elsif ($res->content =~ /<ticket>(.+?)<\/ticket>/)
{
$self->{'ticket'} = $1;
$self->{'credentials'} = "<ticket>$self->{'ticket'}</ticket>";
}
$res->content =~ /<errcode>(.*?)<\/errcode>.*?<errtext>(.*?)<\/errtext>/s;
$self->{'error'} = $1;
$self->{'errortext'} = $2;
if ($res->content =~ /<errdetail>(.*?)<\/errdetail>/s)
{
$self->{'errortext'} = $1;
}
if($self->{'error'} eq '11')
( run in 0.275 second using v1.01-cache-2.11-cpan-4d50c553e7e )