Пример #1
0
        /// <summary>
        /// Deletes resource on the server
        /// </summary>
        /// <param name="resource">Resource to delete</param>
        /// <param name="auth">Authorization info</param>
        protected virtual void Delete(object resource, Authorization auth = null)
        {
            // invoke delete
            var resourceId = GetResourceId(resource);
            var response = Client.Delete(ResourceUri + "/" + resourceId, auth: auth);

            // verify response object
            ExpectResponseStatus(response, ExpectedDeletedStatus);
        }
Пример #2
0
        /// <summary>
        /// Creates resource on the server
        /// </summary>
        /// <param name="resourceObject">Resource object to create</param>
        /// <param name="auth">Authorization info</param>
        /// <returns>JObject that represents server response</returns>
        protected virtual JObject Create(object resourceObject, Authorization auth = null)
        {
            // invoke create
            var response = Client.Post(ResourceUri, resourceObject, auth: auth);

            // verify response object
            ExpectResponseStatus(response, ExpectedCreatedStatus);
            Expect(response.Json, Is.InstanceOf<JObject>());
            RegisterForDeletion(ResourceUri + "/" + GetResourceId((JObject)response.Json));
            return (JObject)response.Json;
        }
Пример #3
0
        /// <summary>
        /// Updates resource on the server
        /// </summary>
        /// <param name="resource">Resource to update</param>
        /// <param name="resourceObject">Resource object to send as update</param>
        /// <param name="auth">Authorization info</param>
        /// <returns>JObject that represents server response</returns>
        protected virtual JObject Update(object resource, object resourceObject, Authorization auth = null)
        {
            // invoke update
            var resourceId = GetResourceId(resource);
            var response = Client.Put(ResourceUri + "/" + resourceId, resourceObject, auth: auth);

            // verify response object
            ExpectResponseStatus(response, 200);
            Expect(response.Json, Is.InstanceOf<JObject>());
            Expect(GetResourceId((JObject)response.Json), Is.EqualTo(resourceId.ToString()));
            return (JObject)response.Json;
        }
Пример #4
0
        /// <summary>
        /// Gets list of resources from the server
        /// </summary>
        /// <param name="auth">Authorization info</param>
        /// <returns>JArray that represents server response</returns>
        protected virtual JArray Get(Authorization auth = null)
        {
            // invoke get
            var response = Client.Get(ResourceUri, auth: auth);

            // verify response object
            ExpectResponseStatus(response, 200);
            Expect(response.Json, Is.InstanceOf<JArray>());
            return (JArray)response.Json;
        }
Пример #5
0
        /// <summary>
        /// Gets list of resources from the server
        /// </summary>
        /// <param name="query">Optional query parameters</param>
        /// <param name="auth">Authorization info</param>
        /// <returns>JArray that represents server response</returns>
        protected virtual JArray Get(Dictionary<string, string> query, Authorization auth = null)
        {
            // invoke get
            var response = Client.Get(ResourceUri + "?" +
                string.Join("&", query.Select(q => string.Format("{0}={1}", q.Key, Uri.EscapeUriString(q.Value)))), auth: auth);

            // verify response object
            ExpectResponseStatus(response, 200);
            Expect(response.Json, Is.InstanceOf<JArray>());
            return (JArray)response.Json;
        }
Пример #6
0
 /// <summary>
 /// Creates an access key and returns corresponding Authorization object
 /// </summary>
 /// <param name="user">User authorization object</param>
 /// <param name="action">Allowed access key action</param>
 /// <param name="networkIds">Allowed networks</param>
 /// <param name="deviceGuids">Allowed devices</param>
 /// <returns>Coresponding Authorization object</returns>
 protected Authorization CreateAccessKey(Authorization user, string action, int[] networkIds = null, string[] deviceGuids = null)
 {
     return(CreateAccessKey(user, new[] { action }, networkIds, deviceGuids));
 }
Пример #7
0
        public JsonResponse Run(string method, string url, JObject jsonRequest = null, Authorization auth = null)
        {
            if (string.IsNullOrEmpty(method))
            {
                throw new ArgumentException("Method is null or empty!", "method");
            }
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentException("URL is null or empty!", "url");
            }

            // prepare request
            var request = (HttpWebRequest)HttpWebRequest.Create(BaseUrl + url);

            request.Headers.Add("ClientVersion", DeviceHive.Core.Version.ApiVersion);
            request.Method = method;
            request.Accept = "application/json";
            if (auth != null)
            {
                switch (auth.Type)
                {
                case "User":
                    request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(
                        Encoding.UTF8.GetBytes(string.Format("{0}:{1}", auth.Login, auth.Password)));
                    break;

                case "AccessKey":
                    request.Headers["Authorization"] = "Bearer " + auth.Login;
                    break;

                case "Device":
                    request.Headers["Auth-DeviceID"]  = auth.Login;
                    request.Headers["Auth-DeviceKey"] = auth.Password;
                    break;
                }
            }
            if (jsonRequest != null)
            {
                request.ContentType = "application/json";
                using (var stream = request.GetRequestStream())
                {
                    using (var writer = new StreamWriter(stream))
                    {
                        writer.Write(jsonRequest.ToString());
                    }
                }
            }

            // perform a call
            HttpWebResponse response;

            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = (HttpWebResponse)ex.Response;
            }

            // parse response
            using (var stream = response.GetResponseStream())
            {
                using (var reader = new StreamReader(stream))
                {
                    var responseString = reader.ReadToEnd();
                    try
                    {
                        var json = string.IsNullOrEmpty(responseString) ? null : JToken.Parse(responseString);
                        return(new JsonResponse((int)response.StatusCode, json));
                    }
                    catch (JsonReaderException ex)
                    {
                        throw new WebException(string.Format("Error while parsing server response! " +
                                                             "Status: {0}, Response: {1}", (int)response.StatusCode, responseString), ex);
                    }
                }
            }
        }
Пример #8
0
 public JsonResponse Delete(string url, Authorization auth = null)
 {
     return(Run("DELETE", url, auth: auth));
 }
Пример #9
0
 public JsonResponse Put(string url, object request, Authorization auth = null)
 {
     return(Run("PUT", url, jsonRequest: JObject.FromObject(request), auth: auth));
 }
Пример #10
0
 public JsonResponse Get(string url, Authorization auth = null)
 {
     return(Run("GET", url, auth: auth));
 }