[fpc-pascal] ERESTAPI: TBuckets: unsupported array element type : <looks like empty string>
leledumbo
leledumbo_cool at yahoo.co.id
Sat Sep 24 18:13:42 CEST 2016
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.
More information about the fpc-pascal
mailing list