protected ActionResult AjaxRedirectToRoute(RouteEnum route, object routeValues, bool updateBodyOnly = false) { if (IsJsonRequest()) { return(Json(new JsonResponse(updateBodyOnly ? ResponseCode.RedirectToBody : ResponseCode.Ok) { RedirectUrl = Url.RouteUrl(route.ToString(), routeValues) }, JsonRequestBehavior.AllowGet)); } return(RedirectToRoute(route.ToString(), routeValues)); }
public override void Start() { if (Running) { return; } log.InfoFormat("Starting {0}", GetTypeName()); base.Start(); server = new RemoteControlServer(this.ApiBindAddress, this.ApiAccessPort); server.RequestReceived += (object sender, RequestReceivedEventArgs e) => { if (e.Context.Request.Url.AbsolutePath == "/api/v1/test") { server.SendResponseJson(200, new InfoResponse() { name = "BlinkStick Client", version = ApplicationDataModel.ApplicationVersion, versionFull = ApplicationDataModel.ApplicationFullVersion }, e.Context.Response); e.Handled = true; } RouteEnum route = RouteEnum.Unrecognized; Match m = SetColorRegex.Match(e.Context.Request.Url.AbsolutePath); if (m.Success) { route = RouteEnum.SetColor; } else { m = PatternRegex.Match(e.Context.Request.Url.AbsolutePath); if (m.Success) { route = RouteEnum.PlayPattern; } } BlinkStickDeviceSettings ledSettings = null; if (route != RouteEnum.Unrecognized) { String serial = m.Groups[1].ToString(); ledSettings = DataModel.FindBySerial(serial); if (ledSettings == null) { server.SendResponseJson(422, new ErrorResponse() { error = String.Format("BlinkStick with serial number {0} not found", serial) }, e.Context.Response); e.Handled = true; return; } else if (ledSettings.Led == null) { server.SendResponseJson(422, new ErrorResponse() { error = String.Format("BlinkStick with serial number {0} not connected", serial) }, e.Context.Response); e.Handled = true; return; } } switch (route) { case RouteEnum.SetColor: ProcessSetColorRequest(e, ledSettings); break; case RouteEnum.PlayPattern: ProcessPlayPatternRequest(e, ledSettings); break; default: break; } }; server.Start(); log.DebugFormat("{0} started", GetTypeName()); }