diff --git a/restemplate.lpr b/restemplate.lpr index eb584a1..3e162df 100644 --- a/restemplate.lpr +++ b/restemplate.lpr @@ -26,7 +26,7 @@ uses SysUtils, Classes, strutils, IniFiles, {$ifdef use_synapse}httpsend, ssl_openssl,{$endif} {$ifdef use_fclweb}fphttpclient,{$endif} - JTemplate; + JTemplate, fpjson, jsonparser; var data: TextFile; @@ -40,6 +40,7 @@ var configDir, templateDir: String; templateFile, templateName: String; sessionIni: TIniFile; + beautify: Boolean; procedure CmdAskUser(AName: String); var @@ -92,6 +93,8 @@ var {$ifdef use_fclweb} request, response: TStream; {$endif} + jsonParser: TJSONParser; + jsonData: TJSONData; begin parser.Content := AURL; parser.Replace; @@ -150,9 +153,21 @@ begin for s in http.ResponseHeaders do writeln(' ', s); writeln; + response.Position := 0; - content.LoadFromStream(response); - writeln(content.Text); + + if beautify and (Pos('application/json', http.GetHeader(http.ResponseHeaders, 'Content-Type')) > 0) then + begin + jsonParser := TJSONParser.Create(response); + jsonData := jsonParser.Parse; + writeln(jsonData.FormatJSON); + jsonData.Free; + jsonParser.Free; + end else + begin + content.LoadFromStream(response); + writeln(content.Text); + end; response.Free; request.Free; @@ -199,6 +214,11 @@ begin Result := True; CmdBasicAuth(Copy(ALine, 10, Length(ALine))); end else + if ALine = 'Beautify' then + begin + Result := True; + beautify := True; + end else if AnsiStartsStr('Call ', ALine) then begin Result := True; @@ -255,6 +275,7 @@ begin parser := TJTemplateParser.Create; content := TStringList.Create; + beautify := False; //By default, we don't want to manipulate output. {$ifdef use_synapse} http := THTTPSend.Create;