Menu

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

Download this file

141 lines (110 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
130
131
132
133
134
135
136
137
138
139
{
* 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-2012, Peter Johnson (www.delphidabbler.com).
*
* $Rev$
* $Date$
*
* Implements a class that interfaces with a web service to register the
* application online.
}
unit Web.URegistrar;
interface
uses
// Delphi
Classes,
// Project
Web.UStdWebService;
type
{
TRegistrar
Class that registers the application online by using the registration web
service.
}
TRegistrar = class(TStdWebService)
public
constructor Create;
{Class constructor. Initialises service.
}
function Submit(const Data: TStrings): string;
{Sends application registration data to web service and interprets
response.
@param Data Application registration information as list of Name=Value
data.
@return Registration key.
}
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
cScriptName = 'register-app.php'; // script name
cUserAgent = 'DelphiDabbler-Registrar-v2'; // user agent string
{ TRegistrar }
constructor TRegistrar.Create;
{Class constructor. Initialises service.
}
begin
inherited Create(TWebServiceInfo.Create(cScriptName, cUserAgent));
end;
function TRegistrar.Submit(const Data: TStrings): string;
{Sends application registration data to web service and interprets response.
@param Data Application registration information as list of Name=Value data.
@return Registration key.
}
var
Response: TStringList; // response from server
Query: TURIParams;
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.