瀏覽代碼

Now using AppData for Config
Bugfixes for extra Headers and Auth

Simon Grossenbacher 8 年之前
父節點
當前提交
4df7c5da02
共有 7 個文件被更改,包括 85 次插入39 次删除
  1. 0 18
      AppConfig.json
  2. 2 2
      Example Config.rdproj
  3. 二進制
      RESTDebugger.exe
  4. 1 0
      prj/RESTDebugger.dproj
  5. 6 6
      prj/RESTDebugger.stat
  6. 6 4
      src/_frmMain.dfm
  7. 70 9
      src/_frmMain.pas

+ 0 - 18
AppConfig.json

@@ -1,18 +0,0 @@
-{
-	"Dialogs": {
-		"LastOpenDir": "C:\\dev\\RESTDebugger\\",
-		"LastSaveDir": "C:\\dev\\ERPData\\"
-	},
-	"Project": {
-		"AutoOpenLastUsed": true,
-		"LastUsed": "C:\\dev\\ERPData\\ERPData-Webservices.rdproj",
-		"AutoSaveProject": true
-	},
-	"MainWindowPos": {
-		"Left": 1494,
-		"Top": 321,
-		"Width": 754,
-		"Height": 930,
-		"StayOnTop": false
-	}
-}

+ 2 - 2
Example Config.rdproj

@@ -1,7 +1,7 @@
 {
 	"Presets": {
 		"Presets": "GET: Simple GET\r\nGET: GET Extra Headers\r\nGET: Use Basic Auth Example\r\nGET: Example URL Parameters\r\n",
-		"LastUsed": 3
+		"LastUsed": 0
 	},
 	"Preset_0": {
 		"BaseURL": "https://httpbin.org/get",
@@ -26,7 +26,7 @@
 		"AuthPassword": ""
 	},
 	"Preset_2": {
-		"BaseURL": "https://httpbin.org/basic-auth/user/pwd",
+		"BaseURL": "https://httpbin.org/basic-auth/user/pwd_",
 		"Method": 0,
 		"URLParams": "",
 		"PostData": "",

二進制
RESTDebugger.exe


+ 1 - 0
prj/RESTDebugger.dproj

@@ -113,6 +113,7 @@
         <DCC_RemoteDebug>false</DCC_RemoteDebug>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
         <VerInfo_Keys>FileVersion=1.0.5.15;ProductVersion=1.0.0.0;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
         <VerInfo_Build>15</VerInfo_Build>
         <VerInfo_Release>5</VerInfo_Release>

+ 6 - 6
prj/RESTDebugger.stat

@@ -1,10 +1,10 @@
 [Stats]
-EditorSecs=8396
-DesignerSecs=2582
-InspectorSecs=1633
-CompileSecs=254576
-OtherSecs=2851
+EditorSecs=9269
+DesignerSecs=2733
+InspectorSecs=1734
+CompileSecs=311587
+OtherSecs=3059
 StartTime=27.10.2016 18:27:37
 RealKeys=0
 EffectiveKeys=0
-DebugSecs=5905
+DebugSecs=6683

+ 6 - 4
src/_frmMain.dfm

@@ -32,6 +32,8 @@ object frmMain: TfrmMain
     Color = clWhite
     ParentBackground = False
     TabOrder = 2
+    ExplicitLeft = -2
+    ExplicitTop = 91
     object Label1: TLabel
       Left = 25
       Top = 31
@@ -953,10 +955,10 @@ object frmMain: TfrmMain
       DockedLeft = 0
       DockedTop = 0
       DockingStyle = dsTop
-      FloatLeft = 692
-      FloatTop = 134
-      FloatClientWidth = 51
-      FloatClientHeight = 24
+      FloatLeft = 1881
+      FloatTop = 421
+      FloatClientWidth = 168
+      FloatClientHeight = 21
       IsMainMenu = True
       ItemLinks = <
         item

+ 70 - 9
src/_frmMain.pas

@@ -144,7 +144,9 @@ type
     FIsTempProjectLoaded: Boolean;
     FTempProjectFile: string;
     FActiveEditor: TBCEditor;
+    FRoamingSavePath: string;
     function GetTempProjectFile: string;
+    function GetAppVersion: string;
     procedure UpdateFullURL;
     procedure LoadProject;
     procedure SaveProject;
@@ -165,7 +167,7 @@ implementation
 
 {$R *.dfm}
 
-uses System.NetEncoding, System.UITypes, _EncryptStr, JsonDataObjects, Clipbrd, IdGlobal;
+uses System.NetEncoding, System.UITypes, _EncryptStr, JsonDataObjects, Clipbrd, IdGlobal, System.IOUtils;
 
 procedure TfrmMain.tbbtnRunClick(Sender: TObject);
 begin
@@ -420,7 +422,7 @@ end;
 
 procedure TfrmMain.dxBarButton7Click(Sender: TObject);
 begin
-  MessageDlg('Simnet REST Debugger', mtInformation, [mbOK], 0);
+  MessageDlg('Simnet REST Debugger' + #13#10 + GetAppVersion, mtInformation, [mbOK], 0);
 end;
 
 procedure TfrmMain.dxBarSubItem3Popup(Sender: TObject);
@@ -528,7 +530,10 @@ end;
 
 procedure TfrmMain.FormCreate(Sender: TObject);
 begin
-  FMainConfig := TJSONConfig.Create(ExtractFilePath(ParamStr(0)) + 'AppConfig.json');
+  FRoamingSavePath := IncludeTrailingPathDelimiter(TPath.GetHomePath) + 'Simnet\RESTDebugger\';
+  ForceDirectories(FRoamingSavePath);
+
+  FMainConfig := TJSONConfig.Create(FRoamingSavePath + 'AppConfig.json');
   FActiveProject := '';
   FActivePreset := '';
 
@@ -549,23 +554,34 @@ begin
 
   FActiveEditor := nil;
 
+  HTTP.Request.UserAgent := 'Simnet REST Debugger/' + GetAppVersion;
 
-  if ParamStr(1) <> '' then
+  if (not FMainConfig.ReadBool('Main', 'FirstStartShown')) and (FileExists(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'Example Config.rdproj')) then
   begin
-    FActiveProject := ParamStr(1);
+    FActiveProject := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'Example Config.rdproj';
     FIsTempProjectLoaded := False;
+    FMainConfig.WriteBool('Main', 'FirstStartShown', True);
+    FMainConfig.WriteString('Project', 'LastUsed', FActiveProject);
   end
   else
   begin
-    if (FMainConfig.ReadBool('Project', 'AutoOpenLastUsed')) and (FileExists(FMainConfig.ReadString('Project', 'LastUsed'))) then
+    if ParamStr(1) <> '' then
     begin
-      FActiveProject := FMainConfig.ReadString('Project', 'LastUsed');
+      FActiveProject := ParamStr(1);
       FIsTempProjectLoaded := False;
     end
     else
     begin
-      FActiveProject := GetTempProjectFile;
-      FIsTempProjectLoaded := True;
+      if (FMainConfig.ReadBool('Project', 'AutoOpenLastUsed', True)) and (FileExists(FMainConfig.ReadString('Project', 'LastUsed'))) then
+      begin
+        FActiveProject := FMainConfig.ReadString('Project', 'LastUsed');
+        FIsTempProjectLoaded := False;
+      end
+      else
+      begin
+        FActiveProject := GetTempProjectFile;
+        FIsTempProjectLoaded := True;
+      end;
     end;
   end;
 
@@ -611,6 +627,34 @@ begin
   dxStatusBar.Panels[1].Text := '';
 end;
 
+function TfrmMain.GetAppVersion: string;
+var
+  VerInfoSize: DWORD;
+  VerInfo: Pointer;
+  VerValueSize: DWORD;
+  VerValue: PVSFixedFileInfo;
+  dmy: DWORD;
+begin
+  Result := '';
+  VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), dmy);
+  if VerInfoSize = 0 then Exit;
+
+  GetMem(VerInfo, VerInfoSize);
+  try
+    GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
+    VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
+    with VerValue^ do
+    begin
+      Result := IntToStr(dwFileVersionMS shr 16);
+      Result := Result + '.' + IntToStr(dwFileVersionMS and $FFFF);
+      Result := Result + '.' + IntToStr(dwFileVersionLS shr 16);
+      Result := Result + '.' + IntToStr(dwFileVersionLS and $FFFF);
+    end;
+  finally
+    FreeMem(VerInfo, VerInfoSize);
+  end;
+end;
+
 function TfrmMain.GetTempProjectFile: string;
 var
   iSize: Integer;
@@ -779,8 +823,10 @@ begin
   EditorContent.Lines.Clear;
   EditorResponseHeaders.Lines.Clear;
 
+  Screen.Cursor := crHourGlass;
   tick := GetTickCount;
   try
+    HTTP.Request.CustomHeaders.Clear;
     HTTP.Request.CustomHeaders.AddStrings(EditorExtraHeaders.Lines);
 
     if chkUseBasicAuth.Checked then
@@ -788,6 +834,12 @@ begin
       HTTP.Request.Username := edtAuthUsername.Text;
       HTTP.Request.Password := edtAuthPassword.Text;
       HTTP.Request.BasicAuthentication := True;
+    end
+    else
+    begin
+      HTTP.Request.BasicAuthentication := False;
+      HTTP.Request.Username := '';
+      HTTP.Request.Password := '';
     end;
 
     if comboMethod.ItemIndex = 0 then
@@ -795,6 +847,10 @@ begin
       // GET
       try
         dmy := HTTP.Get(edtFullURL.Text);
+        if HTTP.ResponseCode <> 200 then
+        begin
+          MessageDlg(HTTP.ResponseText, mtError, [mbOK], 0);
+        end;
       except
         on E: Exception do
         begin
@@ -811,6 +867,10 @@ begin
         HTTP.Request.ContentType := comboPostContentType.Text;
         try
           dmy := HTTP.Post(edtFullURL.Text, strstream);
+          if HTTP.ResponseCode <> 200 then
+          begin
+            MessageDlg(HTTP.ResponseText, mtError, [mbOK], 0);
+          end;
         except
           on E: Exception do
           begin
@@ -826,6 +886,7 @@ begin
     EditorResponseHeaders.Lines.Text := HTTP.Response.RawHeaders.Text;
   finally
     dxStatusBar.Panels[1].Text := FormatFloat('Response Time: 0, ms', GetTickCount - tick);
+    Screen.Cursor := crDefault;
   end;
 end;