package LiveSPC;

#
#
#  Description:  LiveSPC.com client dataset upload library
#
#  $Id: LiveSPC.pm,v 1.1 2009/11/22 20:50:26 michaelholder Exp michaelholder $
#
#  Copyright (C) 2007-2009 TRD Associates, LLC
#
#    - All rights reserved.
#
#

use strict;

use LWP::UserAgent;
use Digest::MD5 "md5_hex";

my $host = 'LiveSPC.com';

#-----------------------------------------------------------------------

sub getChallenge( $ )
{
	my $datasetID = shift;
	
	my $ua = new LWP::UserAgent;
	
	$ua->agent("Mozilla/8.0");
	
	my $req = new HTTP::Request 'GET',"http://$host/challenge.pl?datasetID=$datasetID";
	$req->header(referer => 'http://livespc.com/main.html');

	my $res = $ua->request($req);
	
	if ($res->is_success) {
		return $res->content;
	} else {
		return 0;
	}
	
}

#-----------------------------------------------------------------------

sub sendData($ $ $ $ $)
{
	my ($datasetID, $challenge, $passcode, $action, $data) = @_;
	
	my $response = md5_hex($passcode.$challenge);
	
#	print "[$passcode]  [$challenge]  response = [$response]\n";
	
	my $ua = new LWP::UserAgent;
	
	$ua->agent("Mozilla/8.0");
	
	my $req = new HTTP::Request 'POST',"http://$host/response.pl";
	$req->content_type('application/x-www-form-urlencoded');
	$req->content("datasetID=$datasetID&response=$response&action=$action&datafile=$data");
	$req->header(referer => 'http://livespc.com/main.html');
	
	my $res = $ua->request($req);
	
	if ($res->is_success) {
		return $res->content;
	} else {
		return 0;
	}
	
}

#-----------------------------------------------------------------------

sub updateData($ $ $ $)
{
	my ($datasetID, $passcode, $action, $text) = @_;
	
	my $success = 0;
	
	my $challenge = getChallenge($datasetID);
	
	if ($challenge) {

		$text =~ s/[\r\n]+/\n/g;
		
		$success = sendData($datasetID, $challenge, $passcode, $action, $text);
	
	}
	return $success;
}

#-----------------------------------------------------------------------

1;