Send Email via Exchange Online with OAuth2 in Delphi and Free Pascal

Disclaimer: I no longer have access to an Office 365 Exchange Online environment, so I can’t re-verify some of the technical details in this post, especially the Exchange configuration steps. Microsoft’s portals, permissions and policies change over time, so please check them against Microsoft’s current documentation. The code and instructions are provided as-is, without any … Continue reading Send Email via Exchange Online with OAuth2 in Delphi and Free Pascal

Daraja Demo 13: Sign in with Microsoft Entra and call the Graph API from Object Pascal

Can a small Object Pascal HTTP server handle a modern OAuth 2.0 login and then talk to Microsoft's cloud APIs? With the Daraja HTTP Framework, yes. Demo 13 shows the complete flow in a handful of source files. You can find it here: demo/13_entra_msgraph (see the readme.md for the full description). What the demo does … Continue reading Daraja Demo 13: Sign in with Microsoft Entra and call the Graph API from Object Pascal

Automated FPCUnit testing for the Daraja HTTP Framework with GitHub Actions

Lazarus / Free Pascal CI without running your own build server Daraja is a compact and flexible HTTP server application framework for Object Pascal, built on Internet Direct (Indy). It comes with a unit test suite, and I wanted every push and pull request to run it automatically on both Windows and Linux, using Free … Continue reading Automated FPCUnit testing for the Daraja HTTP Framework with GitHub Actions

Habari STOMP Client libraries 10.2 released

Version 10.2 of the Habari STOMP Client libraries for Delphi and Free Pascal is now available for ActiveMQ, Artemis, OpenMQ and RabbitMQ. It turns two compile-time options into run-time settings and fixes two defects that could stall or corrupt a connection. New Line-length limit at run time. Cast the connection to IMaxLineLength and set MaxLineLength before calling Start. This helps when … Continue reading Habari STOMP Client libraries 10.2 released

ScroogeXHTML 10.2 is here — cleaner fonts, correct symbols, unbroken hyperlinks

New TSxOptionsSecurity.StrictMode — an opt-in mode that turns previously-tolerated malformed RTF (unmatched group markers, unclosed groups, bad \pict/hex escapes, out-of-range color-table indices) into a catchable error instead of silently working around it. Lenient mode stays the default, so nothing changes unless you turn it on. Documented TSxOptionsHead.HeadTags/MetaTags/StyleSheetInclude as trusted, caller-supplied configuration — not something derived from RTF input. Fixed … Continue reading ScroogeXHTML 10.2 is here — cleaner fonts, correct symbols, unbroken hyperlinks

What’s new in ScroogeXHTML 10.0?

ScroogeXHTML for Object Pascal 10.0 — Release Candidate 1 ScroogeXHTML is the Object Pascal component that converts RTF (rich text) files, strings, and streams into clean HTML5, XHTML, or plain text. It ships as source, has no UI dependencies beyond the RTL/VCL/LCL, and builds on Delphi 2009+ and Free Pascal / Lazarus. Version 10.0 is … Continue reading What’s new in ScroogeXHTML 10.0?

PREVIEW: What’s New in Habari STOMP Client 10.2

Version 10.2 of the Habari STOMP Client libraries moves two settings that used to require a recompile into ordinary properties on the connection, and fixes two defects that could stall or corrupt a connection at run time. As always, the same code works against all four supported brokers. New New: The maximum length of a STOMP … Continue reading PREVIEW: What’s New in Habari STOMP Client 10.2

PREVIEW: The timeout that wasn’t

Every read in the mORMot2 transport took a timeout parameter, and none of them honoured it. Here is why a Receive(1000) could wait forever, and what changed. Affects: mORMot2 comm adapter only Unaffected: Indy, Synapse Products: all Habari Client libraries (for ActiveMQ · Artemis · OpenMQ · RabbitMQ) Verified on: Delphi 2009, FPC 3.2.2 The symptom Select … Continue reading PREVIEW: The timeout that wasn’t

PREVIEW: Failover, configured from code

Connecting across a list of brokers no longer means recompiling the library. The failover: transport is now switched on at runtime, per connection, through a small interface on IConnection. Why the define had to go Habari has long understood a failover connection URL — failover:(stomp://a,stomp://b) — that tries each broker in turn and reconnects with backoff when a connection can … Continue reading PREVIEW: Failover, configured from code

PREVIEW: Setting the line‑length limit from code

A new MaxLineLength property on IConnection replaces the HABARI_X_MAXLINELENGTH compile‑time switch — so one application can raise the limit for one connection without rebuilding the library. Applies to The Indy transport. Synapse and mORMot2 accept the value and ignore it. New API IMaxLineLength in BTCommInterfaces, implemented by every IConnection. Supersedes HABARI_X_MAXLINELENGTH — still honoured, now with a deprecation warning. The problem Indy caps how long … Continue reading PREVIEW: Setting the line‑length limit from code