Esempio n. 1
0
        /// <summary>
        /// Changes properties of specified collection.
        /// </summary>
        public AResult<Dictionary<string, object>> ChangeProperties(string collectionName)
        {
            var request = new Request(HttpMethod.PUT, ApiBaseUri.Collection, "/" + collectionName + "/properties");
            var bodyDocument = new Dictionary<string, object>();

            // optional
            Request.TrySetBodyParameter(ParameterName.WaitForSync, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.JournalSize, _parameters, bodyDocument);

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 2
0
        /// <summary>
        /// Retrieves list of registered AQL user functions.
        /// </summary>
        public AResult<List<Dictionary<string, object>>> List()
        {
            var request = new Request(HttpMethod.GET, ApiBaseUri.AqlFunction, "");

            // optional
            request.TrySetQueryStringParameter(ParameterName.Namespace, _parameters);

            var response = _connection.Send(request);
            var result = new AResult<List<Dictionary<string, object>>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    if (response.DataType == DataType.List)
                    {
                        result.Value = ((IEnumerable)response.Data).Cast<Dictionary<string, object>>().ToList();
                        result.Success = (result.Value != null);
                    }
                    break;
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 3
0
        /// <summary>
        /// Retrieves list of indexes in specified collection.
        /// </summary>
        public AResult<Dictionary<string, object>> GetAllIndexes(string collectionName)
        {
            var request = new Request(HttpMethod.GET, ApiBaseUri.Index, "");

            // required
            request.QueryString.Add(ParameterName.Collection, collectionName);

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 4
0
        /// <summary>
        /// Creates new or replaces existing AQL user function with specified name and code.
        /// </summary>
        public AResult<bool> Register(string name, string code)
        {
            var request = new Request(HttpMethod.POST, ApiBaseUri.AqlFunction, "");
            var bodyDocument = new Dictionary<string, object>();

            // required
            bodyDocument.String(ParameterName.Name, name);
            // required
            bodyDocument.String(ParameterName.Code, code);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsDeterministic, _parameters, bodyDocument);

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result = new AResult<bool>(response);

            switch (response.StatusCode)
            {
                case 200:
                case 201:
                    if (response.DataType == DataType.Document)
                    {
                        result.Success = true;
                        result.Value = true;
                    }
                    break;
                case 400:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 5
0
        /// <summary>
        /// Unregisters specified AQL user function.
        /// </summary>
        public AResult<bool> Unregister(string name)
        {
            var request = new Request(HttpMethod.DELETE, ApiBaseUri.AqlFunction, "/" + name);

            // optional
            request.TrySetQueryStringParameter(ParameterName.Group, _parameters);

            var response = _connection.Send(request);
            var result = new AResult<bool>(response);

            switch (response.StatusCode)
            {
                case 200:
                    if (response.DataType == DataType.Document)
                    {
                        result.Success = true;
                        result.Value = true;
                    }
                    break;
                case 400:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 6
0
        /// <summary>
        /// Retrieves information about currently connected database.
        /// </summary>
        public AResult<Dictionary<string, object>> GetCurrent()
        {
            var request = new Request(HttpMethod.GET, ApiBaseUri.Database, "/current");

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    if (response.DataType == DataType.Document)
                    {
                        result.Value = (response.Data as Dictionary<string, object>).Document("result");
                        result.Success = (result.Value != null);
                    }
                    break;
                case 400:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 7
0
        /// <summary>
        /// Unloads specified collection from memory.
        /// </summary>
        public AResult<Dictionary<string, object>> Unload(string collectionName)
        {
            var request = new Request(HttpMethod.PUT, ApiBaseUri.Collection, "/" + collectionName + "/unload");

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                case 400:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 8
0
        /// <summary>
        /// Loads specified collection into memory.
        /// </summary>
        public AResult<Dictionary<string, object>> Load(string collectionName)
        {
            var request = new Request(HttpMethod.PUT, ApiBaseUri.Collection, "/" + collectionName + "/load");

            if (_parameters.Has(ParameterName.Count))
            {
                var bodyDocument = new Dictionary<string, object>();

                // optional
                Request.TrySetBodyParameter(ParameterName.Count, _parameters, bodyDocument);

                request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);
            }

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                case 400:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 9
0
        /// <summary>
        /// Retrieves information about collections in current database connection.
        /// </summary>
        public AResult<List<Dictionary<string, object>>> GetAllCollections()
        {
            var request = new Request(HttpMethod.GET, ApiBaseUri.Collection, "");

            // optional
            request.TrySetQueryStringParameter(ParameterName.ExcludeSystem, _parameters);

            var response = _connection.Send(request);
            var result = new AResult<List<Dictionary<string, object>>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body.List<Dictionary<string, object>>("collections");
                    break;
                case 400:
                case 403:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 10
0
        /// <summary>
        /// Deletes specified database.
        /// </summary>
        public AResult<bool> Drop(string databaseName)
        {
            var request = new Request(HttpMethod.DELETE, ApiBaseUri.Database, "/" + databaseName);

            var response = _connection.Send(request);
            var result = new AResult<bool>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Body<bool>>();

                    result.Success = (body != null);
                    result.Value = body.Result;
                    break;
                case 400:
                case 403:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 11
0
        /// <summary>
        /// Creates new database with given name and user list.
        /// </summary>
        public AResult<bool> Create(string databaseName, List<AUser> users)
        {
            var request = new Request(HttpMethod.POST, ApiBaseUri.Database, "");
            var bodyDocument = new Dictionary<string, object>();

            // required: database name
            bodyDocument.String("name", databaseName);

            // optional: list of users
            if ((users != null) && (users.Count > 0))
            {
                var userList = new List<Dictionary<string, object>>();

                foreach (var user in users)
                {
                    var userItem = new Dictionary<string, object>();

                    if (!string.IsNullOrEmpty(user.Username))
                    {
                        userItem.String("username", user.Username);
                    }

                    if (!string.IsNullOrEmpty(user.Password))
                    {
                        userItem.String("passwd", user.Password);
                    }

                    userItem.Bool("active", user.Active);

                    if (user.Extra != null)
                    {
                        userItem.Document("extra", user.Extra);
                    }

                    userList.Add(userItem);
                }

                bodyDocument.List("users", userList);
            }

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result = new AResult<bool>(response);

            switch (response.StatusCode)
            {
                case 201:
                    var body = response.ParseBody<Body<bool>>();

                    result.Success = (body != null);
                    result.Value = body.Result;
                    break;
                case 400:
                case 403:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 12
0
 /// <summary>
 /// Retrieves specified index.
 /// </summary>
 /// <exception cref="ArgumentException">Specified id value has invalid format.</exception>
 public AResult<Dictionary<string, object>> Get(string id)
 {
     if (!ADocument.IsID(id))
     {
         throw new ArgumentException("Specified id value (" + id + ") has invalid format.");
     }
     
     var request = new Request(HttpMethod.GET, ApiBaseUri.Index, "/" + id);
     
     var response = _connection.Send(request);
     var result = new AResult<Dictionary<string, object>>(response);
     
     switch (response.StatusCode)
     {
         case 200:
             var body = response.ParseBody<Dictionary<string, object>>();
             
             result.Success = (body != null);
             result.Value = body;
             break;
         case 404:
         default:
             // Arango error
             break;
     }
     
     _parameters.Clear();
     
     return result;
 }
Esempio n. 13
0
        /// <summary>
        /// Unloads specified collection from memory.
        /// </summary>
        public AResult<Dictionary<string, object>> Unload(string collectionName)
        {
            var request = new Request(HttpMethod.PUT, ApiBaseUri.Collection, "/" + collectionName + "/unload");

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    if (response.DataType == DataType.Document)
                    {
                        result.Value = (response.Data as Dictionary<string, object>);
                        result.Success = (result.Value != null);
                    }
                    break;
                case 400:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 14
0
        /// <summary>
        /// Retrieves list of edges in specified collection.
        /// </summary>
        public AResult<List<string>> GetAllEdges(string collectionName)
        {
            var request = new Request(HttpMethod.GET, ApiBaseUri.Edge, "");

            // required
            request.QueryString.Add(ParameterName.Collection, collectionName);
            // optional
            request.TrySetQueryStringParameter(ParameterName.Type, _parameters);

            var response = _connection.Send(request);
            var result = new AResult<List<string>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    if (response.DataType == DataType.Document)
                    {
                        result.Value = (response.Data as Dictionary<string, object>).List<string>("documents");
                        result.Success = (result.Value != null);
                    }
                    break;
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 15
0
        /// <summary>
        /// Retrieves basic information, revision ID and checksum of specified collection.
        /// </summary>
        public AResult<Dictionary<string, object>> GetChecksum(string collectionName)
        {
            var request = new Request(HttpMethod.GET, ApiBaseUri.Collection, "/" + collectionName + "/checksum");

            // optional
            request.TrySetQueryStringParameter(ParameterName.WithRevisions, _parameters);
            // optional
            request.TrySetQueryStringParameter(ParameterName.WithData, _parameters);

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                case 400:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 16
0
        /// <summary>
        /// Retrieves information about currently connected database.
        /// </summary>
        public AResult<Dictionary<string, object>> GetCurrent()
        {
            var request = new Request(HttpMethod.GET, ApiBaseUri.Database, "/current");

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Body<Dictionary<string, object>>>();

                    result.Success = (body != null);
                    result.Value = body.Result;
                    break;
                case 400:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 17
0
 /// <summary>
 /// Creates index within specified collection in current database context.
 /// </summary>
 public AResult<Dictionary<string, object>> Create(string collectionName)
 {
     var request = new Request(HttpMethod.POST, ApiBaseUri.Index, "");
     var bodyDocument = new Dictionary<string, object>();
     
     // required
     request.QueryString.Add(ParameterName.Collection, collectionName);
     
     // required
     bodyDocument.String(ParameterName.Type, _parameters.String(ParameterName.Type));
     
     switch (_parameters.Enum<AIndexType>(ParameterName.Type))
     {
         case AIndexType.Cap:
             Request.TrySetBodyParameter(ParameterName.ByteSize, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Size, _parameters, bodyDocument);
             break;
         case AIndexType.Fulltext:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.MinLength, _parameters, bodyDocument);
             break;
         case AIndexType.Geo:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.GeoJson, _parameters, bodyDocument);
             break;
         case AIndexType.Hash:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Sparse, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Unique, _parameters, bodyDocument);
             break;
         case AIndexType.Skiplist:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Sparse, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Unique, _parameters, bodyDocument);
             break;
         default:
             break;
     }
     
     request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);
     
     var response = _connection.Send(request);
     var result = new AResult<Dictionary<string, object>>(response);
     
     switch (response.StatusCode)
     {
         case 200:
         case 201:
             if (response.DataType == DataType.Document)
             {
                 result.Value = (response.Data as Dictionary<string, object>);
                 result.Success = (result.Value != null);
             }
             break;
         case 400:
         case 404:
         default:
             // Arango error
             break;
     }
     
     _parameters.Clear();
     
     return result;
 }
Esempio n. 18
0
        /// <summary>
        /// Renames specified collection.
        /// </summary>
        public AResult<Dictionary<string, object>> Rename(string collectionName, string newCollectionName)
        {
            var request = new Request(HttpMethod.PUT, ApiBaseUri.Collection, "/" + collectionName + "/rename");
            var bodyDocument = new Dictionary<string, object>()
                .String(ParameterName.Name, newCollectionName);

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 19
0
 /// <summary>
 /// Deletes specified index.
 /// </summary>
 /// <exception cref="ArgumentException">Specified id value has invalid format.</exception>
 public AResult<Dictionary<string, object>> Delete(string id)
 {
     if (!ADocument.IsID(id))
     {
         throw new ArgumentException("Specified id value (" + id + ") has invalid format.");
     }
     
     var request = new Request(HttpMethod.DELETE, ApiBaseUri.Index, "/" + id);
     
     var response = _connection.Send(request);
     var result = new AResult<Dictionary<string, object>>(response);
     
     switch (response.StatusCode)
     {
         case 200:
             if (response.DataType == DataType.Document)
             {
                 result.Value = (response.Data as Dictionary<string, object>);
                 result.Success = (result.Value != null);
             }
             break;
         case 400:
         case 404:
         default:
             // Arango error
             break;
     }
     
     _parameters.Clear();
     
     return result;
 }
Esempio n. 20
0
        /// <summary>
        /// Creates new collection in current database context.
        /// </summary>
        public AResult<Dictionary<string, object>> Create(string collectionName)
        {
            var request = new Request(HttpMethod.POST, ApiBaseUri.Collection, "");
            var bodyDocument = new Dictionary<string, object>();

            // required
            bodyDocument.String(ParameterName.Name, collectionName);
            // optional
            Request.TrySetBodyParameter(ParameterName.Type, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.WaitForSync, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.JournalSize, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.DoCompact, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsSystem, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsVolatile, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsType, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsAllowUserKeys, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsIncrement, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsOffset, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.NumberOfShards, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.ShardKeys, _parameters, bodyDocument);

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Esempio n. 21
0
        /// <summary>
        /// Deletes specified database.
        /// </summary>
        public AResult<bool> Drop(string databaseName)
        {
            var request = new Request(HttpMethod.DELETE, ApiBaseUri.Database, "/" + databaseName);

            var response = _connection.Send(request);
            var result = new AResult<bool>(response);

            switch (response.StatusCode)
            {
                case 200:
                    if (response.DataType == DataType.Document)
                    {
                        result.Value = (response.Data as Dictionary<string, object>).Bool("result");
                        result.Success = result.Value;
                    }
                    break;
                case 400:
                case 403:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }