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 uRODL, uRODLToXML, uROServer, uROClasses, SysUtils, Classes; function GetResourceAsString(aName: string): string; function GetRodlServerInfo(const RootUrl: string; aRodl: TRODLLibrary; aDispatchers: TROMessageDispatchers): string; function GetRodlStyleSheet: string; function GetRodlWithStyleSheet(aRodl: TRODLLibrary; aStyleSheetUrl: string): String; procedure GetRodlFavIcon(dest: TStream); function GetRodlCss: string; function GetVersion: string; implementation uses uROHTTPDispatch {$IFDEF MSWINDOWS},Windows, ShellAPI {$ENDIF} {$IFDEF LINUX},Types, Libc {$ENDIF}; {$R uROHtmlServerInfo.res} type TVersion = record Major : word; Minor : word; Release : word; Build : word; end; function GetResourceAsString(aName: string): string; var lRes: TResourceStream; begin lRes := TResourceStream.Create(HInstance, aName, RT_RCDATA); try SetLength(Result, lRes.Size); lRes.Read(Result[1], Length(Result)); finally lRes.Free; end; end; function GetRodlCss: string; begin result := GetResourceAsString('RemObjectsHtmlServerDocumentationCss'); end; function GetRodlWithStyleSheet( aRodl: TRODLLibrary; aStyleSheetUrl: string): String; var lRodlToXml: TRODLToXML; begin lRodlToXml := TRODLToXML.Create(nil,''); try lRodlToXml.StyleSheet := aStyleSheetUrl; lRodlToXml.Convert(aRodl); Result := lRodlToXml.Buffer.Text; finally lRodlToXml.Free; end; end; function GetRodlServerInfo(const RootUrl: string; aRodl: TRODLLibrary; aDispatchers: TROMessageDispatchers): string; var lUrl, lPath, s: string; i: Integer; begin s := ''; lUrl := RootUrl; if lUrl = '' then lUrl := '/' else if lUrl[Length(lUrl)] <> '/' then lUrl := lUrl + '/'; Result := GetResourceAsString('RemObjectsHtmlServerInfo'); Result := StringReplace(Result, '%BASEPATH%', lUrl, [rfReplaceall]); Result := StringReplace(Result, '%NAME%', aRodl.Name, [rfReplaceall]); Result := StringReplace(Result, '%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 + '