1515 */
1616import Foundation
1717import gRPC
18+ import OAuth2
19+
20+ let CREDENTIALS = " google.yaml " // in $HOME/.credentials
21+ let TOKEN = " google.json " // local auth token storage
22+
23+ #if os(OSX)
24+ // On OS X, we use the local browser to help the user get a token.
25+ let tokenProvider = try BrowserTokenProvider ( credentials: CREDENTIALS, token: TOKEN)
26+ if tokenProvider. token == nil {
27+ try tokenProvider. signIn ( scopes: [ " profile " ,
28+ " https://www.googleapis.com/auth/contacts.readonly " ,
29+ " https://www.googleapis.com/auth/cloud-platform " ] )
30+ try tokenProvider. saveToken ( TOKEN)
31+ }
32+ #else
33+ // On Linux, we can get a token if we are running in Google Cloud Shell
34+ // or in some other Google Cloud instance (GAE, GKE, GCE, etc).
35+ let tokenProvider = try GoogleTokenProvider ( )
36+ #endif
1837
1938gRPC. initialize ( )
2039
21- let authToken = " <YOUR AUTH TOKEN> "
40+ guard let authToken = tokenProvider. token? . accessToken else {
41+ print ( " ERROR: No OAuth token is avaiable. " )
42+ exit ( - 1 )
43+ }
2244
2345let projectID = " <YOUR PROJECT ID> "
2446
2547let certificateURL = URL ( fileURLWithPath: " roots.pem " )
2648let certificates = try ! String ( contentsOf: certificateURL)
2749let service = Google_Datastore_V1_DatastoreService ( address: " datastore.googleapis.com " ,
28- certificates: certificates,
29- host: nil )
50+ certificates: certificates,
51+ host: nil )
3052
3153service. metadata = Metadata ( [ " authorization " : " Bearer " + authToken] )
3254
@@ -40,6 +62,9 @@ request.gqlQuery = query
4062
4163print ( " \( request) " )
4264
43- let result = try service. runquery ( request)
44-
45- print ( " \( result) " )
65+ do {
66+ let result = try service. runquery ( request)
67+ print ( " \( result) " )
68+ } catch ( let error) {
69+ print ( " ERROR: \( error) " )
70+ }
0 commit comments