unit uROHtmlServerInfo; {----------------------------------------------------------------------------} { RemObjects SDK Library - Core Library } { } { compiler: Delphi 5 and up, Kylix 2 and up } { platform: Win32, Linux } { } { (c)opyright RemObjects Software. all rights reserved. } { } { Using this code requires a valid license of the RemObjects SDK } { which can be obtained at http://www.remobjects.com. } {----------------------------------------------------------------------------} {$I RemObjects.inc} interface uses {$IFDEF FPC}LResources,{$ENDIF} uRODLToXML, uRODL, uROServer, {uROClasses, }SysUtils, Classes; function GetResourceAsString(aName: string): Ansistring; function GetRodlServerInfo(const RootUrl: string; aRodl: TRODLLibrary; aDispatchers: TROMessageDispatchers): Ansistring; function GetRodlStyleSheet: Ansistring; function GetRodlWithStyleSheet(aRodl: TRODLLibrary; aStyleSheetUrl: string): AnsiString; procedure GetRodlFavIcon(dest: TStream); function GetRodlCss: Ansistring; function GetVersion: string; implementation uses {$IFDEF MSWINDOWS}Windows, {$ENDIF} uROHTTPDispatch; {$IFNDEF FPC} {$R uROHtmlServerInfo.res} {$ENDIF} type TVersion = record Major : word; Minor : word; Release : word; Build : word; end; function GetResourceAsString(aName: string): Ansistring; var lRes: TResourceStream; begin lRes := TResourceStream.Create(HInstance, aName, RT_RCDATA); try SetLength(Result, lRes.Size); lRes.Read(pointer(Result)^, Length(Result)); finally lRes.Free; end; end; function GetRodlCss: Ansistring; begin result := GetResourceAsString('RemObjectsHtmlServerDocumentationCss'); end; function GetRodlWithStyleSheet( aRodl: TRODLLibrary; aStyleSheetUrl: string): AnsiString; var lRodlToXml: TRODLToXML; begin lRodlToXml := TRODLToXML.Create(nil, ''); try lRodlToXml.StyleSheet := aStyleSheetUrl; lRodlToXml.Convert(aRodl); Result := {$IFDEF UNICODE}UTF8Encode{$ENDIF} (lRodlToXml.Buffer.Text); finally lRodlToXml.Free; end; end; function GetRodlServerInfo(const RootUrl: string; aRodl: TRODLLibrary; aDispatchers: TROMessageDispatchers): Ansistring; var lUrl, lPath, s, r: string; i: Integer; begin s := ''; lUrl := RootUrl; if lUrl = '' then lUrl := '/' else if lUrl[Length(lUrl)] <> '/' then lUrl := lUrl + '/'; R := {$IFDEF UNICODE}UTF8ToString{$ENDIF} (GetResourceAsString('RemObjectsHtmlServerInfo')); R := StringReplace(R, '%BASEPATH%', lUrl, [rfReplaceall]); R := StringReplace(R, '%NAME%', aRodl.Name, [rfReplaceall]); R := StringReplace(R, '%DOC%', aRodl.Documentation, [rfReplaceall]); for i := 0 to aDispatchers.Count -1 do begin lPath := TROHTTPDispatcher(aDispatchers[i]).PathInfo; if lPath = '' then continue; if lPath[1] = '/' then Delete(lPath, 1, 1); s := s + '