Menu

[r2903]: / trunk / Src / Web.UProgramUpdateMgr.pas  Maximize  Restore  History

Download this file

154 lines (131 with data), 3.4 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
{
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/
*
* Copyright (C) 2012-2013, Peter Johnson (www.delphidabbler.com).
*
* $Rev$
* $Date$
*
* Implements a class that interfaces with a web service that provides
* information about available program updates.
}
unit Web.UProgramUpdateMgr;
interface
uses
// Project
UURIParams, Web.UStdWebService;
type
TProgramUpdateMgr = class sealed(TStdWebService)
strict private
const
ScriptURLTplt = 'http://codesnip.%s/websvc/prog-update';
UserAgent = 'CodeSnip';
ApiKey = '9EE3A4D85A2F46F79AE2AAB1012A7678';
{$IFDEF PORTABLE}
Edition = 'portable';
{$ELSE}
Edition = 'standard';
{$ENDIF}
strict private
class function SanitiseString(const S: string): string;
/// <summary>Creates and returns a parameters object containing standard
/// parameters required on every call to web service.</summary>
/// <remarks>Callers must free the returned object.</remarks>
function CreateParams: TURIParams;
public
constructor Create;
procedure SignOn(const Caller: string);
function LatestProgramVersion: string;
function DownloadURL: string;
end;
implementation
uses
// Delphi
SysUtils, Classes,
// Project
UAppInfo, UStrUtils, USystemInfo, Web.UInfo;
{ TProgramUpdateMgr }
constructor TProgramUpdateMgr.Create;
begin
inherited Create(TWebServiceInfo.Create(ScriptURLTplt, UserAgent));
end;
function TProgramUpdateMgr.CreateParams: TURIParams;
begin
Result := TURIParams.Create;
Result.Add('key', ApiKey);
Result.Add('prog-id', TAppInfo.ProgramKey);
end;
function TProgramUpdateMgr.DownloadURL: string;
var
Params: TURIParams;
Response: TStringList;
begin
Params := CreateParams;
try
Params.Add('edition', Edition);
Response := TStringList.Create;
try
PostCommand('downloadurl', Params, Response);
Result := StrTrim(Response.Text);
finally
Response.Free;
end;
finally
Params.Free;
end;
end;
function TProgramUpdateMgr.LatestProgramVersion: string;
var
Params: TURIParams;
Response: TStringList;
begin
Params := CreateParams;
try
Params.Add('edition', Edition);
Response := TStringList.Create;
try
PostCommand('version', Params, Response);
Result := StrTrim(Response.Text);
finally
Response.Free;
end;
finally
Params.Free;
end;
end;
class function TProgramUpdateMgr.SanitiseString(const S: string): string;
const
IllegalChars = [#$00..#$1F, #$7F];
var
Idx: Integer;
begin
Result := S;
for Idx := 1 to Length(S) do
if CharInSet(Result[Idx], IllegalChars) then
Result[Idx] := ' ';
end;
procedure TProgramUpdateMgr.SignOn(const Caller: string);
var
Params: TURIParams;
Response: TStringList;
begin
Params := CreateParams;
try
Params.Add('prog-ver', TAppInfo.ProgramReleaseVersion);
Params.Add('os', SanitiseString(TOSInfo.Description));
Params.Add('ie-ver', IntToStr(TOSInfo.BrowserVer));
Params.Add('caller', SanitiseString(Caller));
Response := TStringList.Create;
try
PostCommand('stats', Params, Response);
// do nothing with response
finally
Response.Free;
end;
finally
Params.Free;
end;
end;
end.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.