Пример #1
0
        public ExtentionsModule(ExtentionsProvider provider)
            : base("/extentions")
        {
            Get["/get-products-by-url"] = p =>
            {
                dynamic result = null;

                string url          = Request.Query.url;
                string campaignId   = Request.Query.campaignid;
                string responseType = Request.Query.responsetype == null ? "html" : Request.Query.responsetype;
                bool   qaMode       = Request.Query.qamode == "true" ? true : false;

                dynamic cookies = new ExpandoObject();

                cookies.userId = Request.Cookies.ContainsKey("user_id") ? Request.Cookies["user_id"] : "";

                try
                {
                    result = provider.GetProductsByUrl(url, campaignId, cookies, qaMode);
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);

                    result = ex;

                    return(new JsonResponse(result));
                }

                switch (responseType)
                {
                case "json":
                    return(new JsonResponse(result));

                case "html":
                    return(View["market", result]);

                default:
                    return(View["market", result]);
                }
            };
            Get["/get-products-by-trigger"] = p =>
            {
                dynamic result = null;

                string url          = Request.Query.url;
                string campaignId   = Request.Query.campaignid;
                string sid          = Request.Query.sid;
                string responseType = Request.Query.responsetype == null ? "html" : Request.Query.responsetype;
                bool   qaMode       = Request.Query.qamode == "true" ? true : false;

                dynamic cookies = new ExpandoObject();

                cookies.cookiesEnabled = Request.Cookies.ContainsKey("test_cookie") ? true : false;
                cookies.rtPointer      = Request.Cookies.ContainsKey("rt_pointer") ? Request.Cookies["rt_pointer"] : "0";
                cookies.rtStack        = Request.Cookies.ContainsKey("rt_stack") ? Request.Cookies["rt_stack"] : "{}";
                cookies.rtShowCount    = Request.Cookies.ContainsKey("rt_show_count") ? Request.Cookies["rt_show_count"] : "0";
                cookies.rtLastShown    = Request.Cookies.ContainsKey("rt_last_shown") ? Request.Cookies["rt_last_shown"] : "0";
                cookies.userId         = Request.Cookies.ContainsKey("user_id") ? Request.Cookies["user_id"] : "";

                try
                {
                    result = provider.GetProductsByTrigger(url, campaignId, sid, cookies, qaMode);
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);

                    result = ex;

                    return(new JsonResponse(result));
                }

                switch (responseType)
                {
                case "json":
                {
                    var response = new JsonResponse(result);

                    if (result.rt_pointer != null)
                    {
                        response.AddCookie("rt_pointer", (string)result.rt_pointer, DateTime.Now.AddYears(2));
                    }

                    if (result.rt_stack != null)
                    {
                        response.AddCookie("rt_stack", (string)result.rt_stack, DateTime.Now.AddYears(2));
                    }

                    if (result.rt_show_count != null)
                    {
                        response.AddCookie("rt_show_count", (string)result.rt_show_count, DateTime.Now.AddDays(1));
                    }

                    if (result.rt_last_shown != null)
                    {
                        response.AddCookie("rt_last_shown", (string)result.rt_last_shown, DateTime.Now.AddYears(2));
                    }

                    response.AddCookie("user_id", (string)result.user_id, DateTime.Now.AddYears(2));
                    response.AddCookie("impression_id", (string)result.impression_id, DateTime.Now.AddYears(2));

                    return(response);
                }

                case "html":
                    return(View["market", result]);

                default:
                    return(View["market", result]);
                }
            };
            Get["/get-js"] = p =>
            {
                string result = null;

                try
                {
                    string guid        = ConfigurationManager.AppSettings["GUID"];
                    string requsetGuid = Request.Headers.IfNoneMatch.Count() == 0 ?
                                         null : Request.Headers.IfNoneMatch.ToList()[0];

                    if (requsetGuid == guid)
                    {
                        return(new Response().StatusCode = HttpStatusCode.NotModified);
                    }

                    string campaignId = Request.Query.campaignId;
                    string sid        = Request.Query.sid;
                    string qaMode     = Request.Query.qaMode == "true" ? "true" : "false";

                    string jsFilePath = string.Format(@"{0}\js\actualclick\actualclick-gateway.js",
                                                      ConfigurationManager.AppSettings["DealFinderCdnFolder"]);

                    string jsFile = File.ReadAllText(jsFilePath);

                    jsFile = jsFile.Replace("$campaignId$", campaignId);
                    jsFile = jsFile.Replace("$sid$", sid);
                    jsFile = jsFile.Replace("$qaMode$", qaMode);
                    jsFile = jsFile.Replace("$version$", guid);

                    result = jsFile;
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);

                    result = ex.Message;
                }

                return(Response.AsText(result, "application/javascript")
                       .WithHeader("Etag", ConfigurationManager.AppSettings["GUID"])
                       .AddCookie("test_cookie", "test_cookie", DateTime.Now.AddYears(2)));
            };
            Get["/get-html"] = p =>
            {
                return(View["extentions"]);
            };
            Get["/get-about"] = p =>
            {
                return(View["market-about"]);
            };
            Get["/log-timers"] = p =>
            {
                dynamic result = null;

                try
                {
                    string  decodedData = Base64Decode(Request.Query.data);
                    dynamic requestJson = JObject.Parse(decodedData);

                    string campaignId  = requestJson.campaignId;
                    string url         = requestJson.url;
                    string cachedValue = requestJson.cachedValue;
                    string userId      = Request.Cookies.ContainsKey("user_id") ? Request.Cookies["user_id"] : "";
                    string imressionId = Request.Cookies.ContainsKey("impression_id") ? Request.Cookies["impression_id"] : "";

                    provider.LogTimers(url, campaignId, userId, imressionId, cachedValue, requestJson.timers);
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);
                }

                return(new JsonResponse(result));
            };
            Get["/clear-cache"] = p =>
            {
                dynamic result = null;

                try
                {
                    var enumerator = HttpContext.Current.Cache.GetEnumerator();

                    result = new List <dynamic>();

                    while (enumerator.MoveNext())
                    {
                        HttpContext.Current.Cache.Remove((string)enumerator.Key);

                        result.Add("removed cached key: " + (string)enumerator.Key);
                        result.Add("</br>");
                    }

                    var keys = MemoryCache.Default.Select(x => x.Key).ToList();

                    foreach (var key in keys)
                    {
                        MemoryCache.Default.Remove(key);

                        result.Add("removed cached key: " + key);
                        result.Add("</br>");
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);

                    result = ex;
                }

                return(new JsonResponse(result, false, "text/html"));
            };
        }