Menu

[r660]: / trunk / Src / UMailListSubscriber.pas  Maximize  Restore  History

Download this file

147 lines (122 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
140
141
142
143
144
145
{
* UMailListSubscriber.pas
*
* Implements class that interacts with mailing list subscription web service to
* subscribe user to CodeSnip mailing list.
*
* $Rev$
* $Date$
*
* ***** BEGIN LICENSE BLOCK *****
*
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* The Original Code is UMailListSubscriber.pas
*
* The Initial Developer of the Original Code is Peter Johnson
* (http://www.delphidabbler.com/).
*
* Portions created by the Initial Developer are Copyright (C) 2006-2009 Peter
* Johnson. All Rights Reserved.
*
* Contributor(s)
* NONE
*
* ***** END LICENSE BLOCK *****
}
unit UMailListSubscriber;
interface
uses
// Project
UWebService;
type
{
TMailListSubscriber:
Class that interacts with mailing list subscription web service to subscribe
user to CodeSnip mailing list.
}
TMailListSubscriber = class(TDDabStdWebService)
public
constructor Create;
{Class constructor. Initialises service.
}
function Subscribe(const Email, Name: string): string;
{Sends subscription request to web service and gathers response.
@param Email [in] Email address to be subscribed.
@param Name [in] Name of email account holder. May be ''.
@return Message returned from web service in response to request.
@except Raises EWebServiceFailure if response from web service has
invalid format.
@except Raises EWebServiceError on receipt of valid error response.
@except Raises EMailListSubscriber if response not in expected format.
}
end;
{
EMailListSubscriber:
Class of exception raised when errors detected in TMailListSubscriber.
}
EMailListSubscriber = class(EWebService);
implementation
uses
// Delphi
SysUtils, Classes,
// Project
UWebInfo;
const
// Web service info
cScriptName = 'maillist-subs.php'; // script name
cUserAgent = 'DelphiDabbler-MLSubs-v1'; // user agent string
resourcestring
// Error message
sBadRespone = 'Invalid response from mail list web service "subscribe" '
+ 'command.';
{ TMailListSubscriber }
constructor TMailListSubscriber.Create;
{Class constructor. Initialises service.
}
begin
inherited Create(TWebServiceInfo.Create(cScriptName, cUserAgent));
end;
function TMailListSubscriber.Subscribe(const Email, Name: string): string;
{Sends subscription request to web service and gathers response.
@param Email [in] Email address to be subscribed.
@param Name [in] Name of email account holder. May be ''.
@return Message returned from web service in response to request.
@except Raises EWebServiceFailure if response from web service has invalid
format.
@except Raises EWebServiceError on receipt of valid error response.
@except Raises EMailListSubscriber if response not in expected format.
}
var
Response: TStringList; // valid response from web service
begin
Assert(Email <> '', ClassName + '.Subscribe: Email required');
// Send subscribe command to web service and gather response
Response := TStringList.Create;
try
PostCommand(
'subscribe',
['listid=codesnip', 'name=' + Name, 'email=' + Email],
Response
);
// Response must be at least two lines: 1st line is success status code. 2nd
// and subsequent lines are response message
if Response.Count < 2 then
raise EMailListSubscriber.Create(sBadRespone);
// Discard success status code: we don't use this
Response.Delete(0);
// Return message that follows success status code
Result := Trim(Response.Text);
finally
FreeAndNil(Response);
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.