private static async Task <HttpApiTransport> GetTransportAsync(ArangoDbOptions options) { if (!string.IsNullOrWhiteSpace(options.JwtToken)) { return(HttpApiTransport.UsingJwtAuth(new Uri(options.HostUri), options.Database, options.JwtToken)); } if (options.IsGenerateJwtTokenBasedOnUserNameAndPassword) { if (string.IsNullOrWhiteSpace(options.UserName)) { throw new ArgumentNullException(nameof(options.UserName)); } if (string.IsNullOrWhiteSpace(options.Password)) { throw new ArgumentNullException(nameof(options.Password)); } var transport = HttpApiTransport.UsingNoAuth(new Uri(options.HostUri), options.Database); var authClient = new AuthApiClient(transport); var jwtTokenResponse = await authClient.GetJwtTokenAsync(options.UserName, options.Password); transport.SetJwtToken(jwtTokenResponse.Jwt); return(transport); } if (!string.IsNullOrWhiteSpace(options.UserName) && !string.IsNullOrWhiteSpace(options.Password)) { return(HttpApiTransport.UsingBasicAuth(new Uri(options.HostUri), options.Database, options.UserName, options.Password)); } return(HttpApiTransport.UsingNoAuth(new Uri(options.HostUri), options.Database)); }
public async Task SetJwt_ShouldSucceed() { string jwtToken = null; string arangodbBaseUrl = $"http://{_fixture.ArangoDbHost}:8529/"; using (var transport = HttpApiTransport.UsingNoAuth( new Uri(arangodbBaseUrl), nameof(HttpApiTransportTest))) { var authClient = new AuthApiClient(transport); var jwtTokenResponse = await authClient.GetJwtTokenAsync( new JwtTokenRequestBody { Username = _fixture.Username, Password = _fixture.Password }); jwtToken = jwtTokenResponse.Jwt; // Use token in current transport transport.SetJwtToken(jwtToken); var databaseApi = new DatabaseApiClient(transport); var userDatabasesResponse = await databaseApi.GetUserDatabasesAsync(); Assert.NotEmpty(userDatabasesResponse.Result); } }
public async Task QuickStart_ShouldSucceed() { try { await QuickStartDoc(); } finally { using (var systemDbTransport = HttpApiTransport.UsingBasicAuth( new Uri($"http://{_arangoDbHost}:8529/"), "_system", "root", "root")) { var systemDb = new DatabaseApiClient(systemDbTransport); try { await systemDb.DeleteDatabaseAsync("arangodb-net-standard"); } catch (ApiErrorException ex) { // assume database didn't exist Console.WriteLine(ex.Message); } } } }
protected HttpApiTransport GetHttpTransport(string dbName) { var transport = new HttpApiTransport( new Uri("http://localhost:8529/"), dbName, "root", "root"); _transports.Add(transport); return(transport); }
protected HttpApiTransport GetHttpTransport(string dbName) { var transport = HttpApiTransport.UsingBasicAuth( new Uri($"http://{ArangoDbHost}:8529/"), dbName, "root", "root"); _transports.Add(transport); return(transport); }
protected HttpApiTransport GetHttpTransport(string dbName) { var transport = HttpApiTransport.UsingBasicAuth( new Uri($"http://{ArangoDbHost}:8529/"), dbName, ArangoDBTestSettings.RootUsername, ArangoDBTestSettings.RootPassword); _transports.Add(transport); return(transport); }
public async Task UseVpack_ShouldSucceed() { string arangodbBaseUrl = $"http://{_fixture.ArangoDbHost}:8529/"; using (var transport = HttpApiTransport.UsingBasicAuth( new Uri(arangodbBaseUrl), nameof(HttpApiTransportTest), "root", "root")) { transport.UseVPackContentType(); string docUrl = arangodbBaseUrl + "_db/" + nameof(HttpApiTransportTest) + $"/_admin/echo"; using (var response = await transport.GetAsync(docUrl)) { Assert.Equal("application/x-velocypack", response.Content.Headers.ContentType.MediaType); } } }
public static IServiceCollection AddArangoDB(this IServiceCollection serviceDescriptors) { var transport = HttpApiTransport.UsingBasicAuth( new Uri("http://185.239.107.111:8529"), "_system", "root", "6600068167"); var arangoDBClient = new ArangoDBClient(transport); serviceDescriptors.AddAutoMapper(typeof(ServiceCollectionExtension), typeof(MappingProfile)); serviceDescriptors.AddTransient <IEntityInstanceRepository, ArangoDBEntityInstanceRepository>(); serviceDescriptors.AddTransient <ILinkInstanceRepository, ArangoDBLinkInstanceRepository>(); serviceDescriptors.AddTransient <IGraphAlgorithms, ArangoDBGraphAlgorithms>(); serviceDescriptors.AddSingleton(arangoDBClient); return(serviceDescriptors); }
public ArangoDBClient OpenConnection(string dbName = "_system", bool root = false) { if (Client != null) { return(Client); } var user = root ? _databaseSettings.User : _databaseSettings.DbUser; var password = root ? _databaseSettings.Password : _databaseSettings.DbPassword; // We must use the _system database to create databases var systemDbTransport = HttpApiTransport.UsingBasicAuth( new Uri(_databaseSettings.Url), dbName, password, user ); return(Client = new ArangoDBClient(systemDbTransport)); }
public async Task UsingJwtAuth_ShouldSucceed() { string jwtToken = null; string arangodbBaseUrl = $"http://{_fixture.ArangoDbHost}:8529/"; using (var transport = HttpApiTransport.UsingNoAuth( new Uri(arangodbBaseUrl), nameof(HttpApiTransportTest))) { var authClient = new AuthApiClient(transport); authClient.ThrowErrorsAsExceptions = true; var jwtTokenResponse = await authClient.GetJwtTokenAsync( new JwtTokenRequestBody { Username = _fixture.Username, Password = _fixture.Password }); jwtToken = jwtTokenResponse.Jwt; DatabaseApiClient databaseApi = new DatabaseApiClient(transport) { ThrowErrorsAsExceptions = true }; // Not authorized, should throw. var ex = await Assert.ThrowsAsync <ApiErrorException>(async() => await databaseApi.GetCurrentDatabaseInfoAsync()); } // Use token in a new transport created via `UsingJwtAuth`. using (var transport = HttpApiTransport.UsingJwtAuth( new Uri(arangodbBaseUrl), nameof(HttpApiTransportTest), jwtToken)) { var databaseApi = new DatabaseApiClient(transport); var userDatabasesResponse = await databaseApi.GetUserDatabasesAsync(); Assert.NotEmpty(userDatabasesResponse.Results); } }
private void Init() { transport = HttpApiTransport.UsingBasicAuth(new Uri(settings.Uri), settings.Database, settings.UserId, settings.Password); Client = new ArangoDBClient(transport); }
/// <summary> /// The function body here is intended for use in "Quick Start" usage documentation. /// </summary> /// <returns></returns> private async Task QuickStartDoc() { // You must use the system database to create databases! using (var systemDbTransport = HttpApiTransport.UsingBasicAuth( new Uri($"http://{_arangoDbHost}:8529/"), "_system", "root", "root")) { var systemDb = new DatabaseApiClient(systemDbTransport); // Create a new database with one user. await systemDb.PostDatabaseAsync( new PostDatabaseBody { Name = "arangodb-net-standard", Users = new List <DatabaseUser> { new DatabaseUser { Username = "******", Passwd = "yoko123" } } }); } // Use our new database, with basic auth credentials for the user jlennon. var transport = HttpApiTransport.UsingBasicAuth( new Uri($"http://{_arangoDbHost}:8529"), "arangodb-net-standard", "jlennon", "yoko123"); var adb = new ArangoDBClient(transport); // Create a collection in the database await adb.Collection.PostCollectionAsync( new PostCollectionBody { Name = "MyCollection" // A whole heap of other options exist to define key options, // sharding options, etc }); // Create document in the collection using anonymous type await adb.Document.PostDocumentAsync( "MyCollection", new { MyProperty = "Value" }); // Create document in the collection using strong type await adb.Document.PostDocumentAsync( "MyCollection", new MyClass { ItemNumber = 123456, Description = "Some item" }); // Run AQL query (create a query cursor) var response = await adb.Cursor.PostCursorAsync <MyClassDocument>( @"FOR doc IN MyCollection FILTER doc.ItemNumber == 123456 RETURN doc"); MyClassDocument item = response.Result.First(); // Partially update document await adb.Document.PatchDocumentAsync <object, object>( "MyCollection", item._key, new { Description = "More description" }); // Fully update document item.Description = "Some item with some more description"; await adb.Document.PutDocumentAsync( $"MyCollection/{item._key}", item); }