[fpc-pascal] ERESTAPI: TBuckets: unsupported array element type : <looks like empty string>

Michael Van Canneyt michael at freepascal.org
Sat Sep 24 18:48:48 CEST 2016


What version of FPC are you using ? If it is trunk, there is currently a bug
which can cause this kind of behaviour, due to the changed RTTI.

Michael.

On Sat, 24 Sep 2016, leledumbo wrote:

> I'm testing google cloud storage API with the following simple console
> program, just to list the buckets:
>
> {$mode objfpc}{$H+}
>
> uses
>  googleservice,
>  googleclient,
>  googlestorage,
>  openssl,
>  jsonparser,
>  fpjson,
>  fpoauth2,
>  fpwebclient,
>  fphttpwebclient;
>
> type
>  TAuthHelper = class
>    procedure DoUserConsent(const AURL: String; out AAuthCode: String);
>  end;
>
> procedure TAuthHelper.DoUserConsent(const AURL: String; out AAuthCode:
> String);
> begin
>  WriteLn('Open the following URL in browser:');
>  WriteLn(AURL);
>  Write('Writeback the resulting code here: ');
>  ReadLn(AAuthCode);
> end;
>
> var
>  AuthHelper: TAuthHelper;
>  GClient: TGoogleClient;
>  GStorageAPI: TStorageAPI;
>  BucketsResource: TBucketsResource;
>  BucketsListOptions: TBucketsListOptions;
>  Buckets: TBuckets;
>  i: Integer;
> begin
>  try
>    // Register Tasks resources.
>    TStorageAPI.RegisterAPIResources;
>
>    // Set up google client.
>    GClient := TGoogleClient.Create(nil);
>    GClient.WebClient := TFPHTTPWebClient.Create(nil);
>    GClient.WebClient.RequestSigner := GClient.AuthHandler;
>    GClient.WebClient.LogFile := 'requests.log';
>    GClient.AuthHandler.WebClient := GClient.WebClient;
>    GClient.AuthHandler.Config.AccessType := atOffLine;
>
>    // We want to enter a code.
>    AuthHelper := TAuthHelper.Create;
>    GClient.OnUserConsent := @AuthHelper.DoUserConsent;
>
>    // Create a Tasks API and connect it to the client.
>    GStorageAPI := TStorageAPI.Create(nil);
>    GStorageAPI.GoogleClient := GClient;
>
>    // Registered application needs tasks scope
>    GClient.AuthHandler.Config.ClientID := '<my client id>';
>    GClient.AuthHandler.Config.ClientSecret := '<my client secret>';
>    GClient.AuthHandler.Config.AuthScope :=
> 'https://www.googleapis.com/auth/devstorage.read_only';
>    // We are offline.
>    GClient.AuthHandler.Config.RedirectUri := 'urn:ietf:wg:oauth:2.0:oob';
>    // Session data
>    GClient.AuthHandler.Session.RefreshToken := '';
>    GClient.AuthHandler.Session.AccessToken := '';
>    GClient.AuthHandler.Session.AuthTokenType := '';
>    GClient.AuthHandler.Session.AuthExpires := 0;
>    GClient.AuthHandler.Session.AuthExpiryPeriod := 0;
>
>    BucketsResource := GStorageAPI.CreateBucketsResource;
>    BucketsListOptions.Project := '<my project number>';
>    Buckets := BucketsResource.List(BucketsListOptions);
>    if Assigned(Buckets) then
>      for i := 0 to Length(Buckets.Items) - 1 do
>        WriteLn(Buckets.Items[i].name + ': ' + Buckets.Items[i].selfLink)
>    else
>      WriteLn('Failed to list bucket');
>  finally
>    AuthHelper.Free;
>    GStorageAPI.Free;
>    GClient.Free;
>  end;
> end.
>
> but I get "ERESTAPI: TBuckets: unsupported array element type : " on this
> line:
>
> Buckets := BucketsResource.List(BucketsListOptions);
>
> Last requests.log entry:
> --------------------------------------------------------------------------------
> Response : 200 : OK
> Headers:
> X-GUploader-UploadID:
> AEnB2UpzLb9Aty5k0H_WnHL49Osv0fAdVGnN6Xenh7DSV2kBiVLiqiCm84KgiRf_23h_5OEH7EPeuprz_s5mTNiOJKFyAjGqqg
> Vary: Origin
> Vary: X-Origin
> Content-Type: application/json; charset=UTF-8
> Expires: Sat, 24 Sep 2016 16:06:20 GMT
> Date: Sat, 24 Sep 2016 16:06:20 GMT
> Cache-Control: private, max-age=0, must-revalidate, no-transform
> Content-Length: 487
> Server: UploadServer
> Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32"
> Body:
> {
> "kind": "storage#buckets",
> "items": [
>  {
>   "kind": "storage#bucket",
>   "id": "savvy-courage-140719.appspot.com",
>   "selfLink":
> "https://www.googleapis.com/storage/v1/b/savvy-courage-140719.appspot.com",
>   "projectNumber": "594372726667",
>   "name": "savvy-courage-140719.appspot.com",
>   "timeCreated": "2016-08-18T19:40:29.031Z",
>   "updated": "2016-08-18T19:40:29.031Z",
>   "metageneration": "1",
>   "location": "US",
>   "storageClass": "STANDARD",
>   "etag": "CAE="
>  }
> ]
> }
>
> What did I miss?
>
>
>
> --
> View this message in context: http://free-pascal-general.1045716.n5.nabble.com/ERESTAPI-TBuckets-unsupported-array-element-type-looks-like-empty-string-tp5726387.html
> Sent from the Free Pascal - General mailing list archive at Nabble.com.
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>



More information about the fpc-pascal mailing list