Menu

[r3020]: / trunk / Src / Web.URegistrar.pas  Maximize  Restore  History

Download this file

131 lines (101 with data), 4.2 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
{
* 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) 2006-2013, Peter Johnson (www.delphidabbler.com).
*
* $Rev$
* $Date$
*
* Implements a class that interfaces with the DelphiDabbler program
* registration web service.
}
unit Web.URegistrar;
interface
uses
// Delphi
Classes,
// Project
Web.UStdWebService;
type
/// <summary>Provides an interface to the DelphiDabbler program registration
/// web service.</summary>
TRegistrar = class(TStdWebService)
public
/// <summary>Creates a new object instance with the correct URL and
/// suitable user agent for accessing the web service.</summary>
constructor Create;
/// <summary>Sends regisration data to the web service and interprets its
/// response.</summary>
/// <param name="Data">TStrings [in] Registration information as a list of
/// Name=Value data items.</param>
/// <returns>string. Program's registration key returned from the web
/// service.</returns>
function Submit(const Data: TStrings): string;
end;
implementation
uses
// Project
UStrUtils, UURIParams, Web.UInfo;
{
Web service notes: register-app.php
-----------------------------------
This web service enables CodeSnip to register the application with the
DelphiDabbler website.
The service accepts registration information as a series of name=value pairs
POSTed to it. The required and optional data is as follows.
+--------------------------------------------------------------------+
| Name | Required? | Description |
+-----------+-----------+--------------------------------------------+
| ProgId | Yes | Program id code (string) |
+-----------+-----------+--------------------------------------------+
| ProgName | No | Name of program (string) |
+-----------+-----------+--------------------------------------------+
| ProgVer | No | Program version number (dotted quad) |
+-----------+-----------+--------------------------------------------+
| ProgKey | Yes | Unique program key (32 hex digits) |
+-----------+-----------+--------------------------------------------+
| UserName | Yes | Name of user registering program |
+-----------+-----------+--------------------------------------------+
| MailList | No | Whether to join any mailing list (0 or 1) |
+-----------+-----------+--------------------------------------------+
| UserEmail | No* | Email address of user joining mailing list |
| | | * required only if MailList=1 |
+-----------+-----------+--------------------------------------------+
Responses from the web service comprise a numeric success code on a line on
its own followed by some data, i.e.
<success-code> CRLF <data>
If registration succeeds the success code is '0' and the data is the program's
registration key which is a string of 32 hex digits.
If the registration fails the success code is a +ve error code and the data
is an error message.
If the client application accessing web service does not supply the required
user agent then the service responds with a HTTP 403 (Forbidden) error.
}
const
// Web service info
cScriptURLTplt = 'http://%s/websvc/register-app';
cUserAgent = 'DelphiDabbler-Registrar-v2';
{ TRegistrar }
constructor TRegistrar.Create;
begin
inherited Create(TWebServiceInfo.Create(cScriptURLTplt, cUserAgent));
end;
function TRegistrar.Submit(const Data: TStrings): string;
var
Response: TStringList; // response from server
Query: TURIParams; // query made from Name=Value pairs in Data
begin
Query := nil;
Response := TStringList.Create;
try
Query := TURIParams.Create(Data);
PostQuery(Query, Response);
Result := StrTrim(Response.Text); // registration key
finally
Query.Free;
Response.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.