mirror of
https://github.com/ok2cqr/cqrlog.git
synced 2024-09-22 02:47:19 +00:00
uploading data to HamQTH, ClubLog and HRDLog.net, no error checking yet
This commit is contained in:
parent
5b8a6732bb
commit
4aec838f42
@ -15,7 +15,7 @@ const
|
||||
C_CLUBLOG = 'ClubLog';
|
||||
C_HRDLOG = 'HRDLog';
|
||||
C_ALLDONE = 'ALLDONE';
|
||||
|
||||
C_CLUBLOG_API = '21507885dece41ca049fec7fe02a813f2105aff2';
|
||||
type
|
||||
TWhereToUpload = (upHamQTH, upClubLog, upHrdLog);
|
||||
|
||||
@ -37,22 +37,26 @@ type
|
||||
procedure Q2BeforeOpen(DataSet: TDataSet);
|
||||
procedure QBeforeOpen(DataSet: TDataSet);
|
||||
private
|
||||
function UploadLogData(Url : String; data : TStringList; var Response : String; var ResultCode : Integer) : Boolean;
|
||||
function GetAdifValue(Field,Value : String) : String;
|
||||
function RemoveSpaces(s : String) : String;
|
||||
function GetQSOInAdif(id_cqrlog_main : Integer) : String;
|
||||
function EncodeBandForClubLog(band : String) : String;
|
||||
public
|
||||
LogUploadCon : TSQLConnection;
|
||||
csLogUpload : TRTLCriticalSection;
|
||||
|
||||
function UploadLogData(Url : String; data : TStringList; var Response : String; var ResultCode : Integer) : Boolean;
|
||||
function CheckUserUploadSettings(where : TWhereToUpload) : String;
|
||||
function GetLogUploadColor(where : TWhereToUpload) : Integer;
|
||||
function GetUploadUrl(where : TWhereToUpload; cmd : String) : String;
|
||||
|
||||
procedure MarkAsUploadedToAllOnlineLogs;
|
||||
procedure MarkAsUploaded(LogName : String);
|
||||
procedure EnableOnlineLogSupport;
|
||||
procedure PrepareHamQTHUserData(data : TStringList);
|
||||
end;
|
||||
procedure PrepareUserInfoHeader(where : TWhereToUpload; data : TStringList);
|
||||
procedure PrepareInsertHeader(where : TWhereToUpload; id_cqrlog_main : Integer; data : TStringList);
|
||||
procedure PrepareDeleteHeader(where : TWhereToUpload; id_log_changes : Integer; data : TStringList);
|
||||
end;
|
||||
|
||||
var
|
||||
dmLogUpload: TdmLogUpload;
|
||||
@ -287,7 +291,7 @@ begin
|
||||
|
||||
data := DateToStr(Q1.Fields[1].AsDateTime);
|
||||
data := copy(data,1,4) + copy(data,6,2) + copy(data,9,2);
|
||||
data := GetAdifValue('QSODATE',data);
|
||||
data := GetAdifValue('QSO_DATE',data);
|
||||
Result := data;
|
||||
|
||||
data := Q1.Fields[2].AsString;
|
||||
@ -393,10 +397,23 @@ begin
|
||||
if (Result <> '') then
|
||||
Result := Result + '<EOR>'
|
||||
finally
|
||||
Q1.Close;
|
||||
trQ1.Rollback
|
||||
end
|
||||
end;
|
||||
|
||||
function TdmLogUpload.EncodeBandForClubLog(band : String) : String;
|
||||
var
|
||||
i : Integer;
|
||||
begin
|
||||
Result := '';
|
||||
for i := 1 to Length(band) do
|
||||
begin
|
||||
if (band[i] in ['0'..'9']) then
|
||||
Result := Result + band
|
||||
end
|
||||
end;
|
||||
|
||||
function TdmLogUpload.CheckUserUploadSettings(where : TWhereToUpload) : String;
|
||||
const
|
||||
C_IS_NOT_SET = '%s is not set! Go to Preferences and change settings.';
|
||||
@ -411,7 +428,7 @@ begin
|
||||
end;
|
||||
upClubLog : begin
|
||||
if (cqrini.ReadString('OnlineLog','ClUserName','')='') then
|
||||
Result := C_CLUBLOG + ' ' + Format(C_IS_NOT_SET,['User name'])
|
||||
Result := C_CLUBLOG + ' ' + Format(C_IS_NOT_SET,['Callsign'])
|
||||
else if (cqrini.ReadString('OnlineLog','ClPasswd','')='') then
|
||||
Result := C_CLUBLOG + ' ' + Format(C_IS_NOT_SET,['Password'])
|
||||
else if (cqrini.ReadString('OnlineLog','ClEmail','')='') then
|
||||
@ -419,16 +436,14 @@ begin
|
||||
end;
|
||||
upHrdLog : begin
|
||||
if (cqrini.ReadString('OnlineLog','HrUserName','')='') then
|
||||
Result := C_HRDLOG + ' ' + Format(C_IS_NOT_SET,['User name'])
|
||||
else if (cqrini.ReadString('OnlineLog','HrPasswd','')='') then
|
||||
Result := C_HRDLOG + ' ' + Format(C_IS_NOT_SET,['Password'])
|
||||
Result := C_HRDLOG + ' ' + Format(C_IS_NOT_SET,['Callsign'])
|
||||
else if (cqrini.ReadString('OnlineLog','HrCode','')='') then
|
||||
Result := C_HRDLOG + ' ' + Format(C_IS_NOT_SET,['Code'])
|
||||
end
|
||||
end //case
|
||||
end;
|
||||
|
||||
function TdmLogUpload.GetLogUploadColor(where : TWhereToUpload) : Integer;
|
||||
function TdmLogUpload.GetLogUploadColor(where : TWhereToUpload) : Integer;
|
||||
begin
|
||||
Result := clBlack;
|
||||
case where of
|
||||
@ -438,11 +453,106 @@ begin
|
||||
end
|
||||
end;
|
||||
|
||||
procedure TdmLogUpload.PrepareHamQTHUserData(data : TStringList);
|
||||
procedure TdmLogUpload.PrepareUserInfoHeader(where : TWhereToUpload; data : TStringList);
|
||||
begin
|
||||
data.Clear;
|
||||
data.Add('u='+cqrini.ReadString('OnlineLog','HaUserName',''));
|
||||
data.Add('p='+cqrini.ReadString('OnlineLog','HaPasswd',''))
|
||||
case where of
|
||||
upHamQTH : begin
|
||||
data.Add('u='+cqrini.ReadString('OnlineLog','HaUserName',''));
|
||||
data.Add('p='+cqrini.ReadString('OnlineLog','HaPasswd',''));
|
||||
data.Add('prg=CQRLOG')
|
||||
end;
|
||||
upClublog : begin
|
||||
data.Add('email='+cqrini.ReadString('OnlineLog','ClEmail',''));
|
||||
data.Add('password='+cqrini.ReadString('OnlineLog','ClPasswd',''));
|
||||
data.Add('callsign='+cqrini.ReadString('OnlineLog','ClUserName',''));
|
||||
data.Add('api='+C_CLUBLOG_API)
|
||||
end;
|
||||
upHrdLog : begin
|
||||
data.Add('Callsign='+cqrini.ReadString('OnlineLog','HrUserName',''));
|
||||
data.Add('Code='+cqrini.ReadString('OnlineLog','HrCode',''));
|
||||
data.Add('App=CQRLOG')
|
||||
end;
|
||||
end //case
|
||||
end;
|
||||
|
||||
procedure TdmLogUpload.PrepareInsertHeader(where : TWhereToUpload; id_cqrlog_main : Integer; data : TStringList);
|
||||
var
|
||||
adif : String;
|
||||
begin
|
||||
adif := GetQSOInAdif(id_cqrlog_main);
|
||||
case where of
|
||||
upHamQTH : begin
|
||||
data.Add('adif='+adif);
|
||||
data.Add('cmd=INSERT')
|
||||
end;
|
||||
upClublog : begin
|
||||
data.Add('adif='+adif)
|
||||
end;
|
||||
upHrdLog : begin
|
||||
data.Add('ADIFData='+adif)
|
||||
end
|
||||
end //case
|
||||
end;
|
||||
|
||||
procedure TdmLogUpload.PrepareDeleteHeader(where : TWhereToUpload; id_log_changes : Integer; data : TStringList);
|
||||
const
|
||||
C_SEL_LOG_CHANGES = 'select * from log_changes whre id = %d';
|
||||
var
|
||||
adif : String;
|
||||
time_on : String;
|
||||
qsodate : String;
|
||||
begin
|
||||
if trQ2.Active then trQ2.RollBack;
|
||||
try
|
||||
Q2.SQL.Text := Format(C_SEL_LOG_CHANGES,[id_log_changes]);
|
||||
Q2.Open;
|
||||
if Q2.Fields[0].IsNull then exit; //this shouldn't happen
|
||||
|
||||
qsodate := Q2.FieldByName('old_qso_date').AsString;
|
||||
qsodate := copy(qsodate,1,4) + copy(qsodate,6,2) + copy(qsodate,9,2);
|
||||
time_on := Q2.FieldByName('old_time_on').AsString;
|
||||
time_on := copy(time_on,1,2) + copy(time_on,4,2);
|
||||
|
||||
case where of
|
||||
upHamQTH : begin
|
||||
adif := GetAdifValue('OLD_QSODATE',qsodate)+GetAdifValue('OLD_TIME_ON',time_on)+
|
||||
GetAdifValue('OLD_CALL',Q2.FieldByName('old_callsign').AsString)+
|
||||
GetAdifValue('OLD_BAND',Q2.FieldByName('old_band').AsString)+
|
||||
GetAdifValue('OLD_MODE',Q2.FieldByName('old_mode').AsString);
|
||||
data.Add('adif='+adif);
|
||||
data.Add('cmd=DELETE')
|
||||
end;
|
||||
upClublog : begin
|
||||
data.Add('dxcall='+Q2.FieldByName('old_callsign').AsString);
|
||||
data.Add('datetime='+Q2.FieldByName('old_qsodate').AsString+' '+
|
||||
Q2.FieldByName('old_time_on').AsString+':00');
|
||||
data.Add('bandid='+EncodeBandForClubLog(Q2.FieldByName('old_band').AsString))
|
||||
end;
|
||||
upHrdLog : begin
|
||||
adif := GetAdifValue('QSODATE',qsodate)+GetAdifValue('TIME_ON',time_on)+
|
||||
GetAdifValue('CALL',Q2.FieldByName('old_callsign').AsString);
|
||||
data.Add('Cmd=DELETE')
|
||||
end
|
||||
end //case
|
||||
finally
|
||||
Q2.Close;
|
||||
trQ2.RollBack
|
||||
end
|
||||
end;
|
||||
|
||||
function TdmLogUpload.GetUploadUrl(where : TWhereToUpload; cmd : String) : String;
|
||||
begin
|
||||
Result := '';
|
||||
case where of
|
||||
upHamQTH : Result := 'http://hamqth.com/qso_realtime.php';
|
||||
upClubLog : begin
|
||||
if (cmd='DELETE') then
|
||||
Result := 'https://secure.clublog.org/delete.php'
|
||||
else
|
||||
Result := 'https://secure.clublog.org/realtime.php'
|
||||
end;
|
||||
upHrdLog : Result := 'http://robot.hrdlog.net/NewEntrry.aspx'
|
||||
end //case
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -48,6 +48,9 @@ type
|
||||
|
||||
type
|
||||
TUploadThread = class(TThread)
|
||||
private
|
||||
function CheckEnabledOnlineLogs : Boolean;
|
||||
function GetLogName : String;
|
||||
protected
|
||||
procedure Execute; override;
|
||||
public
|
||||
@ -63,15 +66,53 @@ implementation
|
||||
|
||||
uses dData, dUtils, uMyIni;
|
||||
|
||||
procedure TUploadThread.Execute;
|
||||
function TUploadThread.CheckEnabledOnlineLogs : Boolean;
|
||||
const
|
||||
C_IS_NOT_ENABLED = 'Upload to %s is not enabled! Go to Preferences and change settings.';
|
||||
begin
|
||||
Result := True;
|
||||
case WhereToUpload of
|
||||
upHamQTH : begin
|
||||
if not cqrini.ReadBool('OnlineLog','HaUP',False) then
|
||||
begin
|
||||
frmLogUploadStatus.SyncMsg := Format(C_IS_NOT_ENABLED,['HamQTH']);
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
Result := False
|
||||
end
|
||||
end;
|
||||
upClubLog : begin
|
||||
if not cqrini.ReadBool('OnlineLog','ClUP',False) then
|
||||
begin
|
||||
frmLogUploadStatus.SyncMsg := Format(C_IS_NOT_ENABLED,['ClubLog']);
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
Result := False
|
||||
end
|
||||
end;
|
||||
upHrdLog : begin
|
||||
if not cqrini.ReadBool('OnlineLog','HrUP',False) then
|
||||
begin
|
||||
frmLogUploadStatus.SyncMsg := Format(C_IS_NOT_ENABLED,['HRDLog']);
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
Result := False
|
||||
end
|
||||
end
|
||||
end //case
|
||||
end;
|
||||
|
||||
procedure TUploadThread.Execute;
|
||||
const
|
||||
C_SEL_UPLOAD_STATUS = 'select * from upload_status where logname=%s';
|
||||
C_SEL_LOG_CHANGES = 'select * from log_changes where id > %d';
|
||||
var
|
||||
data : TStringList;
|
||||
err : String;
|
||||
PError: PChar;
|
||||
msg : String;
|
||||
i : Integer = 1;
|
||||
data : TStringList;
|
||||
err : String = '';
|
||||
msg : String = '';
|
||||
i : Integer = 1;
|
||||
LastId : Integer = 0;
|
||||
Response : String;
|
||||
ResultCode : Integer;
|
||||
Command : String;
|
||||
UpSuccess : Boolean = False;
|
||||
begin
|
||||
data := TStringList.Create;
|
||||
try
|
||||
@ -80,32 +121,8 @@ begin
|
||||
frmLogUploadStatus.SyncUpdate := '';
|
||||
frmLogUploadStatus.SyncColor := dmLogUpload.GetLogUploadColor(WhereToUpload);
|
||||
|
||||
case WhereToUpload of
|
||||
upHamQTH : begin
|
||||
if not cqrini.ReadBool('OnlineLog','HaUP',False) then
|
||||
begin
|
||||
frmLogUploadStatus.SyncMsg := Format(C_IS_NOT_ENABLED,['HamQTH']);
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
exit
|
||||
end
|
||||
end;
|
||||
upClubLog : begin
|
||||
if not cqrini.ReadBool('OnlineLog','ClUP',False) then
|
||||
begin
|
||||
frmLogUploadStatus.SyncMsg := Format(C_IS_NOT_ENABLED,['ClubLog']);
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
exit
|
||||
end
|
||||
end;
|
||||
upHrdLog : begin
|
||||
if not cqrini.ReadBool('OnlineLog','HrUP',False) then
|
||||
begin
|
||||
frmLogUploadStatus.SyncMsg := Format(C_IS_NOT_ENABLED,['HRDLog']);
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
exit
|
||||
end
|
||||
end
|
||||
end; //case
|
||||
if not CheckEnabledOnlineLogs then
|
||||
exit;
|
||||
|
||||
err := dmLogUpload.CheckUserUploadSettings(WhereToUpload);
|
||||
if (err<>'') then
|
||||
@ -115,15 +132,94 @@ begin
|
||||
exit
|
||||
end;
|
||||
|
||||
dmLogUpload.PrepareHamQTHUserData(data);
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
if dmLogUpload.trQ.Active then dmLogUpload.trQ.RollBack;
|
||||
dmLogUpload.trQ.StartTransaction;
|
||||
try try
|
||||
dmLogUpload.Q.Close;
|
||||
dmLogUpload.Q.SQL.Text := Format(C_SEL_UPLOAD_STATUS,[QuotedStr(GetLogName)]);
|
||||
dmLogUpload.Q.Open;
|
||||
LastId := dmLogUpload.Q.FieldByName('id_log_changes').AsInteger;
|
||||
|
||||
dmLogUpload.Q.Close;
|
||||
dmLogUpload.Q.SQL.Text := Format(C_SEL_LOG_CHANGES,[LastId]);
|
||||
dmLogUpload.Q.Open;
|
||||
if dmLogUpload.Q.Fields[0].IsNull then
|
||||
begin
|
||||
frmLogUploadStatus.SyncMsg := GetLogName + ': All QSO already uploaded';
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation)
|
||||
end
|
||||
else begin
|
||||
frmLogUploadStatus.SyncMsg := GetLogName + ': Uploading '+dmLogUpload.Q.FieldByName('callsign').AsString;
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
|
||||
Command := dmLogUpload.Q.FieldByName('cmd').AsString;
|
||||
if (Command<>'INSERT') and (Command<>'UPDATE') and (Command<>'DELETE') then
|
||||
begin
|
||||
Writeln('Uknown command:',Command);
|
||||
exit
|
||||
end;
|
||||
data.Clear;
|
||||
dmLogUpload.PrepareUserInfoHeader(WhereToUpload,data);
|
||||
|
||||
if (Command = 'INSERT') then
|
||||
begin
|
||||
dmLogUpload.PrepareInsertHeader(WhereToUpload,dmLogUpload.Q.FieldByName('id_cqrlog_main').AsInteger,data);
|
||||
UpSuccess := dmLogUpload.UploadLogData(dmLogUpload.GetUploadUrl(WhereToUpload,Command),data,Response,ResultCode);
|
||||
end
|
||||
else if (Command = 'UPDATE') then
|
||||
begin
|
||||
|
||||
end
|
||||
else if (Command = 'DELETE') then
|
||||
begin
|
||||
dmLogUpload.PrepareDeleteHeader(WhereToUpload,dmLogUpload.Q.Fields[0].AsInteger,data);
|
||||
end;
|
||||
if UpSuccess then
|
||||
begin
|
||||
Writeln('Response:',Response);
|
||||
Writeln('ResultCode:',ResultCode)
|
||||
end
|
||||
else begin
|
||||
frmLogUploadStatus.SyncMsg := GetLogName + ': Failed!';
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
frmLogUploadStatus.SyncMsg := GetLogName + Response;
|
||||
Synchronize(@frmLogUploadStatus.SyncUploadInformation);
|
||||
end;
|
||||
Writeln('Data2:',data.Text);
|
||||
|
||||
//UploadLogData(Url : String; data : TStringList; var Response : String; var ResultCode : Integer) : Boolean;
|
||||
|
||||
|
||||
end
|
||||
finally
|
||||
dmLogUpload.Q.Close;
|
||||
dmLogUpload.trQ.RollBack
|
||||
end;
|
||||
|
||||
|
||||
|
||||
Sleep(500)
|
||||
|
||||
except
|
||||
on E : Exception do
|
||||
Writeln(E.Message)
|
||||
end
|
||||
finally
|
||||
FreeAndNil(data);
|
||||
frmLogUploadStatus.thRunning := False
|
||||
end
|
||||
end;
|
||||
|
||||
function TUploadThread.GetLogName : String;
|
||||
begin
|
||||
Result := '';
|
||||
case WhereToUpload of
|
||||
upHamQTH : Result := C_HAMQTH;
|
||||
upClubLog : Result := C_CLUBLOG;
|
||||
upHrdlog : Result := C_HRDLOG
|
||||
end //case
|
||||
end;
|
||||
|
||||
procedure TfrmLogUploadStatus.SyncUploadInformation;
|
||||
var
|
||||
item : String;
|
||||
|
Loading…
Reference in New Issue
Block a user