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

Square API - Create Catalog Image

See more Square Examples

Uploads an image file to be represented by an CatalogImage object linked to an existing CatalogObject instance.

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

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

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  req: THttpRequest;
  json: TJsonObject;
  resp: THttpResponse;
  sbResponseBody: TStringBuilder;
  jResp: TJsonObject;
  respStatusCode: Integer;
  imageType: string;
  imageId: string;
  imageUpdated_at: string;
  imageVersion: Integer;
  imageIs_deleted: Boolean;
  imagePresent_at_all_locations: Boolean;
  imageImage_dataName: string;
  imageImage_dataUrl: string;
  imageImage_dataCaption: string;

begin
  success := False;

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

  http := THttp.Create;

  //  Implements the following CURL command:

  //  curl https://connect.squareup.com/v2/catalog/images \
  //    -X POST \
  //    -H 'Square-Version: 2020-07-22' \
  //    -H 'Authorization: Bearer ACCESS_TOKEN' \
  //    -H 'Accept: application/json' \
  //    -F 'file=@/local/path/to/file.jpg' \
  //    -F 'request={
  //      "idempotency_key": "528dea59-7bfb-43c1-bd48-4a6bba7dd61f86",
  //      "object_id": "ND6EA5AAJEO5WL3JNNIAQA32",
  //      "image": {
  //        "id": "#TEMP_ID",
  //        "type": "IMAGE",
  //        "image_data": {
  //          "caption": "A picture of a cup of coffee"
  //        }
  //      }
  //    }'

  //  Use the following online tool to generate HTTP code from a CURL command
  //  Convert a cURL Command to HTTP Source Code

  req := THttpRequest.Create;
  req.HttpVerb := 'POST';
  req.Path := '/v2/catalog/images';
  req.ContentType := 'multipart/form-data';
  success := req.AddFileForUpload2('file','/local/path/to/file.jpg','image/jpeg');

  //  Make sure to use an object_id for an already-existing catalog item.
  json := TJsonObject.Create;
  json.UpdateString('idempotency_key','528dea59-7bfb-43c1-bd48-4a6bba7dd61f86');
  json.UpdateString('object_id','2PTZYUOFGGDMT75UZLHQAPAC');
  json.UpdateString('image.id','#TEMP_ID');
  json.UpdateString('image.type','IMAGE');
  json.UpdateString('image.image_data.caption','A picture of a cup of coffee');

  req.AddParam('request',json.Emit());

  req.AddHeader('Expect','100-continue');
  req.AddHeader('Authorization','Bearer ACCESS_TOKEN');
  req.AddHeader('Accept','application/json');
  req.AddHeader('Square-Version','2020-07-22');

  //  This example uses the sandbox: connect.squareupsandbox.com
  //  Production should use connect.squareup.com
  resp := THttpResponse.Create;
  success := http.HttpSReq('connect.squareupsandbox.com',443,True,req,resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  sbResponseBody := TStringBuilder.Create;
  resp.GetBodySb(sbResponseBody);
  jResp := TJsonObject.Create;
  jResp.LoadSb(sbResponseBody);
  jResp.EmitCompact := False;

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

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

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

  //  {
  //    "image": {
  //      "type": "IMAGE",
  //      "id": "UBXKMBQ4QK47QXMNQD6ELCZT",
  //      "updated_at": "2020-08-07T15:20:09.779Z",
  //      "version": 1596813609779,
  //      "is_deleted": false,
  //      "present_at_all_locations": true,
  //      "image_data": {
  //        "name": "",
  //        "url": "https://square-catalog-sandbox.s3.amazonaws.com/files/168973eab6f8b39b5cbdad52e3f82b23be196e2b/original.jpeg",
  //        "caption": "A picture of a cup of coffee"
  //      }
  //    }
  //  }

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

  imageType := jResp.StringOf('image.type');
  imageId := jResp.StringOf('image.id');
  imageUpdated_at := jResp.StringOf('image.updated_at');
  imageVersion := jResp.IntOf('image.version');
  imageIs_deleted := jResp.BoolOf('image.is_deleted');
  imagePresent_at_all_locations := jResp.BoolOf('image.present_at_all_locations');
  imageImage_dataName := jResp.StringOf('image.image_data.name');
  imageImage_dataUrl := jResp.StringOf('image.image_data.url');
  imageImage_dataCaption := jResp.StringOf('image.image_data.caption');


  http.Free;
  req.Free;
  json.Free;
  resp.Free;
  sbResponseBody.Free;
  jResp.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.