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

Shopify List Products

See more Shopify Examples

Receive a list of all Products

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.StringBuilder,
  Chilkat.Rest,
  Chilkat.JsonObject;

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

procedure RunDemo;
var
  success: Boolean;
  rest: TRest;
  sbJson: TStringBuilder;
  json: TJsonObject;
  i: Integer;
  count_i: Integer;
  id: Integer;
  title: string;
  body_html: string;
  vendor: string;
  product_type: string;
  created_at: string;
  handle: string;
  updated_at: string;
  published_at: string;
  template_suffix: Boolean;
  published_scope: string;
  tags: string;
  imageId: Integer;
  imageProduct_id: Integer;
  imagePosition: Integer;
  imageCreated_at: string;
  imageUpdated_at: string;
  imageWidth: Integer;
  imageHeight: Integer;
  imageSrc: string;
  image: Boolean;
  j: Integer;
  count_j: Integer;
  product_id: Integer;
  price: string;
  sku: string;
  position: Integer;
  grams: Integer;
  inventory_policy: string;
  compare_at_price: Boolean;
  fulfillment_service: string;
  inventory_management: string;
  option1: string;
  option2: Boolean;
  option3: Boolean;
  taxable: Boolean;
  barcode: string;
  image_id: Integer;
  inventory_quantity: Integer;
  weight: Integer;
  weight_unit: string;
  old_inventory_quantity: Integer;
  requires_shipping: Boolean;
  name: string;
  k: Integer;
  count_k: Integer;
  strVal: string;
  width: Integer;
  height: Integer;
  src: string;
  intVal: Integer;

begin
  success := False;

  rest := TRest.Create;

  rest.SetAuthBasic('SHOPIFY_API_KEY','SHOPIFY_API_SECRET_KEY');

  success := rest.Connect('chilkat.myshopify.com',443,True,True);
  if (success <> True) then
    begin
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  sbJson := TStringBuilder.Create;
  success := rest.FullRequestNoBodySb('GET','/admin/products.json',sbJson);
  if (success <> True) then
    begin
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  if (rest.ResponseStatusCode <> 200) then
    begin
      WriteLn('Received error response code: ' + rest.ResponseStatusCode);
      WriteLn('Response body:');
      WriteLn(sbJson.GetAsString());
      Exit;
    end;

  json := TJsonObject.Create;
  json.LoadSb(sbJson);

  //  The following code parses the JSON response.
  //  A sample JSON response is shown below the sample code.

  i := 0;
  count_i := json.SizeOfArray('products');
  while i < count_i do
    begin
      json.I := i;
      id := json.IntOf('products[i].id');
      title := json.StringOf('products[i].title');
      body_html := json.StringOf('products[i].body_html');
      vendor := json.StringOf('products[i].vendor');
      product_type := json.StringOf('products[i].product_type');
      created_at := json.StringOf('products[i].created_at');
      handle := json.StringOf('products[i].handle');
      updated_at := json.StringOf('products[i].updated_at');
      published_at := json.StringOf('products[i].published_at');
      template_suffix := json.IsNullOf('products[i].template_suffix');
      published_scope := json.StringOf('products[i].published_scope');
      tags := json.StringOf('products[i].tags');
      imageId := json.IntOf('products[i].image.id');
      imageProduct_id := json.IntOf('products[i].image.product_id');
      imagePosition := json.IntOf('products[i].image.position');
      imageCreated_at := json.StringOf('products[i].image.created_at');
      imageUpdated_at := json.StringOf('products[i].image.updated_at');
      imageWidth := json.IntOf('products[i].image.width');
      imageHeight := json.IntOf('products[i].image.height');
      imageSrc := json.StringOf('products[i].image.src');
      image := json.IsNullOf('products[i].image');
      j := 0;
      count_j := json.SizeOfArray('products[i].variants');
      while j < count_j do
        begin
          json.J := j;
          id := json.IntOf('products[i].variants[j].id');
          product_id := json.IntOf('products[i].variants[j].product_id');
          title := json.StringOf('products[i].variants[j].title');
          price := json.StringOf('products[i].variants[j].price');
          sku := json.StringOf('products[i].variants[j].sku');
          position := json.IntOf('products[i].variants[j].position');
          grams := json.IntOf('products[i].variants[j].grams');
          inventory_policy := json.StringOf('products[i].variants[j].inventory_policy');
          compare_at_price := json.IsNullOf('products[i].variants[j].compare_at_price');
          fulfillment_service := json.StringOf('products[i].variants[j].fulfillment_service');
          inventory_management := json.StringOf('products[i].variants[j].inventory_management');
          option1 := json.StringOf('products[i].variants[j].option1');
          option2 := json.IsNullOf('products[i].variants[j].option2');
          option3 := json.IsNullOf('products[i].variants[j].option3');
          created_at := json.StringOf('products[i].variants[j].created_at');
          updated_at := json.StringOf('products[i].variants[j].updated_at');
          taxable := json.BoolOf('products[i].variants[j].taxable');
          barcode := json.StringOf('products[i].variants[j].barcode');
          image_id := json.IntOf('products[i].variants[j].image_id');
          inventory_quantity := json.IntOf('products[i].variants[j].inventory_quantity');
          weight := json.IntOf('products[i].variants[j].weight');
          weight_unit := json.StringOf('products[i].variants[j].weight_unit');
          old_inventory_quantity := json.IntOf('products[i].variants[j].old_inventory_quantity');
          requires_shipping := json.BoolOf('products[i].variants[j].requires_shipping');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('products[i].options');
      while j < count_j do
        begin
          json.J := j;
          id := json.IntOf('products[i].options[j].id');
          product_id := json.IntOf('products[i].options[j].product_id');
          name := json.StringOf('products[i].options[j].name');
          position := json.IntOf('products[i].options[j].position');
          k := 0;
          count_k := json.SizeOfArray('products[i].options[j].values');
          while k < count_k do
            begin
              json.K := k;
              strVal := json.StringOf('products[i].options[j].values[k]');
              k := k + 1;
            end;

          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('products[i].images');
      while j < count_j do
        begin
          json.J := j;
          id := json.IntOf('products[i].images[j].id');
          product_id := json.IntOf('products[i].images[j].product_id');
          position := json.IntOf('products[i].images[j].position');
          created_at := json.StringOf('products[i].images[j].created_at');
          updated_at := json.StringOf('products[i].images[j].updated_at');
          width := json.IntOf('products[i].images[j].width');
          height := json.IntOf('products[i].images[j].height');
          src := json.StringOf('products[i].images[j].src');
          k := 0;
          count_k := json.SizeOfArray('products[i].images[j].variant_ids');
          while k < count_k do
            begin
              json.K := k;
              intVal := json.IntOf('products[i].images[j].variant_ids[k]');
              k := k + 1;
            end;

          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('products[i].image.variant_ids');
      while j < count_j do
        begin
          json.J := j;
          j := j + 1;
        end;

      i := i + 1;
    end;

  //  A sample JSON response body that is parsed by the above code:

  //  {
  //    "products": [
  //      {
  //        "id": 632910392,
  //        "title": "IPod Nano - 8GB",
  //        "body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.<\/p>",
  //        "vendor": "Apple",
  //        "product_type": "Cult Products",
  //        "created_at": "2017-09-22T14:08:02-04:00",
  //        "handle": "ipod-nano",
  //        "updated_at": "2017-09-22T14:08:02-04:00",
  //        "published_at": "2007-12-31T19:00:00-05:00",
  //        "template_suffix": null,
  //        "published_scope": "web",
  //        "tags": "Emotive, Flash Memory, MP3, Music",
  //        "variants": [
  //          {
  //            "id": 808950810,
  //            "product_id": 632910392,
  //            "title": "Pink",
  //            "price": "199.00",
  //            "sku": "IPOD2008PINK",
  //            "position": 1,
  //            "grams": 567,
  //            "inventory_policy": "continue",
  //            "compare_at_price": null,
  //            "fulfillment_service": "manual",
  //            "inventory_management": "shopify",
  //            "option1": "Pink",
  //            "option2": null,
  //            "option3": null,
  //            "created_at": "2017-09-22T14:08:02-04:00",
  //            "updated_at": "2017-09-22T14:08:02-04:00",
  //            "taxable": true,
  //            "barcode": "1234_pink",
  //            "image_id": 562641783,
  //            "inventory_quantity": 10,
  //            "weight": 1.25,
  //            "weight_unit": "lb",
  //            "old_inventory_quantity": 10,
  //            "requires_shipping": true
  //          },
  //          {
  //            "id": 49148385,
  //            "product_id": 632910392,
  //            "title": "Red",
  //            "price": "199.00",
  //            "sku": "IPOD2008RED",
  //            "position": 2,
  //            "grams": 567,
  //            "inventory_policy": "continue",
  //            "compare_at_price": null,
  //            "fulfillment_service": "manual",
  //            "inventory_management": "shopify",
  //            "option1": "Red",
  //            "option2": null,
  //            "option3": null,
  //            "created_at": "2017-09-22T14:08:02-04:00",
  //            "updated_at": "2017-09-22T14:08:02-04:00",
  //            "taxable": true,
  //            "barcode": "1234_red",
  //            "image_id": null,
  //            "inventory_quantity": 20,
  //            "weight": 1.25,
  //            "weight_unit": "lb",
  //            "old_inventory_quantity": 20,
  //            "requires_shipping": true
  //          },
  //          {
  //            "id": 39072856,
  //            "product_id": 632910392,
  //            "title": "Green",
  //            "price": "199.00",
  //            "sku": "IPOD2008GREEN",
  //            "position": 3,
  //            "grams": 567,
  //            "inventory_policy": "continue",
  //            "compare_at_price": null,
  //            "fulfillment_service": "manual",
  //            "inventory_management": "shopify",
  //            "option1": "Green",
  //            "option2": null,
  //            "option3": null,
  //            "created_at": "2017-09-22T14:08:02-04:00",
  //            "updated_at": "2017-09-22T14:08:02-04:00",
  //            "taxable": true,
  //            "barcode": "1234_green",
  //            "image_id": null,
  //            "inventory_quantity": 30,
  //            "weight": 1.25,
  //            "weight_unit": "lb",
  //            "old_inventory_quantity": 30,
  //            "requires_shipping": true
  //          },
  //          {
  //            "id": 457924702,
  //            "product_id": 632910392,
  //            "title": "Black",
  //            "price": "199.00",
  //            "sku": "IPOD2008BLACK",
  //            "position": 4,
  //            "grams": 567,
  //            "inventory_policy": "continue",
  //            "compare_at_price": null,
  //            "fulfillment_service": "manual",
  //            "inventory_management": "shopify",
  //            "option1": "Black",
  //            "option2": null,
  //            "option3": null,
  //            "created_at": "2017-09-22T14:08:02-04:00",
  //            "updated_at": "2017-09-22T14:08:02-04:00",
  //            "taxable": true,
  //            "barcode": "1234_black",
  //            "image_id": null,
  //            "inventory_quantity": 40,
  //            "weight": 1.25,
  //            "weight_unit": "lb",
  //            "old_inventory_quantity": 40,
  //            "requires_shipping": true
  //          }
  //        ],
  //        "options": [
  //          {
  //            "id": 594680422,
  //            "product_id": 632910392,
  //            "name": "Color",
  //            "position": 1,
  //            "values": [
  //              "Pink",
  //              "Red",
  //              "Green",
  //              "Black"
  //            ]
  //          }
  //        ],
  //        "images": [
  //          {
  //            "id": 850703190,
  //            "product_id": 632910392,
  //            "position": 1,
  //            "created_at": "2017-09-22T14:08:02-04:00",
  //            "updated_at": "2017-09-22T14:08:02-04:00",
  //            "width": 123,
  //            "height": 456,
  //            "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1506103682",
  //            "variant_ids": [
  //            ]
  //          },
  //          {
  //            "id": 562641783,
  //            "product_id": 632910392,
  //            "position": 2,
  //            "created_at": "2017-09-22T14:08:02-04:00",
  //            "updated_at": "2017-09-22T14:08:02-04:00",
  //            "width": 123,
  //            "height": 456,
  //            "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano-2.png?v=1506103682",
  //            "variant_ids": [
  //              808950810
  //            ]
  //          }
  //        ],
  //        "image": {
  //          "id": 850703190,
  //          "product_id": 632910392,
  //          "position": 1,
  //          "created_at": "2017-09-22T14:08:02-04:00",
  //          "updated_at": "2017-09-22T14:08:02-04:00",
  //          "width": 123,
  //          "height": 456,
  //          "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1506103682",
  //          "variant_ids": [
  //          ]
  //        }
  //      },
  //      {
  //        "id": 921728736,
  //        "title": "IPod Touch 8GB",
  //        "body_html": "<p>The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.<\/p>",
  //        "vendor": "Apple",
  //        "product_type": "Cult Products",
  //        "created_at": "2017-09-22T14:08:02-04:00",
  //        "handle": "ipod-touch",
  //        "updated_at": "2017-09-22T14:08:02-04:00",
  //        "published_at": "2008-09-25T20:00:00-04:00",
  //        "template_suffix": null,
  //        "published_scope": "global",
  //        "tags": "",
  //        "variants": [
  //          {
  //            "id": 447654529,
  //            "product_id": 921728736,
  //            "title": "Black",
  //            "price": "199.00",
  //            "sku": "IPOD2009BLACK",
  //            "position": 1,
  //            "grams": 567,
  //            "inventory_policy": "continue",
  //            "compare_at_price": null,
  //            "fulfillment_service": "manual",
  //            "inventory_management": "shopify",
  //            "option1": "Black",
  //            "option2": null,
  //            "option3": null,
  //            "created_at": "2017-09-22T14:08:02-04:00",
  //            "updated_at": "2017-09-22T14:08:02-04:00",
  //            "taxable": true,
  //            "barcode": "1234_black",
  //            "image_id": null,
  //            "inventory_quantity": 13,
  //            "weight": 1.25,
  //            "weight_unit": "lb",
  //            "old_inventory_quantity": 13,
  //            "requires_shipping": true
  //          }
  //        ],
  //        "options": [
  //          {
  //            "id": 891236591,
  //            "product_id": 921728736,
  //            "name": "Title",
  //            "position": 1,
  //            "values": [
  //              "Black"
  //            ]
  //          }
  //        ],
  //        "images": [
  //        ],
  //        "image": null
  //      }
  //    ]
  //  }

  WriteLn('Example Completed.');


  rest.Free;
  sbJson.Free;
  json.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.