示例#1
0
        public virtual string Delete()
        {
            RequestorResponse requestorResponse = Requestor.Delete(_url, _strUser, _strPassword, _strAuthOrganizationID);

            this.HandleError("Delete" + _resourceName, requestorResponse);
            return(requestorResponse.Content);
        }
示例#2
0
        public virtual string Update(TEntity entity)
        {
            RequestorResponse requestorResponse = Requestor.PutString(_url, entity, _strUser, _strPassword, _strAuthOrganizationID);

            this.HandleError("Update" + _resourceName, requestorResponse);
            return(requestorResponse.Content);
        }
示例#3
0
        public static RequestorResponse PutString <T>(string url, T content, string username, string password, string authOrganizationId)
        {
            string            jsonString        = JsonConvert.SerializeObject(content);
            RequestorResponse requestorResponse = GetResponse(url, "PUT", jsonString, username, password, authOrganizationId);

            return(requestorResponse);
        }
示例#4
0
        public virtual TEntity Get()
        {
            RequestorResponse requestorResponse = Requestor.Get(_url, _strUser, _strPassword, _strAuthOrganizationID);

            this.HandleError("Get" + _resourceName, requestorResponse);
            TEntity entity = Mapper <TEntity> .MapFromJson(requestorResponse.Content);

            return(entity);
        }
示例#5
0
        public virtual IEnumerable <TEntity> List()
        {
            RequestorResponse requestorResponse = Requestor.Get(_url, _strUser, _strPassword, _strAuthOrganizationID);

            this.HandleError("List" + _resourceName, requestorResponse);
            ForteListResult <TEntity> entityResults = JsonConvert.DeserializeObject <ForteListResult <TEntity> >(requestorResponse.Content);

            return(entityResults.results);
        }
示例#6
0
        protected void HandleError(string source, RequestorResponse requestorResponse)
        {
            if (requestorResponse.StatusCode.ToString("D").StartsWith("2"))
            {
                return;
            }

            ForteException forteException = new ForteException();

            forteException.Source               = source;
            forteException.HttpStatusCode       = requestorResponse.StatusCode;
            forteException.ForteError.Message   = requestorResponse.Content;
            forteException.ForteError.ErrorType = requestorResponse.Message;
            throw forteException;
        }
示例#7
0
        internal static RequestorResponse GetResponse(String URL, String method, string requestBody, string username, string password, string authOrganizationId)
        {
            HttpResponseMessage response;

            using (var client = new HttpClient())
            {
                string authHeaderText = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", username, password)));
                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", authHeaderText);
                client.DefaultRequestHeaders.Add("x-forte-auth-organization-id", authOrganizationId);

                StringContent content = new System.Net.Http.StringContent(requestBody, Encoding.UTF8, "application/json");
                try
                {
                    switch ((method).ToUpper())
                    {
                    default:
                    case "GET":
                        response = client.GetAsync(URL).Result;
                        break;

                    case "POST":
                        response = client.PostAsync(URL, content).Result;
                        break;

                    case "PUT":
                        response = client.PutAsync(URL, content).Result;
                        break;

                    case "DELETE":
                        response = client.DeleteAsync(URL).Result;
                        break;
                    }
                }
                catch (AggregateException webException)
                {
                    if (webException.Data != null)
                    {
                        var forteError = new ForteError();
                        forteError.ErrorType = "AggregateException";
                        forteError.Message   = webException.InnerException.ToString();
                        var statusCode = HttpStatusCode.Forbidden;
                        throw new ForteException(statusCode, forteError, forteError.Message);
                    }

                    throw;
                }
                catch (WebException webException)
                {
                    if (webException.Response != null)
                    {
                        var statusCode = ((HttpWebResponse)webException.Response).StatusCode;

                        var forteError = new ForteError();

                        if (webException.Response.ResponseUri.ToString().Contains("oauth"))
                        {
                            forteError = Mapper <ForteError> .MapFromJson(ReadStream(webException.Response.GetResponseStream()));
                        }
                        else
                        {
                            forteError = Mapper <ForteError> .MapFromJson(ReadStream(webException.Response.GetResponseStream()), "error");
                        }

                        throw new ForteException(statusCode, forteError, forteError.Message);
                    }

                    throw;
                }
                catch (Exception ex)
                {
                    throw ex;
                }


                RequestorResponse requestorResponse = new RequestorResponse();

                if (response != null && response.IsSuccessStatusCode)
                {
                    requestorResponse.Content    = response.Content.ReadAsStringAsync().Result;
                    requestorResponse.StatusCode = response.StatusCode;

                    switch ((method).ToUpper())
                    {
                    case "POST":
                        requestorResponse.Message = "Record Successfully.";
                        break;

                    case "PUT":
                        requestorResponse.Message = "Record Successfully Updated.";
                        break;

                    case "DELETE":
                        requestorResponse.Message = "Record Successfully Deleted.";
                        break;

                    default:
                        break;
                    }
                    return(requestorResponse);
                }
                else if (response != null && !(response.IsSuccessStatusCode))
                {
                    requestorResponse.Content    = response.Content.ReadAsStringAsync().Result;
                    requestorResponse.StatusCode = response.StatusCode;
                    requestorResponse.Message    = "#ERROR#";
                    return(requestorResponse);
                }
                else
                {
                    requestorResponse.Content = response.Content.ReadAsStringAsync().Result;
                    requestorResponse.Message = "#ERROR#";
                    return(requestorResponse);
                }
            }
        }
示例#8
0
        public static RequestorResponse Delete(string URL, string username, string password, string authOrganizationId)
        {
            RequestorResponse requestorResponse = GetResponse(URL, "DELETE", "", username, password, authOrganizationId);

            return(requestorResponse);
        }