From 0e04761fa9e5547b5eaea73ce8e58521e3ba9688 Mon Sep 17 00:00:00 2001 From: p-samuel <53358247+p-samuel@users.noreply.github.com> Date: Mon, 9 Jan 2023 23:08:48 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20Demos=20&=20Tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/publisher/ConsolePublisher.dproj | 4 +- .../subscriber/ConsoleSubscriber.dproj | 4 +- sample/{lib => openssl}/README.md | 0 sample/{lib => openssl}/lib.zip | Bin sample/vcl/publisher/Ntfy-54x.ico | Bin 0 -> 10366 bytes sample/vcl/publisher/VCLPublisher.dproj | 16 ++- sample/vcl/publisher/VCLPublisher.res | Bin 321960 -> 222768 bytes sample/vcl/publisher/VCLPublisher_Icon.ico | Bin 0 -> 10366 bytes sample/vcl/publisher/assets/ntfy.png | Bin 3627 -> 0 bytes sample/vcl/publisher/src/View.Main.dfm | 2 +- sample/vcl/subscriber/Ntfy-54x.ico | Bin 0 -> 10366 bytes sample/vcl/subscriber/VCLSubscriber.dproj | 16 ++- sample/vcl/subscriber/VCLSubscriber.res | Bin 321960 -> 222768 bytes .../src/Example.Push.Notifications.pas | 2 +- sample/vcl/subscriber/src/View.Main.dfm | 116 +++++++++++------- sample/vcl/subscriber/src/View.Main.pas | 19 ++- tests/NtfyForDelphiTests.dproj | 5 +- tests/README.md | 2 +- tests/bin/ntfy-31.12.2022.txt | 13 -- tests/src/Test.Attachments.pas | 2 +- 20 files changed, 124 insertions(+), 77 deletions(-) rename sample/{lib => openssl}/README.md (100%) rename sample/{lib => openssl}/lib.zip (100%) create mode 100644 sample/vcl/publisher/Ntfy-54x.ico create mode 100644 sample/vcl/publisher/VCLPublisher_Icon.ico delete mode 100644 sample/vcl/publisher/assets/ntfy.png create mode 100644 sample/vcl/subscriber/Ntfy-54x.ico delete mode 100644 tests/bin/ntfy-31.12.2022.txt diff --git a/sample/console/publisher/ConsolePublisher.dproj b/sample/console/publisher/ConsolePublisher.dproj index 9a22f94..e1238e7 100644 --- a/sample/console/publisher/ConsolePublisher.dproj +++ b/sample/console/publisher/ConsolePublisher.dproj @@ -50,8 +50,8 @@ true - .\lib - .\bin + ..\..\..\lib + ..\..\..\bin false false false diff --git a/sample/console/subscriber/ConsoleSubscriber.dproj b/sample/console/subscriber/ConsoleSubscriber.dproj index 5afc157..c7144f5 100644 --- a/sample/console/subscriber/ConsoleSubscriber.dproj +++ b/sample/console/subscriber/ConsoleSubscriber.dproj @@ -50,8 +50,8 @@ true - .\lib - .\bin + ..\..\..\lib + ..\..\..\bin false false false diff --git a/sample/lib/README.md b/sample/openssl/README.md similarity index 100% rename from sample/lib/README.md rename to sample/openssl/README.md diff --git a/sample/lib/lib.zip b/sample/openssl/lib.zip similarity index 100% rename from sample/lib/lib.zip rename to sample/openssl/lib.zip diff --git a/sample/vcl/publisher/Ntfy-54x.ico b/sample/vcl/publisher/Ntfy-54x.ico new file mode 100644 index 0000000000000000000000000000000000000000..a409f417cc6d4b8a9ee889dec1673b74948e8466 GIT binary patch literal 10366 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 V&t*{bwi0c_g^iK@Ts%*;|39WcdAR@p literal 0 HcmV?d00001 diff --git a/sample/vcl/publisher/VCLPublisher.dproj b/sample/vcl/publisher/VCLPublisher.dproj index 789fceb..e9445ca 100644 --- a/sample/vcl/publisher/VCLPublisher.dproj +++ b/sample/vcl/publisher/VCLPublisher.dproj @@ -46,8 +46,8 @@ true - .\lib - .\bin + ..\..\..\lib + ..\..\..\bin false false false @@ -68,9 +68,10 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 + VCLPublisher_Icon.ico $(BDS)\bin\default_app.manifest + C:\Users\PRG1\Pictures\Ntfy.png + C:\Users\PRG1\Pictures\Ntfy.png DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;bindcompvclsmp;tethering;bindcompvclwinx;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;FireDAC;vcltouch;vcldb;bindcompfmx;FireDACSqliteDriver;FireDACPgDriver;inetdb;soaprtl;DbxCommonDriver;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;vcledge;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;FireDACCommon;IndyIPClient;bindcompvcl;RESTBackendComponents;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;vclie;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;FireDACCommonODBC;FireDACCommonDriver;inet;fmxase;$(DCC_UsePackage) @@ -133,6 +134,13 @@ + + + Assets\ + Logo44x44.png + true + + VCLPublisher.exe diff --git a/sample/vcl/publisher/VCLPublisher.res b/sample/vcl/publisher/VCLPublisher.res index 234993f1b364009000edf799260585277c3764f8..720799d2bdef28387e6444a505f1254411193118 100644 GIT binary patch delta 8776 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 diff --git a/sample/vcl/publisher/VCLPublisher_Icon.ico b/sample/vcl/publisher/VCLPublisher_Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a409f417cc6d4b8a9ee889dec1673b74948e8466 GIT binary patch literal 10366 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 V&t*{bwi0c_g^iK@Ts%*;|39WcdAR@p literal 0 HcmV?d00001 diff --git a/sample/vcl/publisher/assets/ntfy.png b/sample/vcl/publisher/assets/ntfy.png deleted file mode 100644 index 6b969a846efc6c3dac70510793c72253e04389c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3627 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 diff --git a/sample/vcl/publisher/src/View.Main.dfm b/sample/vcl/publisher/src/View.Main.dfm index 9daa309..951274d 100644 --- a/sample/vcl/publisher/src/View.Main.dfm +++ b/sample/vcl/publisher/src/View.Main.dfm @@ -214,7 +214,7 @@ object ViewMain: TViewMain EditLabel.Height = 13 EditLabel.Caption = 'Username' TabOrder = 12 - TextHint = 'Only for protected topics/servers' + TextHint = '(optional)' end object LbePassword: TLabeledEdit Left = 364 diff --git a/sample/vcl/subscriber/Ntfy-54x.ico b/sample/vcl/subscriber/Ntfy-54x.ico new file mode 100644 index 0000000000000000000000000000000000000000..a409f417cc6d4b8a9ee889dec1673b74948e8466 GIT binary patch literal 10366 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 V&t*{bwi0c_g^iK@Ts%*;|39WcdAR@p literal 0 HcmV?d00001 diff --git a/sample/vcl/subscriber/VCLSubscriber.dproj b/sample/vcl/subscriber/VCLSubscriber.dproj index 7fde827..3067a2a 100644 --- a/sample/vcl/subscriber/VCLSubscriber.dproj +++ b/sample/vcl/subscriber/VCLSubscriber.dproj @@ -68,9 +68,12 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 + Ntfy-54x.ico + C:\Users\PRG1\Pictures\Ntfy.png $(BDS)\bin\default_app.manifest + C:\Users\PRG1\Pictures\Ntfy.png + ..\..\..\bin + ..\..\..\lib DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;bindcompvclsmp;tethering;bindcompvclwinx;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;FireDAC;vcltouch;vcldb;bindcompfmx;FireDACSqliteDriver;FireDACPgDriver;inetdb;soaprtl;DbxCommonDriver;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;vcledge;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;FireDACCommon;IndyIPClient;bindcompvcl;RESTBackendComponents;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;vclie;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;FireDACCommonODBC;FireDACCommonDriver;inet;fmxase;$(DCC_UsePackage) @@ -88,6 +91,8 @@ true PerMonitorV2 true + C:\Users\PRG1\Pictures\Ntfy.png + C:\Users\PRG1\Pictures\Ntfy.png false @@ -140,6 +145,13 @@ true + + + Assets\ + Logo44x44.png + true + + 1 diff --git a/sample/vcl/subscriber/VCLSubscriber.res b/sample/vcl/subscriber/VCLSubscriber.res index 08457d7937de83efb32cddfc462bd139a8d0ab88..569dafabf623630522569ddf29e9ad3674deace7 100644 GIT binary patch delta 8776 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 diff --git a/sample/vcl/subscriber/src/Example.Push.Notifications.pas b/sample/vcl/subscriber/src/Example.Push.Notifications.pas index b7e04b7..1d25eaf 100644 --- a/sample/vcl/subscriber/src/Example.Push.Notifications.pas +++ b/sample/vcl/subscriber/src/Example.Push.Notifications.pas @@ -19,7 +19,7 @@ implementation try LNotification := LNotificationCenter.CreateNotification(); try - LNotification.Name := 'Ntfy'; + LNotification.Name := AEvent.Id; LNotification.Title := AEvent.Title; LNotification.AlertBody := AEvent.MessageContent; LNotificationCenter.PresentNotification(LNotification); diff --git a/sample/vcl/subscriber/src/View.Main.dfm b/sample/vcl/subscriber/src/View.Main.dfm index e220c4b..729e3be 100644 --- a/sample/vcl/subscriber/src/View.Main.dfm +++ b/sample/vcl/subscriber/src/View.Main.dfm @@ -1,7 +1,7 @@ object ViewMain: TViewMain Left = 960 Top = 256 - Caption = 'Subscriber' + Caption = 'Ntfy Subscriber' ClientHeight = 527 ClientWidth = 724 Color = clBtnFace @@ -18,11 +18,11 @@ object ViewMain: TViewMain PixelsPerInch = 96 TextHeight = 13 object lblTopic: TLabel - Left = 271 - Top = 17 - Width = 164 + Left = 445 + Top = 13 + Width = 260 Height = 13 - Caption = 'Topics - for each topic break a line' + Caption = 'Topics - Break a line for each. Don'#39't leave empty lines.' end object BtnSubscribe: TButton Left = 16 @@ -61,19 +61,36 @@ object ViewMain: TViewMain item Expanded = False FieldName = 'ID' - Width = 67 + Width = 50 + Visible = True + end + item + Expanded = False + FieldName = 'TIME' + Width = 118 + Visible = True + end + item + Expanded = False + FieldName = 'PRIORITY' Visible = True end item Expanded = False FieldName = 'TITLE' - Width = 140 + Width = 146 Visible = True end item Expanded = False FieldName = 'MSG' - Width = 318 + Width = 700 + Visible = True + end + item + Expanded = False + FieldName = 'TOPIC' + Width = 300 Visible = True end> end @@ -88,7 +105,7 @@ object ViewMain: TViewMain object GbSince: TRadioGroup Left = 16 Top = 17 - Width = 249 + Width = 89 Height = 71 Caption = 'Since' Enabled = False @@ -105,7 +122,7 @@ object ViewMain: TViewMain Top = 155 Width = 132 Height = 17 - Caption = 'Fectch only scheduled' + Caption = 'Fectch scheduled only' TabOrder = 5 end object CkSince: TCheckBox @@ -113,7 +130,7 @@ object ViewMain: TViewMain Top = 173 Width = 132 Height = 17 - Caption = 'Fetch Cached Messages' + Caption = 'Fetch cached messages' TabOrder = 6 OnClick = CkSinceClick end @@ -171,15 +188,15 @@ object ViewMain: TViewMain Width = 104 Height = 21 Style = csDropDownList - ItemIndex = 5 + ItemIndex = 0 TabOrder = 3 Items.Strings = ( + '' 'Min' 'Low' 'Default' 'High' - 'Maximum' - '') + 'Maximum') end object lbeFilterTags: TLabeledEdit Left = 15 @@ -193,30 +210,13 @@ object ViewMain: TViewMain TextHint = 'Tags' end end - object DtSince: TDateTimePicker - Left = 114 - Top = 59 - Width = 137 - Height = 21 - Date = 44911.000000000000000000 - Time = 0.858430219908768800 - TabOrder = 8 - end - object EdtSince: TEdit - Left = 114 - Top = 32 - Width = 137 - Height = 21 - TabOrder = 9 - TextHint = 'Message id or Unix time' - end object BtnClearTable: TButton Left = 680 - Top = 63 + Top = 107 Width = 25 Height = 25 Caption = #9851 - TabOrder = 10 + TabOrder = 8 OnClick = BtnClearTableClick end object LbeBaseURL: TLabeledEdit @@ -227,20 +227,20 @@ object ViewMain: TViewMain EditLabel.Width = 45 EditLabel.Height = 13 EditLabel.Caption = 'Base URL' - TabOrder = 11 + TabOrder = 9 Text = 'https://ntfy.sh' TextHint = 'Tags' end object MemTopics: TMemo - Left = 271 - Top = 36 + Left = 462 + Top = 32 Width = 243 Height = 52 BorderStyle = bsNone Lines.Strings = ( 'your-very-secret-topic' 'notify-delphi-integration-8jh27d') - TabOrder = 12 + TabOrder = 10 end object BtnHide: TButton Left = 16 @@ -248,7 +248,7 @@ object ViewMain: TViewMain Width = 132 Height = 25 Caption = 'Hide' - TabOrder = 13 + TabOrder = 11 OnClick = BtnHideClick end object LbeUsername: TLabeledEdit @@ -259,7 +259,7 @@ object ViewMain: TViewMain EditLabel.Width = 48 EditLabel.Height = 13 EditLabel.Caption = 'Username' - TabOrder = 14 + TabOrder = 12 TextHint = '(optional)' end object LbePassword: TLabeledEdit @@ -271,9 +271,26 @@ object ViewMain: TViewMain EditLabel.Height = 13 EditLabel.Caption = 'Password' PasswordChar = '*' - TabOrder = 15 + TabOrder = 13 TextHint = '(optional)' end + object DtSince: TDateTimePicker + Left = 111 + Top = 63 + Width = 137 + Height = 21 + Date = 44911.000000000000000000 + Time = 0.858430219908768800 + TabOrder = 14 + end + object EdtSince: TEdit + Left = 111 + Top = 36 + Width = 137 + Height = 21 + TabOrder = 15 + TextHint = 'Message id or Unix time' + end object TableNotification: TFDMemTable FetchOptions.AssignedValues = [evMode] FetchOptions.Mode = fmAll @@ -285,16 +302,33 @@ object ViewMain: TViewMain Left = 568 Top = 336 object TableNotificationID: TStringField + DisplayLabel = 'Id' FieldName = 'ID' Size = 30 end + object TableNotificationTIME: TStringField + DisplayLabel = 'Time' + FieldName = 'TIME' + end + object TableNotificationPRIORITY: TStringField + DisplayLabel = 'Priority' + FieldName = 'PRIORITY' + Size = 10 + end object TableNotificationTITLE: TStringField + DisplayLabel = 'Title' FieldName = 'TITLE' Size = 50 end object TableNotificationMSG: TStringField + DisplayLabel = 'Message' FieldName = 'MSG' - Size = 60 + Size = 500 + end + object TableNotificationTOPIC: TStringField + DisplayLabel = 'Topic' + FieldName = 'TOPIC' + Size = 100 end end object DsTable: TDataSource diff --git a/sample/vcl/subscriber/src/View.Main.pas b/sample/vcl/subscriber/src/View.Main.pas index f992d9c..2d0404c 100644 --- a/sample/vcl/subscriber/src/View.Main.pas +++ b/sample/vcl/subscriber/src/View.Main.pas @@ -33,8 +33,6 @@ TViewMain = class(TForm) lbPriority: TLabel; lbeFilterTags: TLabeledEdit; lblTopic: TLabel; - DtSince: TDateTimePicker; - EdtSince: TEdit; BtnClearTable: TButton; LbeBaseURL: TLabeledEdit; MemTopics: TMemo; @@ -47,6 +45,11 @@ TViewMain = class(TForm) LbeUsername: TLabeledEdit; LbePassword: TLabeledEdit; PopQuit: TMenuItem; + DtSince: TDateTimePicker; + EdtSince: TEdit; + TableNotificationTIME: TStringField; + TableNotificationTOPIC: TStringField; + TableNotificationPRIORITY: TStringField; procedure BtnSubscribeClick(Sender: TObject); procedure BtnUnsubscribeClick(Sender: TObject); procedure GbSinceClick(Sender: TObject); @@ -77,8 +80,8 @@ implementation {$R *.dfm} uses - Example.Push.Notifications, - System.DateUtils; + System.DateUtils, + Example.Push.Notifications; procedure TViewMain.BtnClearTableClick(Sender: TObject); begin @@ -147,7 +150,7 @@ function TViewMain.CheckPriority: String; begin Result := ''; if CbFilterPriority.ItemIndex > 0 then - IntToStr(CbFilterPriority.ItemIndex + 1); + Result := IntToStr(Ord(TNotifyPriority(CbFilterPriority.ItemIndex))); end; procedure TViewMain.CheckSince; @@ -223,9 +226,13 @@ procedure TViewMain.YourCallBackProcedure(AEvent: INotifyEvent); TableNotification.Open; TableNotification.AppendRecord([ AEvent.Id, + FormatDateTime('dd/MM/yyyy hh:mm:ss', UnixToDateTime(AEvent.Time)), + IntToStr(Ord(AEvent.Priority)), AEvent.Title, - AEvent.MessageContent + AEvent.MessageContent, + AEvent.Topic ]); + PushWindowsNotification(AEvent); end; diff --git a/tests/NtfyForDelphiTests.dproj b/tests/NtfyForDelphiTests.dproj index d43706f..363beb4 100644 --- a/tests/NtfyForDelphiTests.dproj +++ b/tests/NtfyForDelphiTests.dproj @@ -50,8 +50,8 @@ true - .\lib - .\bin + ..\lib + ..\bin false false false @@ -94,7 +94,6 @@ false - 1033 (None) diff --git a/tests/README.md b/tests/README.md index 62d24e0..cb8394a 100644 --- a/tests/README.md +++ b/tests/README.md @@ -21,7 +21,7 @@ docker compose up ## 🧪 DUnit Tests * Access http://localhost:80 in your browser and subscribe to ```notify-delphi-integration-8jh27d```. -* Run ```tests\bin\NtfyForDelphiTests.exe```. You should receive the test messages sent from this project. +* Run ```bin\NtfyForDelphiTests.exe```. You should receive the test messages sent from this project. ``` pascal diff --git a/tests/bin/ntfy-31.12.2022.txt b/tests/bin/ntfy-31.12.2022.txt deleted file mode 100644 index 4c3b3f9..0000000 --- a/tests/bin/ntfy-31.12.2022.txt +++ /dev/null @@ -1,13 +0,0 @@ -12/31/2022 5:05:33 PM : https://ntfy.sh/ -12/31/2022 5:05:33 PM : {"message":"A friendly Delphi library to ntfy.sh","priority":5,"title":"\u26A1 Ntfy for Delphi","topic":"notify-delphi-integration-8jh27d"} -12/31/2022 5:05:33 PM : 200 -12/31/2022 5:05:33 PM : {"id":"RQbyHnkhd9AO","time":1672517133,"event":"message","topic":"notify-delphi-integration-8jh27d","title":"⚡ Ntfy for Delphi","message":"A friendly Delphi library to ntfy.sh","priority":5} - -12/31/2022 5:05:35 PM : https://ntfy.sh/ -12/31/2022 5:05:35 PM : {"priority":3,"topic":"notify-delphi-integration-8jh27d","actions":[{"action":"view","clear":false,"label":"Test Action Header","url":"https:\/\/ntfy.sh","headers":{"cmd":"systeminfo","parameter":"\/FO LIST","systemdate":"date"}}]} -12/31/2022 5:05:35 PM : 200 -12/31/2022 5:06:16 PM : https://ntfy.sh/ -12/31/2022 5:06:16 PM : {"message":"A friendly Delphi library to ntfy.sh","priority":5,"title":"\u26A1 Ntfy for Delphi","topic":"notify-delphi-integration-8jh27d"} -12/31/2022 5:06:16 PM : 200 -12/31/2022 5:06:16 PM : {"id":"LuLW4fRqUxi9","time":1672517176,"event":"message","topic":"notify-delphi-integration-8jh27d","title":"⚡ Ntfy for Delphi","message":"A friendly Delphi library to ntfy.sh","priority":5} - diff --git a/tests/src/Test.Attachments.pas b/tests/src/Test.Attachments.pas index 7e60fe6..70a039e 100644 --- a/tests/src/Test.Attachments.pas +++ b/tests/src/Test.Attachments.pas @@ -66,7 +66,7 @@ procedure TTestAttachments.Publish; procedure TTestAttachments.SetUp; begin inherited; - FFilePath := '..\..\img\delphi-notify.png'; + FFilePath := '..\img\delphi-notify.png'; FFileName := ExtractFileName(FFilePath); end;