unit SDK_1;
{*
by Webfan.de
Free, Public Domain
*}
interface
uses classes,
sysutils,idhttp,dialogs;
const _API_URL_ = '
http://programm.freizeitradio.de/OnAir/api.php';
type
TWebArrayElement =
record
key:
string;
value:
string;
end;
type TRequestArray =
array of TWebArrayElement;
type
TOnAir =
class(TObject)
info:pointer;
procedure start(user, key, APIfunction:
string; sender:tobject;modus:boolean = false);
procedure assignData(data:TRequestArray;sender:Tobject);
procedure addData(data:TWebArrayElement;sender:Tobject);
procedure clearquery;
procedure clearquery_string;
procedure CreateQueryString;
procedure SendRequestIndy(client:tidhttp;sender:tobject);
private
{ Private-Deklarationen }
//AUTH
api_user:
string[255];
api_key:
string[255];
SubuserApiUsername:
string[255];
SubuserApiKey:
string[255];
public
{ Public-Deklarationen }
//API
apifunction:
string;
query:TRequestArray;
query_string:
string;
//RESULT
error:integer;
result:
string;
//RESULT CACHE
cacheDir:
string;
CacheActivate:boolean;
defaultExpire:integer;
CacheFilename:
string;
testmodus:boolean;
end;
implementation
procedure TOnAir.start(user, key, APIfunction:
string; sender:tobject;modus:boolean = false);
begin
self.api_user := user;
self.api_key := key;
self.apifunction := apifunction;
self.testmodus :=modus;
end;
procedure TOnAir.assignData(data:TRequestArray;sender:Tobject);
begin
self.query :=data;
end;
procedure TOnAir.addData(data:TWebArrayElement;sender:Tobject);
begin
setlength(self.query, length(self.query) +1);
self.query[high(self.query)].key := data.key;
self.query[high(self.query)].value := data.value;
end;
procedure TOnAir.clearquery;
begin
setlength(self.query,0);
end;
procedure TOnAir.clearquery_string;
begin
self.query_string := '
';
end;
procedure TOnAir.CreateQueryString;
var i:integer;
begin
self.query_string := '
';
self.query_string := self.query_string + '
api_user='+self.api_user;
self.query_string := self.query_string + '
&api_key='+self.api_key;
self.query_string := self.query_string + '
&api_function='+self.apifunction;
for i := 0
to length(self.query) - 1
do
begin
self.query_string := self.query_string
+ '
&'+self.query[i].key + '
='
+ self.query[i].value;
end;
end;
{* Stolen forom Easy Helper *}
procedure TOnAir.SendRequestIndy(client:tidhttp;sender:tobject);
//Ahttp: Die HTTP Komponente von Indy 8.0 bzw. 9.0
//AtoURL: An diese URL werden die Informationen gesendet
//Result: HTML-Ergebnis (Antwort des Scripts)
Var
lStream: TMemoryStream;
//HTML-Result des PHP-Scripts
lParams: TStringStream;
I: Integer;
AtoURL:
String;
begin
atourl:= _API_URL_;
Result:='
';
if not Assigned(client)
then
exit;
lStream := TMemoryStream.create;
lParams := TStringStream.create('
');
try
client.Request.ContentType := '
application/x-www-form-urlencoded';
//Dieser Stream wird letztendlich gesendet
//Stream mit Werten füllen
lParams.WriteString(self.query_string);
try
//Stream an das PHP-Script senden
client.Post(AtoURL,
lParams,
lStream);
except
on E:
Exception do
showmessage('
Fehler bei der Übertragung: ' + E.
Message);
end;
SetLength(self.Result,lStream.Size);
lStream.Position:=0;
lStream.ReadBuffer(self.Result[1],lStream.Size);
finally
lParams.Free;
lStream.Free;
end;
end;
end.