Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

WordPress API Key Authentication with miniOrange Plugin

See more WordPress Examples

Demonstrates API key authentication using the miniOrange API Authentication plugin.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.StringBuilder,
  Chilkat.DtObj,
  Chilkat.JsonArray,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  sbResponseBody: TStringBuilder;
  jarrResp: TJsonArray;
  respStatusCode: Integer;
  date_gmt: TDtObj;
  json: TJsonObject;
  id: Integer;
  date: string;
  guidRendered: string;
  modified: string;
  modified_gmt: string;
  slug: string;
  status: string;
  v_type: string;
  link: string;
  titleRendered: string;
  contentRendered: string;
  contentProtected: Boolean;
  excerptRendered: string;
  excerptProtected: Boolean;
  author: Integer;
  featured_media: Integer;
  comment_status: string;
  ping_status: string;
  sticky: Boolean;
  template: string;
  format: string;
  j: Integer;
  count_j: Integer;
  intVal: Integer;
  href: string;
  embeddable: Boolean;
  count: Integer;
  taxonomy: string;
  name: string;
  templated: Boolean;
  i: Integer;
  count_i: Integer;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  //  Use your API key here, such as TaVFjSBu8IMR0MbvZNn7A6P04GXrbtHm
  //  This causes the "Authorization: Bearer <api_key>" header to be added to each HTTP request.
  http.AuthToken := 'api_key';

  sbResponseBody := TStringBuilder.Create;
  success := http.QuickGetSb('https://www.yoursite.com/wp-json/wp/v2/posts?page=1',sbResponseBody);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  jarrResp := TJsonArray.Create;
  jarrResp.LoadSb(sbResponseBody);
  jarrResp.EmitCompact := False;

  WriteLn('Response Body:');
  WriteLn(jarrResp.Emit());

  respStatusCode := http.LastStatus;
  WriteLn('Response Status Code = ' + respStatusCode);
  if (respStatusCode >= 400) then
    begin
      WriteLn('Response Header:');
      WriteLn(http.LastHeader);
      WriteLn('Failed.');
      Exit;
    end;

  //  Sample JSON response:
  //  (Sample code for parsing the JSON response is shown below)

  //  [
  //    {
  //      "id": 1902,
  //      "date": "2020-11-16T09:54:09",
  //      "date_gmt": "2020-11-16T16:54:09",
  //      "guid": {
  //        "rendered": "http:\/\/cknotes.com\/?p=1902"
  //      },
  //      "modified": "2020-11-16T09:54:09",
  //      "modified_gmt": "2020-11-16T16:54:09",
  //      "slug": "xero-redirect-uri-for-oauth2-and-desktop-apps",
  //      "status": "publish",
  //      "type": "post",
  //      "link": "https:\/\/cknotes.com\/xero-redirect-uri-for-oauth2-and-desktop-apps\/",
  //      "title": {
  //        "rendered": "Xero Redirect URI for OAuth2 and Desktop Apps"
  //      },
  //      "content": {
  //        "rendered": "<p>...",
  //        "protected": false
  //      },
  //      "excerpt": {
  //        "rendered": "<p>...",
  //        "protected": false
  //      },
  //      "author": 1,
  //      "featured_media": 0,
  //      "comment_status": "closed",
  //      "ping_status": "open",
  //      "sticky": false,
  //      "template": "",
  //      "format": "standard",
  //      "meta": [
  //      ],
  //      "categories": [
  //        815
  //      ],
  //      "tags": [
  //        594,
  //        816
  //      ],
  //      "_links": {
  //        "self": [
  //          {
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts\/1902"
  //          }
  //        ],
  //        "collection": [
  //          {
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts"
  //          }
  //        ],
  //        "about": [
  //          {
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/types\/post"
  //          }
  //        ],
  //        "author": [
  //          {
  //            "embeddable": true,
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/users\/1"
  //          }
  //        ],
  //        "replies": [
  //          {
  //            "embeddable": true,
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/comments?post=1902"
  //          }
  //        ],
  //        "version-history": [
  //          {
  //            "count": 1,
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts\/1902\/revisions"
  //          }
  //        ],
  //        "predecessor-version": [
  //          {
  //            "id": 1904,
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/posts\/1902\/revisions\/1904"
  //          }
  //        ],
  //        "wp:attachment": [
  //          {
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/media?parent=1902"
  //          }
  //        ],
  //        "wp:term": [
  //          {
  //            "taxonomy": "category",
  //            "embeddable": true,
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/categories?post=1902"
  //          },
  //          {
  //            "taxonomy": "post_tag",
  //            "embeddable": true,
  //            "href": "https:\/\/cknotes.com\/wp-json\/wp\/v2\/tags?post=1902"
  //          }
  //        ],
  //        "curies": [
  //          {
  //            "name": "wp",
  //            "href": "https:\/\/api.w.org\/{rel}",
  //            "templated": true
  //          }
  //        ]
  //      }
  //    },
  //  ...
  //  ]

  //  Sample code for parsing the JSON response...
  //  Use the following online tool to generate parsing code from sample JSON:
  //  Generate Parsing Code from JSON

  date_gmt := TDtObj.Create;

  i := 0;
  count_i := jarrResp.Size;
  while i < count_i do
    begin
      json := jarrResp.ObjectAt(i);
      id := json.IntOf('id');
      date := json.StringOf('date');
      json.DtOf('date_gmt',False,date_gmt);
      guidRendered := json.StringOf('guid.rendered');
      modified := json.StringOf('modified');
      modified_gmt := json.StringOf('modified_gmt');
      slug := json.StringOf('slug');
      status := json.StringOf('status');
      v_type := json.StringOf('type');
      link := json.StringOf('link');
      titleRendered := json.StringOf('title.rendered');
      contentRendered := json.StringOf('content.rendered');
      contentProtected := json.BoolOf('content.protected');
      excerptRendered := json.StringOf('excerpt.rendered');
      excerptProtected := json.BoolOf('excerpt.protected');
      author := json.IntOf('author');
      featured_media := json.IntOf('featured_media');
      comment_status := json.StringOf('comment_status');
      ping_status := json.StringOf('ping_status');
      sticky := json.BoolOf('sticky');
      template := json.StringOf('template');
      format := json.StringOf('format');
      j := 0;
      count_j := json.SizeOfArray('meta');
      while j < count_j do
        begin
          json.J := j;
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('categories');
      while j < count_j do
        begin
          json.J := j;
          intVal := json.IntOf('categories[j]');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('tags');
      while j < count_j do
        begin
          json.J := j;
          intVal := json.IntOf('tags[j]');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.self');
      while j < count_j do
        begin
          json.J := j;
          href := json.StringOf('_links.self[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.collection');
      while j < count_j do
        begin
          json.J := j;
          href := json.StringOf('_links.collection[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.about');
      while j < count_j do
        begin
          json.J := j;
          href := json.StringOf('_links.about[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.author');
      while j < count_j do
        begin
          json.J := j;
          embeddable := json.BoolOf('_links.author[j].embeddable');
          href := json.StringOf('_links.author[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.replies');
      while j < count_j do
        begin
          json.J := j;
          embeddable := json.BoolOf('_links.replies[j].embeddable');
          href := json.StringOf('_links.replies[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.version-history');
      while j < count_j do
        begin
          json.J := j;
          count := json.IntOf('_links.version-history[j].count');
          href := json.StringOf('_links.version-history[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.predecessor-version');
      while j < count_j do
        begin
          json.J := j;
          id := json.IntOf('_links.predecessor-version[j].id');
          href := json.StringOf('_links.predecessor-version[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.wp:attachment');
      while j < count_j do
        begin
          json.J := j;
          href := json.StringOf('_links.wp:attachment[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.wp:term');
      while j < count_j do
        begin
          json.J := j;
          taxonomy := json.StringOf('_links.wp:term[j].taxonomy');
          embeddable := json.BoolOf('_links.wp:term[j].embeddable');
          href := json.StringOf('_links.wp:term[j].href');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('_links.curies');
      while j < count_j do
        begin
          json.J := j;
          name := json.StringOf('_links.curies[j].name');
          href := json.StringOf('_links.curies[j].href');
          templated := json.BoolOf('_links.curies[j].templated');
          j := j + 1;
        end;

      json.Free;
      i := i + 1;
    end;



  http.Free;
  sbResponseBody.Free;
  jarrResp.Free;
  date_gmt.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.