Sample code for 30+ languages & platforms
Delphi DLL

Example: Secrets.SecretSpecToJson method

Demonstrates the SecretSpecToJson method. This method converts a secret specification string to the JSON required to create or lookup the secret.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Secrets, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
secrets: HCkSecrets;
json: HCkJsonObject;
sspec: PWideChar;

begin
success := False;

secrets := CkSecrets_Create();
json := CkJsonObject_Create();
CkJsonObject_putEmitCompact(json,False);

// A secret name can include up to 4 components:
// [appName] / service / [domain] / username

// This example will demonstrate secret specification strings
// for each possible combination.

// ------------------------------------------------------
// 1: service + username
sspec := '!!imap|john@example.com';

CkSecrets_SecretSpecToJson(secrets,sspec,json);
Memo1.Lines.Add(CkJsonObject__emit(json));

// Result:
// {
//   "service": "imap",
//   "username": "john@example.com"
// }

// ------------------------------------------------------
// 2: appName + service + username
sspec := '!!myApp|imap|john@example.com';

CkSecrets_SecretSpecToJson(secrets,sspec,json);
Memo1.Lines.Add(CkJsonObject__emit(json));

// Result:
// {
//   "appName": "myApp",
//   "service": "imap",
//   "username": "john@example.com"
// }

// ------------------------------------------------------
// 3: service + domain + username
sspec := '!!|imap|imap.example.com|john';

CkSecrets_SecretSpecToJson(secrets,sspec,json);
Memo1.Lines.Add(CkJsonObject__emit(json));

// Result:
// {
//   "service": "imap",
//   "domain": "imap.example.com",
//   "username": "john"
// }

// ------------------------------------------------------
// 4: appName + service + domain + username
sspec := '!!myApp|imap|imap.example.com|john';

CkSecrets_SecretSpecToJson(secrets,sspec,json);
Memo1.Lines.Add(CkJsonObject__emit(json));

// Result:
// {
//   "appName": "myApp",
//   "service": "imap",
//   "domain": "imap.example.com",
//   "username": "john"
// }

CkSecrets_Dispose(secrets);
CkJsonObject_Dispose(json);

end;