private async Task RunUsingServiceAccount() { var requestUri = "path to server resource we want"; IAuthorizationCodeFlow authFLow = null; var userId = ""; TokenResponse token = null; var authUri = ""; ConfigurableMessageHandler messageHandler = new ConfigurableMessageHandler( new MyHandler() ); var cancellationToken = new CancellationToken(); cancellationToken.Register(() => { }); var credential = new UserCredential(authFLow, userId, token) { }; var accessToken = await credential.GetAccessTokenForRequestAsync(authUri, cancellationToken); // Create the service. var service = new Google.Apis.Datastore.v1beta3.DatastoreService(new BaseClientService.Initializer { ApplicationName = "Discovery Sample", ApiKey = "[YOUR_API_KEY_HERE]", }); var httpClient = new ConfigurableHttpClient(messageHandler); service.HttpClientInitializer.Initialize(httpClient); var res = await httpClient.GetAsync(requestUri); }
private void UpsertToDatastore <T>(IEnumerable <T> entities) where T : new() { var datastore = new Google.Apis.Datastore.v1beta3.DatastoreService(Authenticator.GetInitializer()); var transaction = datastore.Projects.BeginTransaction(new BeginTransactionRequest(), Authenticator.GetProjectId()).Execute(); var datastoreEntities = GetSerializer <T>().SerializeAndAutoKey(entities, Authenticator, Configuration.DoubleCheckGeneratedIds); var mutations = datastoreEntities.Select(entity => new Mutation() { Upsert = entity }).ToList(); datastore.Projects.Commit(new CommitRequest { Mutations = mutations, Mode = "TRANSACTIONAL", Transaction = transaction.Transaction }, Authenticator.GetProjectId()).Execute(); }
private async Task <CommitResponse> DeleteAsync(IEnumerable <string> keys, string kind) { var datastore = new Google.Apis.Datastore.v1beta3.DatastoreService(Authenticator.GetInitializer()); var transaction = await datastore.Projects.BeginTransaction(new BeginTransactionRequest(), Authenticator.GetProjectId()).ExecuteAsync(); var mutations = keys.Select(x => new Key { Path = new[] { new PathElement { Kind = kind, Name = x } } }).ToList().Select(key => new Mutation() { Delete = key }).ToList(); return(await datastore.Projects.Commit(new CommitRequest { Mutations = mutations, Mode = "TRANSACTIONAL", Transaction = transaction.Transaction }, Authenticator.GetProjectId()).ExecuteAsync()); }
private bool IsKeyUsed(CloudAuthenticator authenticator, string key) { // TODO consider using AllocateIds() var result = new Google.Apis.Datastore.v1beta3.DatastoreService(authenticator.GetInitializer()).Projects.Lookup(new LookupRequest { Keys = new List <Key> { new Key { Path = new List <PathElement> { new PathElement { Name = key, Kind = typeof(T).Name } } } } }, authenticator.GetProjectId()).Execute(); return(result.Found.Any()); }
public override object Execute(Expression expression) { var state = Translate(expression); // Perform local indexing if needed if (Configuration.GenerateIndexYAMLFile) { BuildIndex(state); } // Build a query var datastore = new Google.Apis.Datastore.v1beta3.DatastoreService(Authenticator.GetInitializer()); var dict = state.Parameters.ToDictionary(x => x.ParameterName, parameter => new GqlQueryParameter() { Value = ReadQuery_ConvertTypeToValueType(parameter.ParameterName, parameter.Value, parameter.TypeCode) }); var gql = new GqlQuery { QueryString = state.QueryBuilder.ToString(), AllowLiterals = false, // enforce parameterized queries NamedBindings = dict //NameArgs = state.Parameters.Select(x => new GqlQueryArg { Name = x.ParameterName, // Value = ReadQuery_ConvertTypeToValueType(x.ParameterName, x.Value, x.TypeCode) }).ToList() }; // Grab results var result = datastore.Projects.RunQuery(new RunQueryRequest { GqlQuery = gql }, Authenticator.GetProjectId()).Execute(); // Project if necessary / Select() method if (state.Projector != null) { var elementType = TypeSystem.GetElementType(expression.Type); var projector = state.Projector.Compile(); return(Activator.CreateInstance( typeof(ProjectionReader <>).MakeGenericType(elementType), BindingFlags.Instance | BindingFlags.NonPublic, null, new object[] { result.Batch.EntityResults.Select(x => x.Entity), projector }, null )); } // First()/Single() method if (state.QueryState.HasFlag(QueryState.IsFirst) || state.QueryState.HasFlag(QueryState.IsSingle)) { if (result.Batch.EntityResults.Count == 0 && !state.QueryState.HasFlag(QueryState.AllowFirstSingleOrDefault)) { throw new InvalidOperationException("Sequence contains no elements"); } if (result.Batch.EntityResults.Count > 1 && state.QueryState.HasFlag(QueryState.IsSingle)) { throw new InvalidOperationException("Sequence contains more than one element"); } if (result.Batch.EntityResults.Any()) { return(_serializer.DeserializeEntity(result.Batch.EntityResults[0].Entity)); } return(null); } // Any() method if (state.QueryState.HasFlag(QueryState.IsAny)) { return(result.Batch.EntityResults.Any()); } // Regular Where() query return(result.Batch.EntityResults.Select(entityResult => _serializer.DeserializeEntity(entityResult.Entity)).ToList()); }