Beispiel #1
0
        public KCInternalReponse RequestAPIAccess(KCSiteMaster xSiteMaster)
        {
            KCInternalReponse response = new KCInternalReponse();

            try
            {
                WebHeaderCollection headers = new WebHeaderCollection();
                headers["Cache-Control"] = xSiteMaster.ChacheControlHeader;
                headers["soapaction"]    = xSiteMaster.SoapCaptionHeader;
                string reqbody     = "<soapenv:Envelope xmlns:soapenv=\"" + xSiteMaster.Envelop + "\" xmlns:web=\"" + xSiteMaster.Webservices + "\">\r\n   <soapenv:Header>\r\n      <web:APICredentials>\r\n         <web:DeveloperKey>" + xSiteMaster.DevKey + "</web:DeveloperKey>\r\n         <web:Password>" + xSiteMaster.DevPassword + "</web:Password>\r\n      </web:APICredentials>\r\n   </soapenv:Header>\r\n   <soapenv:Body>\r\n      <web:RequestAccess>\r\n         <web:localID>" + xSiteMaster.ProfileId + "</web:localID>\r\n      </web:RequestAccess>\r\n   </soapenv:Body>\r\n</soapenv:Envelope>";
                var    apiresponse = KCApiHelper.CallWebAPI(xSiteMaster.ApiResponse, reqbody, "POST", headers, "text/xml; charset=utf-8");

                if (apiresponse == null)
                {
                    PXTrace.WriteError(KCConstants.RequestApiAccess + " - " + KCMessages.NullException);
                    response.IsSuccess = false;
                    response.Message   = string.Format(KCMessages.RequestApiAccessFailed, "");
                }

                if (apiresponse.IsSuccess)
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(apiresponse.response);
                    string json = JsonConvert.SerializeXmlNode(doc);

                    if (json != null)
                    {
                        JObject obj           = JsonConvert.DeserializeObject <JObject>(json);
                        JObject innerObj      = obj["soap:Envelope"] as JObject;
                        JObject lolSummorLvl  = innerObj["soap:Body"] as JObject;
                        JObject lolSummorLvl2 = lolSummorLvl["RequestAccessResponse"] as JObject;
                        JObject lolSummorLvl3 = lolSummorLvl2["RequestAccessResult"] as JObject;
                        string  status        = (string)lolSummorLvl3["Status"];
                        string  MessageCode   = (string)lolSummorLvl3["MessageCode"];
                        string  Message       = "";

                        if (status == KCConstants.Failure)
                        {
                            Message = (string)lolSummorLvl3["Message"];
                        }

                        string ResultData = (string)lolSummorLvl3["ResultData"];


                        if (status != KCConstants.Failure)
                        {
                            response.IsSuccess = true;
                            response.Message   = KCMessages.RequestApiAccessSuccess;
                        }
                        else
                        {
                            string errormsg = string.Format(KCConstants.DualParameters, KCConstants.RequestApiAccess, Message);
                            PXTrace.WriteError(errormsg);

                            response.IsSuccess = false;
                            response.Message   = string.Format(KCMessages.RequestApiAccessFailed, Message);
                        }
                    }
                    else
                    {
                        string errormsg = string.Format(KCConstants.DualParameters, KCConstants.RequestApiAccess, KCMessages.XmlNullException);
                        PXTrace.WriteError(errormsg);

                        PXTrace.WriteError(KCConstants.RequestApiAccess + " - " + KCMessages.XmlNullException);
                        response.IsSuccess = false;
                        response.Message   = string.Format(KCMessages.RequestApiAccessFailed, "");
                    }
                }
                else
                {
                    string errormsg = string.Format(KCConstants.DualParameters, KCConstants.RequestApiAccess, apiresponse.Message);
                    PXTrace.WriteError(errormsg);

                    response.IsSuccess = false;
                    response.Message   = string.Format(KCMessages.RequestApiAccessFailed, "");
                }

                return(response);
            }
            catch (Exception ex)
            {
                string errormsg = string.Format(KCConstants.DualParameters, KCConstants.RequestApiAccess, ex.Message);
                PXTrace.WriteError(errormsg);

                response.IsSuccess = false;
                response.Message   = string.Format(KCMessages.RequestApiAccessFailed, ex.Message);
                return(response);
            }
        }
Beispiel #2
0
        public KCInternalReponse VerifyApiAccess(KCSiteMaster xSiteMaster)
        {
            try
            {
                KCInternalReponse response = new KCInternalReponse();
                if (xSiteMaster != null)
                {
                    xSiteMaster.ApplicationId = !string.IsNullOrEmpty(xSiteMaster.ApplicationId) ? xSiteMaster.ApplicationId.Trim() : "";
                    xSiteMaster.SharedSecret  = !string.IsNullOrEmpty(xSiteMaster.SharedSecret) ? xSiteMaster.SharedSecret.Trim() : "";
                    xSiteMaster.RefreshToken  = !string.IsNullOrEmpty(xSiteMaster.RefreshToken) ? xSiteMaster.RefreshToken.Trim() : "";
                }


                byte[] bytes = Encoding.UTF8.GetBytes(string.Format("{0}:{1}", xSiteMaster.ApplicationId, xSiteMaster.SharedSecret));
                WebHeaderCollection headers = new WebHeaderCollection();
                headers["Authorization"] = "Basic " + Convert.ToBase64String(bytes);
                headers["Cache-Control"] = "no-cache";
                string reqbody     = "grant_type=refresh_token&refresh_token=" + xSiteMaster.RefreshToken;
                var    apiresponse = KCApiHelper.CallWebAPI("https://api.channeladvisor.com/oauth2/token", reqbody, "POST", headers);

                if (apiresponse == null)
                {
                    PXTrace.WriteError(KCConstants.VerifyApiAccess + " - " + KCMessages.NullException);
                    response.IsSuccess = false;
                    response.Message   = KCMessages.VerifyApiAccessFailed;
                }

                if (apiresponse.IsSuccess)
                {
                    var rootthread = JsonConvert.DeserializeObject <KCAPIAccessToken>(apiresponse.response);
                    if (rootthread != null)
                    {
                        response.IsSuccess = true;
                        response.Message   = KCMessages.VerifyApiAccessSuccess;
                        response.Data      = apiresponse.response;
                    }
                    else
                    {
                        string errormsg = string.Format(KCConstants.DualParameters, KCConstants.VerifyApiAccess, apiresponse.Message);
                        PXTrace.WriteError(errormsg);
                        response.IsSuccess = false;
                        response.Message   = KCMessages.VerifyApiAccessFailed;
                    }
                }
                else
                {
                    string errormsg = string.Format(KCConstants.DualParameters, KCConstants.VerifyApiAccess, apiresponse.Message);
                    PXTrace.WriteError(errormsg);

                    response.IsSuccess = false;
                    response.Message   = KCMessages.VerifyApiAccessFailed;
                }


                return(response);
            }
            catch (Exception ex)
            {
                string errormsg = string.Format(KCConstants.DualParameters, KCMessages.VerifyApiAccessFailed, ex.Message);
                PXTrace.WriteError(errormsg);

                KCInternalReponse response = new KCInternalReponse();
                response.IsSuccess = false;
                response.Message   = errormsg;
                return(response);
            }
        }