Menu

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

Download this file

163 lines (141 with data), 4.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
153
154
155
156
157
158
159
160
161
{
* 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
/// <summary>Provides an interface to the DelphiDabbler CodeSnip program
/// update web service.</summary>
/// <remarks>This class provides a public method for every command exposed by
/// the web service.</remarks>
TProgramUpdateMgr = class sealed(TStdWebService)
strict private
const
/// <summary>Web service's URL template.</summary>
ScriptURLTplt = 'http://codesnip.%s/websvc/prog-update';
/// <summary>User agent sent to web service.</summary>
UserAgent = 'CodeSnip';
/// <summary>API key required for all calls to web service.</summary>
ApiKey = '9EE3A4D85A2F46F79AE2AAB1012A7678';
/// <summary>Program edition sent to web service.</summary>
{$IFDEF PORTABLE}
Edition = 'portable';
{$ELSE}
Edition = 'standard';
{$ENDIF}
strict private
/// <summary>Creates and returns a parameters object containing standard
/// parameters that are required on every call to the web service.
/// </summary>
/// <remarks>Callers must free the returned object.</remarks>
function CreateParams: TURIParams;
public
/// <summary>Creates a new object instance with the correct URL and
/// suitable user agent.</summary>
constructor Create;
/// <summary>Signs on the the web service.</summary>
/// <param name="Caller">string [in] Specifies from where the web service
/// is called.</param>
procedure SignOn(const Caller: string);
/// <summary>Gets the latest version of the program from the web service.
/// </summary>
/// <remarks>The version returned is the latest one for the program edition
/// specified by the Edition constant.</remarks>
function LatestProgramVersion: string;
/// <summary>Gets the URL to use to download the latest version of the
/// program.</summary>
/// <remarks>The URL returned is the correct one for the program edition
/// specified by the Edition constant.</remarks>
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;
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(TIEInfo.MajorVersion));
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.