{ This file is part of restemplate. Copyright (C) 2015 Andreas Schneider restemplate is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. sqlvision is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with restemplate. If not, see . } program restemplate; uses SysUtils, Classes, strutils, JTemplate, httpsend; var data: TextFile; line: String; parser: TJTemplateParser; http: THTTPSend; method: String; content: TStringList; commandMode: Boolean; procedure CmdAskUser(AName: String); var value: String; begin Write(AName, ': '); ReadLn(value); parser.Fields.Add(AName, value); end; procedure CmdHeader(AHeader: String); begin parser.Content := AHeader; parser.Replace; http.Headers.Add(parser.Content); end; procedure CmdCall(AURL: String); var s: String; begin parser.Content := AURL; parser.Replace; writeln('Calling ', parser.Content); if content.Count > 0 then content.SaveToStream(http.Document); if http.HTTPMethod(method, parser.Content) then begin writeln; writeln('Status: ', http.ResultCode); writeln; writeln('Headers:'); for s in http.Headers do writeln(' ', s); writeln; content.LoadFromStream(http.Document); writeln(content.Text); end else writeln('FAILED !!!'); end; function ProcessCommand(ALine: String): Boolean; begin Result := False; if AnsiStartsStr('Ask ', ALine) then begin Result := True; CmdAskUser(Copy(ALine, 5, Length(ALine))); end else if AnsiStartsStr('Header ', ALine) then begin Result := True; CmdHeader(Copy(ALine, 8, Length(ALine))); end else if AnsiStartsStr('Method ', ALine) then begin Result := True; method := Copy(ALine, 8, Length(ALine)); end else if AnsiStartsStr('Call ', ALine) then begin Result := True; CmdCall(Copy(ALine, 6, Length(ALine))); end; end; begin AssignFile(data, ParamStr(1)); Reset(data); parser := TJTemplateParser.Create; http := THTTPSend.Create; content := TStringList.Create; commandMode := True; while not EOF(data) do begin ReadLn(data, line); if commandMode and (line <> '') and not ProcessCommand(line) then commandMode := False; if not commandMode then content.Add(line); end; parser.Free; http.Free; content.Free; CloseFile(data); end.