예제 #1
0
        public ResponseCollection <User> GetAssignedAssets(ICommonEndpointModel user)
        {
            string response = this.ReqManager.Get(string.Format("{0}/{1}/assets", this.EndPoint, user.Id));
            var    results  = JsonConvert.DeserializeObject <ResponseCollection <User> >(response);

            return(results);
        }
예제 #2
0
        public ResponseCollection <StatusLabel> GetAssignedAssets(ICommonEndpointModel statusLabel)
        {
            string response = _reqManager.Get(string.Format("{0}/{1}/assetlist", _endPoint, statusLabel.Id));
            ResponseCollection <StatusLabel> results = JsonConvert.DeserializeObject <ResponseCollection <StatusLabel> >(response);

            return(results);
        }
예제 #3
0
        public IRequestResponse Checkin(ICommonEndpointModel item)
        {
            string response = this.ReqManager.Post(string.Format("{0}/{1}/checkin", this.EndPoint, item.Id), item);
            var    result   = JsonConvert.DeserializeObject <RequestResponse>(response);

            return(result);
        }
        public void DeserializeStatusLicense_ValidObject_ReturnAsset()
        {
            string obj = File.ReadAllText(@"..\..\TestObjs\license.json");
            ICommonEndpointModel result = JsonConvert.DeserializeObject <ICommonEndpointModel>(obj, new DetectJsonObjectType());

            Assert.IsInstanceOfType(result, typeof(License));
        }
예제 #5
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JToken token = JToken.Load(reader);

            if (token.HasValues == false)
            {
                return(null);
            }

            if (token.Type == JTokenType.Object)
            {
                return(ResponsePayloadConverter.DetectObjectType(token));
            }

            if (token.Type == JTokenType.Array)
            {
                List <ICommonEndpointModel> final = new List <ICommonEndpointModel>();

                foreach (JToken item in token)
                {
                    ICommonEndpointModel result = ResponsePayloadConverter.DetectObjectType(item);
                    if (result != null)
                    {
                        final.Add(result);
                    }
                }

                return(final);
            }

            return(null);
        }
예제 #6
0
        public IRequestResponse Update(ICommonEndpointModel toUpdate)
        {
            IRequestResponse result;
            string           response = _reqManager.Put(string.Format("{0}/{1}", _endPoint, toUpdate.Id), toUpdate);

            result = JsonConvert.DeserializeObject <RequestResponse>(response);
            return(result);
        }
예제 #7
0
        public IRequestResponse Checkout(ICommonEndpointModel item)
        {
            IRequestResponse result;
            string           response = _reqManager.Post(string.Format("{0}/{1}/checkout", _endPoint, item.Id), item);

            result = JsonConvert.DeserializeObject <RequestResponse>(response);
            return(result);
        }
예제 #8
0
        /// <summary>
        /// Creates a new object from the provided CommonResponseObject
        /// </summary>
        /// <param name="toCreate"></param>
        /// <returns></returns>
        public IRequestResponse Create(ICommonEndpointModel toCreate)
        {
            IRequestResponse response;

            string res = _reqManager.Post(_endPoint, toCreate);

            response = JsonConvert.DeserializeObject <RequestResponse>(res);
            return(response);
        }
예제 #9
0
        public string Put(string path, ICommonEndpointModel item)
        {
            CheckApiTokenAndUrl();

            HttpResponseMessage response = Client.PutAsync(path, BuildQueryString(item)).Result;
            string result = null;

            if (response.IsSuccessStatusCode)
            {
                result = response.Content.ReadAsStringAsync().Result;
            }

            return(result);
        }
예제 #10
0
        public string Post(string path, ICommonEndpointModel item)
        {
            Console.WriteLine("Posting With Async");
            CheckApiTokenAndUrl();

            var    response = Task.Run(() => Client.PostAsync(path, BuildQueryString(item))).Result;
            string result   = null;

            if (response.IsSuccessStatusCode)
            {
                result = response.Content.ReadAsStringAsync().Result;
            }

            return(result);
        }
        public string Post(string path, ICommonEndpointModel item)
        {
            CheckApiTokenAndUrl();
            RestRequest req = new RestRequest(Method.POST);

            req.Resource = path;

            Dictionary <string, string> parameters = item.BuildQueryString();

            foreach (KeyValuePair <string, string> kvp in parameters)
            {
                req.AddParameter(kvp.Key, kvp.Value);
            }
            // TODO: Add error checking
            IRestResponse res = Client.Execute(req);

            return(res.Content);
        }
예제 #12
0
        public string Post(string path, ICommonEndpointModel item)
        {
            CheckApiTokenAndUrl();
            var req = new RestRequest(Method.POST)
            {
                Resource = path
            };

            var parameters = this.QueryParameterBuilder.GetParameters(item);

            foreach (var kvp in parameters)
            {
                req.AddParameter(kvp.Key, kvp.Value);
            }

            // TODO: Add error checking
            var res = _client.Execute(req);

            return(res.Content);
        }
예제 #13
0
        private FormUrlEncodedContent BuildQueryString(ICommonEndpointModel item)
        {
            var values = this.QueryParameterBuilder.GetParameters(item);

            // If it's an asset check if there's a checkout request.  Also process custom fields

            var asset = item as Asset;

            if (asset != null)
            {
                // If an asset as this set we know it needs to be check out.
                var assetCheckoutRequest = asset.CheckoutRequest;

                if (assetCheckoutRequest != null)
                {
                    var additionalParameters = this.QueryParameterBuilder.GetParameters(asset.CheckoutRequest);

                    foreach (var kvp in additionalParameters)
                    {
                        values.Add(kvp.Key, kvp.Value);
                    }

                    return(new FormUrlEncodedContent(values));
                }

                // Assets are the only ones that have custom fields
                if (asset.CustomFields != null)
                {
                    foreach (var fieldValuePair in asset.CustomFields)
                    {
                        values.Add(fieldValuePair.Key, fieldValuePair.Value);
                    }
                }
            }

            var content = new FormUrlEncodedContent(values);

            return(content);
        }
예제 #14
0
 public IRequestResponse Delete(ICommonEndpointModel toDelete)
 {
     return(Delete((int)toDelete.Id));
 }
예제 #15
0
        public FormUrlEncodedContent BuildQueryString(ICommonEndpointModel item)
        {
            Dictionary <string, string> values = new Dictionary <string, string>();

            // If it's an asset check if there's a checkout request.  Also process custom fields

            Asset asset = item as Asset;

            if (asset != null)
            {
                // If an asset as this set we know it needs to be check out.
                if (asset.CheckoutRequest != null)
                {
                    foreach (PropertyInfo prop in asset.CheckoutRequest.GetType().GetProperties())
                    {
                        var propValue = (prop.GetValue(asset.CheckoutRequest) != null) ? prop.GetValue(asset.CheckoutRequest).ToString() : null;

                        if (propValue == null)
                        {
                            continue;
                        }

                        var result = prop.GetCustomAttributesData()
                                     .Where(p => p.Constructor.DeclaringType.Name == "OptionalRequestHeader")
                                     .FirstOrDefault();

                        if (result == null)
                        {
                            continue;
                        }

                        string keyname = result.ConstructorArguments.First().ToString().Replace("\"", "").ToLower();

                        values.Add(keyname, propValue);
                    }

                    return(new FormUrlEncodedContent(values));
                }

                // Assets are the only ones that have custom fields
                if (asset != null && asset.CustomFields != null)
                {
                    foreach (KeyValuePair <string, string> custField in asset.CustomFields)
                    {
                        values.Add(custField.Key, custField.Value);
                    }
                }
            }


            foreach (PropertyInfo prop in item.GetType().GetProperties())
            {
                foreach (CustomAttributeData attData in prop.GetCustomAttributesData())
                {
                    string typeName = attData.Constructor.DeclaringType.Name;

                    if (typeName == "RequiredRequestHeader" || typeName == "OptionalRequestHeader")
                    {
                        var propValue = prop.GetValue(item);

                        // Abort in missing required headers
                        if (propValue == null && typeName == "RequiredRequestHeader")
                        {
                            throw new RequiredValueIsNullException(string.Format("{0} Cannot Be Null", prop.Name));
                        }

                        if (propValue != null)
                        {
                            string attName = attData.ConstructorArguments.First().ToString().Replace("\"", "");

                            values.Add(attName, propValue.ToString());
                        }
                    }
                }
            }



            FormUrlEncodedContent content = new FormUrlEncodedContent(values);

            return(content);
        }
예제 #16
0
 public string Put(string path, ICommonEndpointModel item)
 {
     throw new NotImplementedException();
 }