vendredi 18 mars 2016

How to return a JSONAPI array from web api controller to ember model

I'm trying to create a validation using the server error response, but I'm unable to pass an error object to my ember properly. Let's say I have a login page, when the user enter's an incorrect email/password, or the user the data that the user requested doesn't exist I want my server to return those error messages. But I am unable to do so, Here's what I have so far.

 //Here's my controller
 public class LoginController : ApiController
 [HttpPost]
    public object Login(Model.ViewModel.Login _cred)
    {
        var user = userAccountService.FindUser(_cred.UserName, _cred.Password);
        _cred.Password = "";
        if (user != null)
        {
            string baseAddress = "http://localhost:34914";
            using (var client = new HttpClient())
            {
                var form = new Dictionary<string, string>
                {
                   {"grant_type", "password"},
                   {"username", user.Username},
                   {"password", user.Password},
                };
                var tokenResponse = client.PostAsync(baseAddress + "/token", new FormUrlEncodedContent(form)).Result;
                var token = tokenResponse.Content.ReadAsStringAsync().Result;  //tokenResponse.Content.ReadAsAsync<Token>;

                Model.ViewModel.Token returnToken = JsonConvert.DeserializeObject<Model.ViewModel.Token>(token);
                _cred.AccessToken = returnToken.Access_Token;

                return _cred;
            }
        }
        else
        {
            var error = new Utility.JSONAPI.Error.JSONAPIError();
            error.Errors.Add(new Utility.JSONAPI.Error.ErrorObject()
            {
                Id = 1,
                Title = "Unauthorized",
                Detail = "Invalid username and password"
            });
            return Request.CreateResponse((HttpStatusCode)422, error);// (HttpStatusCode.InternalServerError, error);
        }
    }
}


 //JSONAPI Class
 public class JSONAPIError
 {
    private List<ErrorObject> m_errors;
    public List<ErrorObject> Errors
    {
        get
        {
            if (m_errors == null) m_errors = new List<ErrorObject>();
            return m_errors;
        }
    }
}


 public class ErrorObject
{
    public int Id { get; set; }
    public ErrorLinksObject Links { get; set; }
    public string Status { get; set; }
    public string Code { get; set; }
    public string Title { get; set; }
    public string Detail { get; set; }
    public SourceObject Source { get; set; }
    public object Meta { get; set; }
}

public class ErrorLinksObject
{
    public ErrorLinkObject About { get; set; }
}

public class ErrorLinkObject
{
    public string Href { get; set; }
    public object Meta { get; set; }
}

public class SourceObject
{
    public string Pointer { get; set; }
    public string Parameter { get; set; }
}

Give me some light in here.




Aucun commentaire:

Enregistrer un commentaire