Протокол RSDN

Протокол сгенерирован на основе WSDL документа http://www.rsdn.ru/ws/janusAT.asmx?WSDL

Описание протокола доступно на его странице.

Модуль

// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : http://www.rsdn.ru/ws/janusAT.asmx?WSDL
// Encoding : utf-8
// Version  : 1.0
// (29.07.2008 16:30:13 - 1.33.2.5)
// ************************************************************************ //
 
unit janusAT;
 
interface
 
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
 
type
 
  // ************************************************************************ //
  // The following types, referred to in the WSDL document are not being represented
  // in this file. They are either aliases[@] of other types represented or were referred
  // to but never[!] declared in the document. The types from the latter category
  // typically map to predefined/known XML or Borland types; however, they could also 
  // indicate incorrect WSDL documents that failed to declare or import a schema type.
  // ************************************************************************ //
  // !:string          - "http://www.w3.org/2001/XMLSchema"
  // !:int             - "http://www.w3.org/2001/XMLSchema"
  // !:dateTime        - "http://www.w3.org/2001/XMLSchema"
  // !:boolean         - "http://www.w3.org/2001/XMLSchema"
  // !:base64Binary    - "http://www.w3.org/2001/XMLSchema"
 
  TopicRequest         = class;                 { "http://rsdn.ru/Janus/" }
  TopicResponse        = class;                 { "http://rsdn.ru/Janus/" }
  JanusMessageInfo     = class;                 { "http://rsdn.ru/Janus/" }
  JanusRatingInfo      = class;                 { "http://rsdn.ru/Janus/" }
  JanusModerateInfo    = class;                 { "http://rsdn.ru/Janus/" }
  ChangeRequest        = class;                 { "http://rsdn.ru/Janus/" }
  RequestForumInfo     = class;                 { "http://rsdn.ru/Janus/" }
  ChangeResponse       = class;                 { "http://rsdn.ru/Janus/" }
  ForumRequest         = class;                 { "http://rsdn.ru/Janus/" }
  ForumResponse        = class;                 { "http://rsdn.ru/Janus/" }
  JanusForumInfo       = class;                 { "http://rsdn.ru/Janus/" }
  JanusForumGroupInfo  = class;                 { "http://rsdn.ru/Janus/" }
  UserRequest          = class;                 { "http://rsdn.ru/Janus/" }
  UserResponse         = class;                 { "http://rsdn.ru/Janus/" }
  JanusUserInfo        = class;                 { "http://rsdn.ru/Janus/" }
  PostRequest          = class;                 { "http://rsdn.ru/Janus/" }
  PostMessageInfo      = class;                 { "http://rsdn.ru/Janus/" }
  PostRatingInfo       = class;                 { "http://rsdn.ru/Janus/" }
  PostModerateInfo     = class;                 { "http://rsdn.ru/Janus/" }
  PostResponse         = class;                 { "http://rsdn.ru/Janus/" }
  PostExceptionInfo    = class;                 { "http://rsdn.ru/Janus/" }
  RatingExceptionInfo  = class;                 { "http://rsdn.ru/Janus/" }
  ModerateExceptionInfo = class;                { "http://rsdn.ru/Janus/" }
 
  { "http://rsdn.ru/Janus/" }
  UserRole = (Admin, Moderator, TeamMember, User, Expert, Anonym, Group);
 
  { "http://rsdn.ru/Janus/" }
  ModerateActionType = (MoveMessage, DeleteMessage, DeleteThread, DeleteErrorMessage, SplitThread, CloseTopic, OpenTopic);
 
  ArrayOfInt = array of Integer;                { "http://rsdn.ru/Janus/" }
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  TopicRequest = class(TRemotable)
  private
    FuserName: WideString;
    Fpassword: WideString;
    FmessageIds: ArrayOfInt;
  published
    property userName: WideString read FuserName write FuserName;
    property password: WideString read Fpassword write Fpassword;
    property messageIds: ArrayOfInt read FmessageIds write FmessageIds;
  end;
 
  ArrayOfJanusMessageInfo = array of JanusMessageInfo;   { "http://rsdn.ru/Janus/" }
  ArrayOfJanusRatingInfo = array of JanusRatingInfo;   { "http://rsdn.ru/Janus/" }
  ArrayOfJanusModerateInfo = array of JanusModerateInfo;   { "http://rsdn.ru/Janus/" }
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  TopicResponse = class(TRemotable)
  private
    FMessages: ArrayOfJanusMessageInfo;
    FRating: ArrayOfJanusRatingInfo;
    FModerate: ArrayOfJanusModerateInfo;
  public
    destructor Destroy; override;
  published
    property Messages: ArrayOfJanusMessageInfo read FMessages write FMessages;
    property Rating: ArrayOfJanusRatingInfo read FRating write FRating;
    property Moderate: ArrayOfJanusModerateInfo read FModerate write FModerate;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  JanusMessageInfo = class(TRemotable)
  private
    FmessageId: Integer;
    FtopicId: Integer;
    FparentId: Integer;
    FuserId: Integer;
    FforumId: Integer;
    Fsubject: WideString;
    FmessageName: WideString;
    FuserNick: WideString;
    Fmessage_: WideString;
    FarticleId: Integer;
    FmessageDate: TXSDateTime;
    FupdateDate: TXSDateTime;
    FuserRole: UserRole;
    FuserTitle: WideString;
    FuserTitleColor: Integer;
    FlastModerated: TXSDateTime;
    Fclosed: Boolean;
  public
    destructor Destroy; override;
  published
    property messageId: Integer read FmessageId write FmessageId;
    property topicId: Integer read FtopicId write FtopicId;
    property parentId: Integer read FparentId write FparentId;
    property userId: Integer read FuserId write FuserId;
    property forumId: Integer read FforumId write FforumId;
    property subject: WideString read Fsubject write Fsubject;
    property messageName: WideString read FmessageName write FmessageName;
    property userNick: WideString read FuserNick write FuserNick;
    property message_: WideString read Fmessage_ write Fmessage_;
    property articleId: Integer read FarticleId write FarticleId;
    property messageDate: TXSDateTime read FmessageDate write FmessageDate;
    property updateDate: TXSDateTime read FupdateDate write FupdateDate;
    property userRole: UserRole read FuserRole write FuserRole;
    property userTitle: WideString read FuserTitle write FuserTitle;
    property userTitleColor: Integer read FuserTitleColor write FuserTitleColor;
    property lastModerated: TXSDateTime read FlastModerated write FlastModerated;
    property closed: Boolean read Fclosed write Fclosed;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  JanusRatingInfo = class(TRemotable)
  private
    FmessageId: Integer;
    FtopicId: Integer;
    FuserId: Integer;
    FuserRating: Integer;
    Frate: Integer;
    FrateDate: TXSDateTime;
  public
    destructor Destroy; override;
  published
    property messageId: Integer read FmessageId write FmessageId;
    property topicId: Integer read FtopicId write FtopicId;
    property userId: Integer read FuserId write FuserId;
    property userRating: Integer read FuserRating write FuserRating;
    property rate: Integer read Frate write Frate;
    property rateDate: TXSDateTime read FrateDate write FrateDate;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  JanusModerateInfo = class(TRemotable)
  private
    FmessageId: Integer;
    FtopicId: Integer;
    FuserId: Integer;
    FforumId: Integer;
    Fcreate: TXSDateTime;
  public
    destructor Destroy; override;
  published
    property messageId: Integer read FmessageId write FmessageId;
    property topicId: Integer read FtopicId write FtopicId;
    property userId: Integer read FuserId write FuserId;
    property forumId: Integer read FforumId write FforumId;
    property create: TXSDateTime read Fcreate write Fcreate;
  end;
 
  ArrayOfRequestForumInfo = array of RequestForumInfo;   { "http://rsdn.ru/Janus/" }
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  ChangeRequest = class(TRemotable)
  private
    FuserName: WideString;
    Fpassword: WideString;
    FsubscribedForums: ArrayOfRequestForumInfo;
    FratingRowVersion: TByteDynArray;
    FmessageRowVersion: TByteDynArray;
    FmoderateRowVersion: TByteDynArray;
    FbreakMsgIds: ArrayOfInt;
    FbreakTopicIds: ArrayOfInt;
    FmaxOutput: Integer;
  public
    destructor Destroy; override;
  published
    property userName: WideString read FuserName write FuserName;
    property password: WideString read Fpassword write Fpassword;
    property subscribedForums: ArrayOfRequestForumInfo read FsubscribedForums write FsubscribedForums;
    property ratingRowVersion: TByteDynArray read FratingRowVersion write FratingRowVersion;
    property messageRowVersion: TByteDynArray read FmessageRowVersion write FmessageRowVersion;
    property moderateRowVersion: TByteDynArray read FmoderateRowVersion write FmoderateRowVersion;
    property breakMsgIds: ArrayOfInt read FbreakMsgIds write FbreakMsgIds;
    property breakTopicIds: ArrayOfInt read FbreakTopicIds write FbreakTopicIds;
    property maxOutput: Integer read FmaxOutput write FmaxOutput;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  RequestForumInfo = class(TRemotable)
  private
    FforumId: Integer;
    FisFirstRequest: Boolean;
  published
    property forumId: Integer read FforumId write FforumId;
    property isFirstRequest: Boolean read FisFirstRequest write FisFirstRequest;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  ChangeResponse = class(TRemotable)
  private
    FnewMessages: ArrayOfJanusMessageInfo;
    FnewRating: ArrayOfJanusRatingInfo;
    FnewModerate: ArrayOfJanusModerateInfo;
    FlastRatingRowVersion: TByteDynArray;
    FlastForumRowVersion: TByteDynArray;
    FlastModerateRowVersion: TByteDynArray;
    FuserId: Integer;
  public
    destructor Destroy; override;
  published
    property newMessages: ArrayOfJanusMessageInfo read FnewMessages write FnewMessages;
    property newRating: ArrayOfJanusRatingInfo read FnewRating write FnewRating;
    property newModerate: ArrayOfJanusModerateInfo read FnewModerate write FnewModerate;
    property lastRatingRowVersion: TByteDynArray read FlastRatingRowVersion write FlastRatingRowVersion;
    property lastForumRowVersion: TByteDynArray read FlastForumRowVersion write FlastForumRowVersion;
    property lastModerateRowVersion: TByteDynArray read FlastModerateRowVersion write FlastModerateRowVersion;
    property userId: Integer read FuserId write FuserId;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  ForumRequest = class(TRemotable)
  private
    FuserName: WideString;
    Fpassword: WideString;
    FforumsRowVersion: TByteDynArray;
  published
    property userName: WideString read FuserName write FuserName;
    property password: WideString read Fpassword write Fpassword;
    property forumsRowVersion: TByteDynArray read FforumsRowVersion write FforumsRowVersion;
  end;
 
  ArrayOfJanusForumInfo = array of JanusForumInfo;   { "http://rsdn.ru/Janus/" }
  ArrayOfJanusForumGroupInfo = array of JanusForumGroupInfo;   { "http://rsdn.ru/Janus/" }
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  ForumResponse = class(TRemotable)
  private
    FforumList: ArrayOfJanusForumInfo;
    FgroupList: ArrayOfJanusForumGroupInfo;
    FforumsRowVersion: TByteDynArray;
  public
    destructor Destroy; override;
  published
    property forumList: ArrayOfJanusForumInfo read FforumList write FforumList;
    property groupList: ArrayOfJanusForumGroupInfo read FgroupList write FgroupList;
    property forumsRowVersion: TByteDynArray read FforumsRowVersion write FforumsRowVersion;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  JanusForumInfo = class(TRemotable)
  private
    FforumId: Integer;
    FforumGroupId: Integer;
    FshortForumName: WideString;
    FforumName: WideString;
    Frated: Integer;
    FinTop: Integer;
    FrateLimit: Integer;
  published
    property forumId: Integer read FforumId write FforumId;
    property forumGroupId: Integer read FforumGroupId write FforumGroupId;
    property shortForumName: WideString read FshortForumName write FshortForumName;
    property forumName: WideString read FforumName write FforumName;
    property rated: Integer read Frated write Frated;
    property inTop: Integer read FinTop write FinTop;
    property rateLimit: Integer read FrateLimit write FrateLimit;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  JanusForumGroupInfo = class(TRemotable)
  private
    FforumGroupId: Integer;
    FforumGroupName: WideString;
    FsortOrder: Integer;
  published
    property forumGroupId: Integer read FforumGroupId write FforumGroupId;
    property forumGroupName: WideString read FforumGroupName write FforumGroupName;
    property sortOrder: Integer read FsortOrder write FsortOrder;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  UserRequest = class(TRemotable)
  private
    FuserName: WideString;
    Fpassword: WideString;
    FlastRowVersion: TByteDynArray;
    FmaxOutput: Integer;
  published
    property userName: WideString read FuserName write FuserName;
    property password: WideString read Fpassword write Fpassword;
    property lastRowVersion: TByteDynArray read FlastRowVersion write FlastRowVersion;
    property maxOutput: Integer read FmaxOutput write FmaxOutput;
  end;
 
  ArrayOfJanusUserInfo = array of JanusUserInfo;   { "http://rsdn.ru/Janus/" }
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  UserResponse = class(TRemotable)
  private
    FlastRowVersion: TByteDynArray;
    Fusers: ArrayOfJanusUserInfo;
  public
    destructor Destroy; override;
  published
    property lastRowVersion: TByteDynArray read FlastRowVersion write FlastRowVersion;
    property users: ArrayOfJanusUserInfo read Fusers write Fusers;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  JanusUserInfo = class(TRemotable)
  private
    FuserId: Integer;
    FuserName: WideString;
    FuserNick: WideString;
    FrealName: WideString;
    FpublicEmail: WideString;
    FhomePage: WideString;
    Fspecialization: WideString;
    FwhereFrom: WideString;
    Forigin: WideString;
    FuserClass: Integer;
  published
    property userId: Integer read FuserId write FuserId;
    property userName: WideString read FuserName write FuserName;
    property userNick: WideString read FuserNick write FuserNick;
    property realName: WideString read FrealName write FrealName;
    property publicEmail: WideString read FpublicEmail write FpublicEmail;
    property homePage: WideString read FhomePage write FhomePage;
    property specialization: WideString read Fspecialization write Fspecialization;
    property whereFrom: WideString read FwhereFrom write FwhereFrom;
    property origin: WideString read Forigin write Forigin;
    property userClass: Integer read FuserClass write FuserClass;
  end;
 
  ArrayOfPostMessageInfo = array of PostMessageInfo;   { "http://rsdn.ru/Janus/" }
  ArrayOfPostRatingInfo = array of PostRatingInfo;   { "http://rsdn.ru/Janus/" }
  ArrayOfPostModerateInfo = array of PostModerateInfo;   { "http://rsdn.ru/Janus/" }
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  PostRequest = class(TRemotable)
  private
    FuserName: WideString;
    Fpassword: WideString;
    FwritedMessages: ArrayOfPostMessageInfo;
    Frates: ArrayOfPostRatingInfo;
    Fmoderates: ArrayOfPostModerateInfo;
  public
    destructor Destroy; override;
  published
    property userName: WideString read FuserName write FuserName;
    property password: WideString read Fpassword write Fpassword;
    property writedMessages: ArrayOfPostMessageInfo read FwritedMessages write FwritedMessages;
    property rates: ArrayOfPostRatingInfo read Frates write Frates;
    property moderates: ArrayOfPostModerateInfo read Fmoderates write Fmoderates;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  PostMessageInfo = class(TRemotable)
  private
    FlocalMessageId: Integer;
    FparentId: Integer;
    FforumId: Integer;
    Fsubject: WideString;
    Fmessage_: WideString;
  published
    property localMessageId: Integer read FlocalMessageId write FlocalMessageId;
    property parentId: Integer read FparentId write FparentId;
    property forumId: Integer read FforumId write FforumId;
    property subject: WideString read Fsubject write Fsubject;
    property message_: WideString read Fmessage_ write Fmessage_;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  PostRatingInfo = class(TRemotable)
  private
    FlocalRatingId: Integer;
    FmessageId: Integer;
    Frate: Integer;
  published
    property localRatingId: Integer read FlocalRatingId write FlocalRatingId;
    property messageId: Integer read FmessageId write FmessageId;
    property rate: Integer read Frate write Frate;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  PostModerateInfo = class(TRemotable)
  private
    FLocalModerateId: Integer;
    FMessageId: Integer;
    FModerateAction: ModerateActionType;
    FModerateToForumId: Integer;
    FDescription: WideString;
    FAsModerator: Boolean;
  published
    property LocalModerateId: Integer read FLocalModerateId write FLocalModerateId;
    property MessageId: Integer read FMessageId write FMessageId;
    property ModerateAction: ModerateActionType read FModerateAction write FModerateAction;
    property ModerateToForumId: Integer read FModerateToForumId write FModerateToForumId;
    property Description: WideString read FDescription write FDescription;
    property AsModerator: Boolean read FAsModerator write FAsModerator;
  end;
 
  ArrayOfPostExceptionInfo = array of PostExceptionInfo;   { "http://rsdn.ru/Janus/" }
  ArrayOfRatingExceptionInfo = array of RatingExceptionInfo;   { "http://rsdn.ru/Janus/" }
  ArrayOfModerateExceptionInfo = array of ModerateExceptionInfo;   { "http://rsdn.ru/Janus/" }
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  PostResponse = class(TRemotable)
  private
    FcommitedIds: ArrayOfInt;
    Fexceptions: ArrayOfPostExceptionInfo;
    FcommitedRatingIds: ArrayOfInt;
    FratingExceptions: ArrayOfRatingExceptionInfo;
    FcommitedModerateIds: ArrayOfInt;
    FmoderateExceptions: ArrayOfModerateExceptionInfo;
  public
    destructor Destroy; override;
  published
    property commitedIds: ArrayOfInt read FcommitedIds write FcommitedIds;
    property exceptions: ArrayOfPostExceptionInfo read Fexceptions write Fexceptions;
    property commitedRatingIds: ArrayOfInt read FcommitedRatingIds write FcommitedRatingIds;
    property ratingExceptions: ArrayOfRatingExceptionInfo read FratingExceptions write FratingExceptions;
    property commitedModerateIds: ArrayOfInt read FcommitedModerateIds write FcommitedModerateIds;
    property moderateExceptions: ArrayOfModerateExceptionInfo read FmoderateExceptions write FmoderateExceptions;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  PostExceptionInfo = class(TRemotable)
  private
    Fexception: WideString;
    FlocalMessageId: Integer;
    Finfo: WideString;
  published
    property exception: WideString read Fexception write Fexception;
    property localMessageId: Integer read FlocalMessageId write FlocalMessageId;
    property info: WideString read Finfo write Finfo;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  RatingExceptionInfo = class(TRemotable)
  private
    Fexception: WideString;
    FlocalRatingId: Integer;
    Finfo: WideString;
  published
    property exception: WideString read Fexception write Fexception;
    property localRatingId: Integer read FlocalRatingId write FlocalRatingId;
    property info: WideString read Finfo write Finfo;
  end;
 
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // ************************************************************************ //
  ModerateExceptionInfo = class(TRemotable)
  private
    FExceptionMessage: WideString;
    FLocalModerateId: Integer;
    FInfo: WideString;
  published
    property ExceptionMessage: WideString read FExceptionMessage write FExceptionMessage;
    property LocalModerateId: Integer read FLocalModerateId write FLocalModerateId;
    property Info: WideString read FInfo write FInfo;
  end;
 
 
  // ************************************************************************ //
  // Namespace : http://rsdn.ru/Janus/
  // soapAction: http://rsdn.ru/Janus/%operationName%
  // transport : http://schemas.xmlsoap.org/soap/http
  // binding   : JanusATSoap
  // service   : JanusAT
  // port      : JanusATSoap
  // URL       : http://www.rsdn.ru/ws/janusAT.asmx
  // ************************************************************************ //
  JanusATSoap = interface(IInvokable)
  ['{F931A43E-480A-68B9-5A5F-E770117BFE0C}']
    function  GetTopicByMessage(const topicRequest: TopicRequest): TopicResponse; stdcall;
    function  GetNewData(const changeRequest: ChangeRequest): ChangeResponse; stdcall;
    function  GetForumList(const forumRequest: ForumRequest): ForumResponse; stdcall;
    function  GetNewUsers(const userRequest: UserRequest): UserResponse; stdcall;
    procedure PostChange(const postRequest: PostRequest); stdcall;
    function  PostChangeCommit: PostResponse; stdcall;
    procedure Check; stdcall;
  end;
 
function GetJanusATSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): JanusATSoap;
 
 
implementation
 
function GetJanusATSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): JanusATSoap;
const
  defWSDL = 'http://www.rsdn.ru/ws/janusAT.asmx?WSDL';
  defURL  = 'http://www.rsdn.ru/ws/janusAT.asmx';
  defSvc  = 'JanusAT';
  defPrt  = 'JanusATSoap';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as JanusATSoap);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;
 
 
destructor TopicResponse.Destroy;
var
  I: Integer;
begin
  for I := 0 to Length(FMessages)-1 do
    if Assigned(FMessages[I]) then
      FMessages[I].Free;
  SetLength(FMessages, 0);
  for I := 0 to Length(FRating)-1 do
    if Assigned(FRating[I]) then
      FRating[I].Free;
  SetLength(FRating, 0);
  for I := 0 to Length(FModerate)-1 do
    if Assigned(FModerate[I]) then
      FModerate[I].Free;
  SetLength(FModerate, 0);
  inherited Destroy;
end;
 
destructor JanusMessageInfo.Destroy;
begin
  if Assigned(FmessageDate) then
    FmessageDate.Free;
  if Assigned(FupdateDate) then
    FupdateDate.Free;
  if Assigned(FlastModerated) then
    FlastModerated.Free;
  inherited Destroy;
end;
 
destructor JanusRatingInfo.Destroy;
begin
  if Assigned(FrateDate) then
    FrateDate.Free;
  inherited Destroy;
end;
 
destructor JanusModerateInfo.Destroy;
begin
  if Assigned(Fcreate) then
    Fcreate.Free;
  inherited Destroy;
end;
 
destructor ChangeRequest.Destroy;
var
  I: Integer;
begin
  for I := 0 to Length(FsubscribedForums)-1 do
    if Assigned(FsubscribedForums[I]) then
      FsubscribedForums[I].Free;
  SetLength(FsubscribedForums, 0);
  inherited Destroy;
end;
 
destructor ChangeResponse.Destroy;
var
  I: Integer;
begin
  for I := 0 to Length(FnewMessages)-1 do
    if Assigned(FnewMessages[I]) then
      FnewMessages[I].Free;
  SetLength(FnewMessages, 0);
  for I := 0 to Length(FnewRating)-1 do
    if Assigned(FnewRating[I]) then
      FnewRating[I].Free;
  SetLength(FnewRating, 0);
  for I := 0 to Length(FnewModerate)-1 do
    if Assigned(FnewModerate[I]) then
      FnewModerate[I].Free;
  SetLength(FnewModerate, 0);
  inherited Destroy;
end;
 
destructor ForumResponse.Destroy;
var
  I: Integer;
begin
  for I := 0 to Length(FforumList)-1 do
    if Assigned(FforumList[I]) then
      FforumList[I].Free;
  SetLength(FforumList, 0);
  for I := 0 to Length(FgroupList)-1 do
    if Assigned(FgroupList[I]) then
      FgroupList[I].Free;
  SetLength(FgroupList, 0);
  inherited Destroy;
end;
 
destructor UserResponse.Destroy;
var
  I: Integer;
begin
  for I := 0 to Length(Fusers)-1 do
    if Assigned(Fusers[I]) then
      Fusers[I].Free;
  SetLength(Fusers, 0);
  inherited Destroy;
end;
 
destructor PostRequest.Destroy;
var
  I: Integer;
begin
  for I := 0 to Length(FwritedMessages)-1 do
    if Assigned(FwritedMessages[I]) then
      FwritedMessages[I].Free;
  SetLength(FwritedMessages, 0);
  for I := 0 to Length(Frates)-1 do
    if Assigned(Frates[I]) then
      Frates[I].Free;
  SetLength(Frates, 0);
  for I := 0 to Length(Fmoderates)-1 do
    if Assigned(Fmoderates[I]) then
      Fmoderates[I].Free;
  SetLength(Fmoderates, 0);
  inherited Destroy;
end;
 
destructor PostResponse.Destroy;
var
  I: Integer;
begin
  for I := 0 to Length(Fexceptions)-1 do
    if Assigned(Fexceptions[I]) then
      Fexceptions[I].Free;
  SetLength(Fexceptions, 0);
  for I := 0 to Length(FratingExceptions)-1 do
    if Assigned(FratingExceptions[I]) then
      FratingExceptions[I].Free;
  SetLength(FratingExceptions, 0);
  for I := 0 to Length(FmoderateExceptions)-1 do
    if Assigned(FmoderateExceptions[I]) then
      FmoderateExceptions[I].Free;
  SetLength(FmoderateExceptions, 0);
  inherited Destroy;
end;
 
initialization
  InvRegistry.RegisterInterface(TypeInfo(JanusATSoap), 'http://rsdn.ru/Janus/', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(JanusATSoap), 'http://rsdn.ru/Janus/%operationName%');
  RemClassRegistry.RegisterXSInfo(TypeInfo(UserRole), 'http://rsdn.ru/Janus/', 'UserRole');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ModerateActionType), 'http://rsdn.ru/Janus/', 'ModerateActionType');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfInt), 'http://rsdn.ru/Janus/', 'ArrayOfInt');
  RemClassRegistry.RegisterXSClass(TopicRequest, 'http://rsdn.ru/Janus/', 'TopicRequest');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfJanusMessageInfo), 'http://rsdn.ru/Janus/', 'ArrayOfJanusMessageInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfJanusRatingInfo), 'http://rsdn.ru/Janus/', 'ArrayOfJanusRatingInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfJanusModerateInfo), 'http://rsdn.ru/Janus/', 'ArrayOfJanusModerateInfo');
  RemClassRegistry.RegisterXSClass(TopicResponse, 'http://rsdn.ru/Janus/', 'TopicResponse');
  RemClassRegistry.RegisterXSClass(JanusMessageInfo, 'http://rsdn.ru/Janus/', 'JanusMessageInfo');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(JanusMessageInfo), 'message_', 'message');
  RemClassRegistry.RegisterXSClass(JanusRatingInfo, 'http://rsdn.ru/Janus/', 'JanusRatingInfo');
  RemClassRegistry.RegisterXSClass(JanusModerateInfo, 'http://rsdn.ru/Janus/', 'JanusModerateInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfRequestForumInfo), 'http://rsdn.ru/Janus/', 'ArrayOfRequestForumInfo');
  RemClassRegistry.RegisterXSClass(ChangeRequest, 'http://rsdn.ru/Janus/', 'ChangeRequest');
  RemClassRegistry.RegisterXSClass(RequestForumInfo, 'http://rsdn.ru/Janus/', 'RequestForumInfo');
  RemClassRegistry.RegisterXSClass(ChangeResponse, 'http://rsdn.ru/Janus/', 'ChangeResponse');
  RemClassRegistry.RegisterXSClass(ForumRequest, 'http://rsdn.ru/Janus/', 'ForumRequest');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfJanusForumInfo), 'http://rsdn.ru/Janus/', 'ArrayOfJanusForumInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfJanusForumGroupInfo), 'http://rsdn.ru/Janus/', 'ArrayOfJanusForumGroupInfo');
  RemClassRegistry.RegisterXSClass(ForumResponse, 'http://rsdn.ru/Janus/', 'ForumResponse');
  RemClassRegistry.RegisterXSClass(JanusForumInfo, 'http://rsdn.ru/Janus/', 'JanusForumInfo');
  RemClassRegistry.RegisterXSClass(JanusForumGroupInfo, 'http://rsdn.ru/Janus/', 'JanusForumGroupInfo');
  RemClassRegistry.RegisterXSClass(UserRequest, 'http://rsdn.ru/Janus/', 'UserRequest');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfJanusUserInfo), 'http://rsdn.ru/Janus/', 'ArrayOfJanusUserInfo');
  RemClassRegistry.RegisterXSClass(UserResponse, 'http://rsdn.ru/Janus/', 'UserResponse');
  RemClassRegistry.RegisterXSClass(JanusUserInfo, 'http://rsdn.ru/Janus/', 'JanusUserInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfPostMessageInfo), 'http://rsdn.ru/Janus/', 'ArrayOfPostMessageInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfPostRatingInfo), 'http://rsdn.ru/Janus/', 'ArrayOfPostRatingInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfPostModerateInfo), 'http://rsdn.ru/Janus/', 'ArrayOfPostModerateInfo');
  RemClassRegistry.RegisterXSClass(PostRequest, 'http://rsdn.ru/Janus/', 'PostRequest');
  RemClassRegistry.RegisterXSClass(PostMessageInfo, 'http://rsdn.ru/Janus/', 'PostMessageInfo');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(PostMessageInfo), 'message_', 'message');
  RemClassRegistry.RegisterXSClass(PostRatingInfo, 'http://rsdn.ru/Janus/', 'PostRatingInfo');
  RemClassRegistry.RegisterXSClass(PostModerateInfo, 'http://rsdn.ru/Janus/', 'PostModerateInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfPostExceptionInfo), 'http://rsdn.ru/Janus/', 'ArrayOfPostExceptionInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfRatingExceptionInfo), 'http://rsdn.ru/Janus/', 'ArrayOfRatingExceptionInfo');
 
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfModerateExceptionInfo), 'http://rsdn.ru/Janus/', 'ArrayOfModerateExceptionInfo');
  RemClassRegistry.RegisterXSClass(PostResponse, 'http://rsdn.ru/Janus/', 'PostResponse');
  RemClassRegistry.RegisterXSClass(PostExceptionInfo, 'http://rsdn.ru/Janus/', 'PostExceptionInfo');
  RemClassRegistry.RegisterXSClass(RatingExceptionInfo, 'http://rsdn.ru/Janus/', 'RatingExceptionInfo');
  RemClassRegistry.RegisterXSClass(ModerateExceptionInfo, 'http://rsdn.ru/Janus/', 'ModerateExceptionInfo');
 
end.