コード例 #1
0
ファイル: FormLogin.cs プロジェクト: bbd33/BillingClientV3
        public FormLogin(FormInfo frmInfo, RestController<SessionInformation> rss )
        {
            _ssi = null;
            _rss = rss;
            _launcher = frmInfo;
            _months = new List<string>() {
                "",
                "Januari",
                "Februari",
                "Maret",
                "April",
                "Mei",
                "Juni",
                "Juli",
                "Agustus",
                "September",
                "November",
                "Oktober",
                "November",
                "Desember"
            };
            _days = new List<string>(){
                "Minggu",
                "Senin",
                "Selasa",
                "Rabu",
                "Kamis",
                "Jumat",
                "Sabtu",

            };
            _frmAdmin = new FormAdmin();
            InitializeComponent();
        }
コード例 #2
0
 /// <summary>
 /// Generates action descriptor from controller
 /// </summary>
 /// <param name="controller"></param>
 /// <returns></returns>
 public ActionDescriptor GenerateActionDescriptor(RestController controller)
 {
     var actionDescriptor = new ActionDescriptor(controller.Route.ActionName);
     var action = GetActionMethodInfo(controller, actionDescriptor.ActionName);
     if (action == null)
         return null;
     MapActionParameters(actionDescriptor, action);
     return actionDescriptor;
 }
コード例 #3
0
        /// <summary>
        ///		Envía un mensaje por HTTP
        /// </summary>
        internal ResponseMessage Send(RestController objController, RequestMessage objRequest)
        {
            ResponseMessage objResult;
            HttpWebRequest objHttpRequest = System.Net.WebRequest.Create(objRequest.GetUrlWithQueryString(true)) as HttpWebRequest;
            byte[] arrBytPostData;

                // Asigna el delegado que trata los errores de certificados en conexiones SSL
                    ServicePointManager.ServerCertificateValidationCallback =
                                      delegate(object objSender, X509Certificate objCertificate,
                                               X509Chain objChain, SslPolicyErrors objSslPolicyErrors)
                                        { return true; // ... descarta todos los errores
                                        };
                // Añade el certificado si es necesario
                    if (!string.IsNullOrEmpty(objController.CertificateFileName))
                        objHttpRequest.ClientCertificates.Add(new X509Certificate2(objController.CertificateFileName));
                // Asigna el proxy
                    if (objController.Proxy.Enabled)
                        { // Crea el proxy
                                objHttpRequest.Proxy = new WebProxy(objController.Proxy.Address, objController.Proxy.MustBypassLocal);
                            // Asigna las credenciales del proxy
                                if (!string.IsNullOrEmpty(objController.Proxy.User))
                                    objHttpRequest.Proxy.Credentials = new NetworkCredential(objController.Proxy.User, objController.Proxy.Password);
                                else
                                    objHttpRequest.UseDefaultCredentials = true;
                        }
                // Asigna las propiedades
                    objHttpRequest.Method = objRequest.MethodDescription;
                    objHttpRequest.ServicePoint.Expect100Continue = false;
                    if (objRequest.Method == RequestMessage.MethodType.Post || objRequest.Method == RequestMessage.MethodType.Put)
                        objHttpRequest.SendChunked = true;
                    objHttpRequest.UserAgent = objController.UserAgent;
                    objHttpRequest.Timeout = objController.TimeOut;
                    objHttpRequest.KeepAlive = true;
                // Procesa la autentificación
                    if (objController.Authenticator != null)
                        objController.Authenticator.Process(objRequest);
                // Asigna el content-type de la solicitud
                    if (!objRequest.ContentType.IsEmpty())
                        objHttpRequest.ContentType = objRequest.ContentType;
                // Obtiene los datos a enviar
                    arrBytPostData = GetPostData(objHttpRequest, objRequest);
                // Añade la longitud
                    if (arrBytPostData != null)
                        objHttpRequest.ContentLength = arrBytPostData.Length;
                // Asigna las cabeceras
                    AddHeaders(objHttpRequest, objRequest.Headers);
                // Escribe los datos
                    WritePostData(objHttpRequest, arrBytPostData);
                // Obtiene los datos de la respuesta
                    objResult = GetResponse(objHttpRequest);
                // Cierra la solicitud Web
                    objHttpRequest = null;
                // Devuelve los datos de salida
                    return objResult;
        }
コード例 #4
0
        /// <summary>
        /// Saves item data
        /// </summary>
        /// <param name="item"><see cref="Item"/> object</param>
        /// <returns>(<see cref="Item"/>) Item object</returns>
        public static Item SaveItem(Item item)
        {
            item.UpdateDate = DateTime.MaxValue.ToString("yyyy-MM-ddTHH:mm:ss");
            var resp = RestController.HttpRequestJson(UriCxm.Items + $@"/{item.Id}", Method.POST, item);

            item = JsonConvert.DeserializeObject <Item>(resp.Content);
            if (item == null)
            {
                return(null);
            }
            SetTitle(item);
            return(item);
        }
コード例 #5
0
        /// <summary>
        /// Creates a new place iOS Device with or without a child
        /// </summary>
        /// <param name="isAssignDevice">Whether iOS device should be assigned to the new place(s) (optional)</param>
        /// <param name="isAddChild">Whether child place should be added or not (optional)</param>
        /// <returns>(<see cref="Place"/>) New parent place object</returns>
        public static Place CreateNewPlaceIos(bool isAssignDevice = false, bool isAddChild = false)
        {
            var bodyObject = new Place
            {
                DeviceTypeId = (int)PlaceType.IosDevice,
                Id           = null,
                PlaceModules = new List <PlaceModule>
                {
                    new PlaceModule
                    {
                        ModuleId      = (int)PlaceType.Ww,
                        Configuration = JsonConvert.SerializeObject(
                            new Configuration
                        {
                            apps = new List <string>()
                        })
                    }
                },
                ChildPlaces = new List <ChildPlace>(),
                DirectItems = new List <DirectItem>(),
                Title       = $"Auto test {ActionManager.RandomNumber}",
                Schedule    = new Schedule
                {
                    PlaceId      = null,
                    ScheduleApps = new List <ScheduleApp>()
                },
                TimeZoneId = 8,
                Radius     = 5,
                Status     = (int)PlaceStatus.Active
            };

            if (isAssignDevice)
            {
                bodyObject.Device = GetIosDevice();
            }

            var response    = RestController.HttpRequestJson(string.Format(UriCxm.PlacesById, "null"), Method.POST, bodyObject);
            var parentPlace = JsonConvert.DeserializeObject <Place>(response.Content);

            if (isAddChild)
            {
                var childPlace = bodyObject;
                childPlace.Title    = $"Auto test {ActionManager.RandomNumber}";
                childPlace.ParentId = parentPlace.Id;
                RestController.HttpRequestJson(string.Format(UriCxm.PlacesById, "null"), Method.POST, childPlace);
            }

            parentPlace = GetById(parentPlace.Id);

            return(parentPlace);
        }
コード例 #6
0
        /// <summary>
        ///		Añade los nodos de contexto
        /// </summary>
        private void AddNodesContext(MLNode objMLNode, RestController objContext)
        {
            MLNode objMLChild = objMLNode.Nodes.Add(cnstStrTagContext);

            // Añade los nodos de contexto
            objMLChild.Nodes.Add(cnstStrTagContextUserAgent, objContext.UserAgent);
            objMLChild.Nodes.Add(cnstStrTagContextTimeOut, objContext.TimeOut);
            objMLChild.Nodes.Add(cnstStrTagContextProxyEnabled, objContext.Proxy.Enabled);
            objMLChild.Nodes.Add(cnstStrTagContextProxyAddress, objContext.Proxy.Address);
            objMLChild.Nodes.Add(cnstStrTagContextProxyPort, objContext.Proxy.Port);
            objMLChild.Nodes.Add(cnstStrTagContextProxyUser, objContext.Proxy.User);
            objMLChild.Nodes.Add(cnstStrTagContextProxyPassword, objContext.Proxy.Password);
            objMLChild.Nodes.Add(cnstStrTagContextProxyByPassLocal, objContext.Proxy.MustBypassLocal);
        }
コード例 #7
0
        /// <summary>
        /// Returns user role data by its ID
        /// </summary>
        /// <param name="id">Role ID</param>
        /// <returns>(<see cref="Role"/>) Role object</returns>
        public static Role GetRole(long?id)
        {
            if (!id.HasValue)
            {
                return(null);
            }
            var response = RestController.HttpRequestForm(
                TestConfig.UserDirectoryBaseUrlApi + string.Format(UriUserDirectory.RoleById, id),
                Method.GET,
                Headers);
            var roleObject = JsonConvert.DeserializeObject <RoleModel>(response)?.Model;

            return(roleObject);
        }
コード例 #8
0
        /// <summary>
        /// Rejects uploaded entity (item or app)
        /// </summary>
        /// <typeparam name="T">Entity type (see <see cref="IApprovalEntity"/>)</typeparam>
        /// <param name="entity">Entity object that should be rejected</param>
        /// <returns>()</returns>
        public static T Reject <T>(T entity) where T : class, IApprovalEntity
        {
            var body = GetIdAndType(entity);

            body.Action   = ApprovalConclusions.Reject.ToString();
            body.Comments = string.Empty;

            RestController.HttpRequestJson(UriCxm.Approve, Method.POST, body, user: TestConfig.AdminUser);
            return((T)Convert.ChangeType(
                       body.EntityType == (int)ApprovalEntities.Item
                    ? ItemApi.GetById(body.EntityId)
                    : (object)AppApi.GetById((long)body.EntityId),
                       typeof(T)));
        }
コード例 #9
0
        /// <summary>
        /// Returns collection of titles of all supported permissions for CX Manager application
        /// (except unnecessary ones)
        /// </summary>
        /// <returns>(<see cref="ICollection{String}"/>) Collection of titles</returns>
        public static string[] GetSupportedPermissions()
        {
            var appId    = GetApplicationProperties(SidsTenants.CxmApplicationName).ApplicationId;
            var response = RestController.HttpRequestForm(
                string.Format(TestConfig.UserDirectoryBaseUrlApi + UriUserDirectory.GetSupportedPermissions, appId),
                Method.GET,
                Headers);
            var permissions = JsonConvert.DeserializeObject <List <Permission> >(response);

            return(permissions
                   .Select(x => x.Key)
                   .Where(x => !x.Equals("RealFakeSmartdata") && !x.Equals("ComposerLivePreview"))
                   .ToArray());
        }
コード例 #10
0
 public void Setup(string id, int amount)
 {
     restController = GameObject.FindObjectOfType <RestController>();
     this.id        = id;
     foreach (Item item in restController.AvailableItems())
     {
         if (item.id.Equals(id))
         {
             nameText.text   = item.name;
             amountText.text = amount.ToString();
             break;
         }
     }
 }
コード例 #11
0
        public void GetRequestBodyAsync_ThrowsException_WhenMethod_Is_Null()
        {
            var controller = new RestController(_loggerMock.Object, _anonymousServiceClientMock.Object, _authenticatedServiceClientMock.Object, _cacheMock.Object);

            var type = typeof(BaseActionApiController);

            var method = type
                         .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                         .First(x => x.Name == "GetRequestBodyAsync" && x.IsPrivate);

            Assert.ThrowsAsync <ArgumentNullException>(() =>
                                                       (Task <string>)method.Invoke(controller, new object[] { null, null })
                                                       );
        }
コード例 #12
0
        /// <summary>
        /// Exports all entities from current tenant (see <see cref="ActionManager.CurrentTenant"/>)
        /// </summary>
        /// <returns>(<see cref="string"/>) Exported ZIP file name that is saved in <see cref=
        /// "TestConfig.BrowserDownloadFolder"/> folder</returns>
        public static string ExportTenant()
        {
            var response = RestController.HttpRequestJson(UriCxm.TenantsExport, Method.GET);
            var objList  = JsonConvert.DeserializeObject <EntitiesListInfo>(response.Content);

            var entitiesIdList = new EntitiesListId();

            entitiesIdList.Apps.AddRange(objList.Apps.Select(x => x.Id));
            entitiesIdList.Items.AddRange(objList.Items.Select(x => x.Id));
            entitiesIdList.Places.AddRange(objList.Places.Select(x => x.Id));
            //entitiesIdList.SourceId = "xxx";

            response = RestController.HttpRequestJson(UriCxm.TenantsExport, Method.POST, entitiesIdList);
            var task = JsonConvert.DeserializeObject <BackgroundTask>(response.Content);

            if (task == null || string.IsNullOrEmpty(task.TaskId))
            {
                throw new Exception(
                          $"Could not start new background task for tenant '{ActionManager.CurrentTenant}' export");
            }

            BackgroundTaskApi.ProcessedObjects.AddOrUpdate(task.TaskId,
                                                           (null, null, new ManualResetEvent(false)),
                                                           (k, v) => (null, null, new ManualResetEvent(false)));
            Trace.TraceInformation($"Tenant API: Export task {task.TaskId} started");

            string sas, fileName;

            if (BackgroundTaskApi.ProcessedObjects.TryGetValue(task.TaskId, out var tenantObj) &&
                tenantObj.Item3.WaitOne(TimeSpan.FromSeconds(TestConfig.TenantExportTimeout)))
            {
                var obj = tenantObj.Item1 as BackgroundTask;
                sas      = obj?.FileSas;
                fileName = obj?.FileName;
                Trace.TraceInformation($"Tenant API: Export task {task.TaskId} complete");
            }
            else
            {
                Trace.TraceError($"Tenant API: {task.TaskId} export timed out!");
                BackgroundTaskApi.DeleteTaskId(task.TaskId);
                throw new TimeoutException(
                          $"Tenant API: Export from tenant {ActionManager.CurrentTenantCode} timed out after " +
                          $"{TestConfig.TenantExportTimeout} s.");
            }

            FileManager.Download(sas, fileName);
            BackgroundTaskApi.ProcessedObjects.TryRemove(task.TaskId, out _);
            BackgroundTaskApi.DeleteTaskId(task.TaskId);
            return(fileName);
        }
コード例 #13
0
        public void GetSoapActionHeader_ReturnsEmptyForNullHttpRequest()
        {
            var controller = new RestController(_loggerMock.Object, _anonymousServiceClientMock.Object, _authenticatedServiceClientMock.Object, _cacheMock.Object);

            var type = typeof(BaseActionApiController);

            var method = type
                         .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                         .First(x => x.Name == "GetSoapActionHeader" && x.IsPrivate);

            var result = (string)method.Invoke(controller, new object[] { null });

            Assert.True(string.IsNullOrWhiteSpace(result.ToString()));
        }
コード例 #14
0
        public static void Run(RestController client, string RestHomeUri, string filter, int itemsPerPage, bool pauseBetweenPages, string repositoryName, bool printResult, string userName)
        {
            // get repository resource
            HomeDocument      home         = client.Get <HomeDocument>(RestHomeUri, null);
            Feed <Repository> repositories = home.GetRepositories <Repository>(new FeedGetOptions {
                Inline = true, Links = true
            });
            Repository repository = repositories.FindInlineEntry(repositoryName);

            // get a collection of users
            GetUsers(repository, filter, itemsPerPage, pauseBetweenPages, printResult);

            OperationsOnUser(repository, userName, itemsPerPage, pauseBetweenPages, printResult);
        }
コード例 #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="client"></param>
 /// <param name="RestHomeUri"></param>
 /// <param name="repositoryName"></param>
 /// <param name="printResult"></param>
 /// <param name="path"></param>
 /// <param name="ThreadNum"></param>
 /// <param name="numDocs"></param>
 public UseCaseTests(RestController client, string RestHomeUri, string repositoryName, bool printResult, bool pauseBetweenOperations, string path, int ThreadNum, int numDocs)
 {
     this.client                 = client;
     this.RestHomeUri            = RestHomeUri;
     this.repositoryName         = repositoryName;
     this.printResult            = printResult;
     this.tempPath               = path;
     this.threadNum              = ThreadNum;
     this.numDocs                = numDocs;
     this.pauseBetweenOperations = pauseBetweenOperations;
     this.testStart              = DateTime.Now;
     this.testPrefix             = testStart.ToString("yyyyMMddhhmmss") + "-" + threadNum;
     this.parentFolderId         = "PARENT-" + testPrefix; // new Random().Next(0, 5); ;
     client.Logger               = new LoggerFacade("RestServices", "NA", parentFolderId, parentFolderId);
 }
コード例 #16
0
        /// <summary>
        ///		Envía los datos
        /// </summary>
        private void Send()
        {
            if (ValidateData())
            {
                RestController objRestController = new RestController();

                // Asigna el proxy
                AssignContext(objRestController);
                // Ejecuta las instrucciones
                foreach (Projects.Instruction objInstruction in objProject.Instructions)
                {
                    ShowResponse(objRestController.Send(objInstruction.Request));
                }
            }
        }
コード例 #17
0
        /// <summary>
        ///		Carga los datos de contexto
        /// </summary>
        private RestController LoadContext(MLNode objMLNode)
        {
            RestController objContext = new RestController("Agent");

            // Carga los datos
            objContext.UserAgent             = objMLNode.Nodes[cnstStrTagContextUserAgent].Value;
            objContext.TimeOut               = objMLNode.Nodes[cnstStrTagContextTimeOut].GetValue(20000);
            objContext.Proxy.Enabled         = objMLNode.Nodes[cnstStrTagContextProxyEnabled].Value.GetBool();
            objContext.Proxy.Address         = objMLNode.Nodes[cnstStrTagContextProxyAddress].Value;
            objContext.Proxy.Port            = objMLNode.Nodes[cnstStrTagContextProxyPort].Value.GetInt(0);
            objContext.Proxy.User            = objMLNode.Nodes[cnstStrTagContextProxyUser].Value;
            objContext.Proxy.Password        = objMLNode.Nodes[cnstStrTagContextProxyPassword].Value;
            objContext.Proxy.MustBypassLocal = objMLNode.Nodes[cnstStrTagContextProxyByPassLocal].GetValue(false);
            // Devuelve los datos de contexto
            return(objContext);
        }
コード例 #18
0
            static bool Prefix(KingdomTask __instance, bool raiseEvent)
            {
                try
                {
                    if (!Main.enabled)
                    {
                        return(true);
                    }
                    if (!Main.settings.currencyFallback)
                    {
                        return(true);
                    }
                    IsStartedSetter(__instance, true);
                    StartedOnSetter(__instance, KingdomState.Instance.CurrentDay);

                    KingdomCurrencyFallback.SpendPoints(__instance.OneTimeBPCost);

                    if (raiseEvent)
                    {
                        OnTaskChanged(__instance);
                    }

                    EventBus.RaiseEvent((IKingdomTaskEventsHandler h) => h.OnTaskStarted(__instance));

                    if (__instance.SkipPlayerTime <= 0)
                    {
                        return(false);
                    }

                    Kingmaker.Game.Instance.AdvanceGameTime(TimeSpan.FromDays(__instance.SkipPlayerTime));

                    foreach (UnitEntityData unitEntityData in Kingmaker.Game.Instance.Player.AllCharacters)
                    {
                        RestController.ApplyRest(unitEntityData.Descriptor);
                    }

                    new KingdomTimelineManager().UpdateTimeline();

                    return(false);
                }
                catch (Exception ex)
                {
                    Main.Error(ex);
                    return(true);
                }
            }
コード例 #19
0
        public void GetKnownRoute_ReturnsNullIfKnownRoutesIsNull()
        {
            var controller = new RestController(loggerMock.Object, anonymousServiceClientMock.Object, authenticatedServiceClientMock.Object, cacheMock.Object);

            var service = new ServiceDTO
            {
                Code    = "dummy",
                Name    = "dummy",
                Id      = Guid.NewGuid(),
                Address = new Uri("http://address.to"),
                UnkownRoutesPassthrough = true
            };

            var result = controller.GetKnownRoute(service, "path", null);

            Assert.Null(result);
        }
コード例 #20
0
        /// <summary>
        /// Creates a new item using JSON model
        /// </summary>
        /// <param name="jsonModel">JSON formatted model</param>
        /// <param name="appId">App ID (see app package)</param>
        /// <param name="apiKey">API Key (see app package)</param>
        /// <param name="tenantCode">Tenant code (optional)</param>
        /// <returns>(<see cref="ValueTuple{Item, String}"/>) New item object or
        /// error message (if available)</returns>
        public static (Item, string) CreateNewItemFromJson(
            string jsonModel, string appId, string apiKey, string tenantCode = null)
        {
            var response = RestController.HttpRequestJsonByAppId(
                UriCxm.Items, Method.POST, jsonModel, appId, apiKey, tenantCode);

            try
            {
                var item = JsonConvert.DeserializeObject <Item>(response.Content);
                SetTitle(item);
                return(item, null);
            }
            catch
            {
                return(null, response?.Content);
            }
        }
コード例 #21
0
        private async Task GetMeasureDataAsync()
        {
            if (isLoaded)
            {
                return;
            }

            string pesel      = UserController.getUserPesel();
            string uriRequest = ComunicationControllers.WcfConfig.getPatientMeasure(pesel);
            RestController <LifeFuncMeasure> controller = new RestController <LifeFuncMeasure>();
            List <LifeFuncMeasure>           list       = await controller.getObjects(uriRequest);

            foreach (var it in list)
            {
                Measures.Add(it);
            }
            isLoaded = true;
        }
コード例 #22
0
        /// <summary>
        /// The method does not really delete user. It changes user email to a random one and sets
        /// this user Status to Disabled. This gives the opportunity to create the same user.
        /// Endpoint Users/Save.
        /// </summary>
        /// <param name="user">User dictionary with keys "Email" and "Password"</param>
        public static void DeleteUser(User user)
        {
            SidsTenants.GetSidUd();
            var userProperties = GetUserData(user);

            if (userProperties == null)
            {
                throw new Exception($"User Directory API: user {user.Email} not found");
            }

            userProperties.Email      = $"Auto{ActionManager.RandomNumber}@autotest.com";
            userProperties.Status.Key = (int)UserStatus.Disabled;

            RestController.HttpRequestJsonUserDirectory(UriUserDirectory.UserSave,
                                                        Method.POST,
                                                        Headers,
                                                        userProperties);
        }
コード例 #23
0
        public void CombinePaths_ReturnsCorrectPath()
        {
            var controller = new RestController(_loggerMock.Object, _anonymousServiceClientMock.Object, _authenticatedServiceClientMock.Object, _cacheMock.Object);

            var type = typeof(BaseActionApiController);

            var method = type
                         .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                         .First(x => x.Name == "CombinePaths" && x.IsPrivate);

            var result = (string)method.Invoke(controller, new object[] { "post", "comments" });

            Assert.Equal("post/comments", result);

            result = (string)method.Invoke(controller, new object[] { "http://address/posts/", "/comments" });

            Assert.Equal("http://address/posts/comments", result);
        }
コード例 #24
0
        public void GetSoapActionHeader_ReturnsEmptyStringWhenNoSoapActionHeaderPresent()
        {
            var controller = new RestController(_loggerMock.Object, _anonymousServiceClientMock.Object, _authenticatedServiceClientMock.Object, _cacheMock.Object);

            IHeaderDictionary headers = new HeaderDictionary(new Dictionary <string, StringValues> {
                { "Content-Type", "application/json" }
            });

            var type = typeof(BaseActionApiController);

            var method = type
                         .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                         .First(x => x.Name == "GetSoapActionHeader" && x.IsPrivate);

            var result = (string)method.Invoke(controller, new object[] { headers });

            Assert.True(string.IsNullOrWhiteSpace(result.ToString()));
        }
コード例 #25
0
 public override void SetClient(RestController client)
 {
     base.SetClient(client);
     if (this.Entries != null)
     {
         foreach (Entry <T> entry in this.Entries)
         {
             if (entry is Executable)
             {
                 (entry as Executable).SetClient(client);
             }
             if (entry.Content is Executable)
             {
                 (entry.Content as Executable).SetClient(client);
             }
         }
     }
 }
コード例 #26
0
ファイル: SecuredAttribute.cs プロジェクト: Ganon11/Rock
        /// <summary>
        /// Occurs before the action method is invoked.
        /// </summary>
        /// <param name="actionContext">The action context.</param>
        public override void OnActionExecuting( HttpActionContext actionContext )
        {
            string controllerClassName = actionContext.ActionDescriptor.ControllerDescriptor.ControllerType.FullName;
            string actionMethod = actionContext.Request.Method.Method;
            string actionPath = actionContext.Request.GetRouteData().Route.RouteTemplate;

            ISecured item = Rock.Web.Cache.RestActionCache.Read( actionMethod + actionPath );
            if ( item == null )
            {
                item = Rock.Web.Cache.RestControllerCache.Read( controllerClassName );
                if ( item == null )
                {
                    item = new RestController();
                }
            }

            Person person = null;

            if ( actionContext.Request.Properties.Keys.Contains( "Person" ) )
            {
                person = actionContext.Request.Properties["Person"] as Person;
            }
            else
            {
                var principal = actionContext.Request.GetUserPrincipal();
                if ( principal != null && principal.Identity != null )
                {
                    var userLoginService = new Rock.Model.UserLoginService( new RockContext() );
                    var userLogin = userLoginService.GetByUserName( principal.Identity.Name );
                    if ( userLogin != null )
                    {
                        person = userLogin.Person;
                        actionContext.Request.Properties.Add( "Person", person );
                    }
                }
            }

            string action = actionMethod.Equals( "GET", StringComparison.OrdinalIgnoreCase ) ?
                Rock.Security.Authorization.VIEW : Rock.Security.Authorization.EDIT;
            if ( !item.IsAuthorized( action, person ) )
            {
                actionContext.Response = new HttpResponseMessage( HttpStatusCode.Unauthorized );
            }
        }
コード例 #27
0
        public string doExecuteApiWithHeaders(string endPointUrl, string httpVerb,
                                              string contentTypeHeader = "", string acceptHeader = "", string authHeader = "",
                                              string jsonPostPayload   = "")
        {
            string jsonResponse = null;

            try
            {
                switch (httpVerb)
                {
                case "GET":
                    restClient = new RestController(
                        endPointUrl, HttpVerb.GET, contentTypeHeader,
                        acceptHeader, authHeader, jsonPostPayload);
                    break;

                case "POST":
                    restClient = new RestController(
                        endPointUrl, HttpVerb.POST, contentTypeHeader,
                        acceptHeader, authHeader, jsonPostPayload);
                    break;

                case "PUT":
                    restClient = new RestController(
                        endPointUrl, HttpVerb.PUT, contentTypeHeader,
                        acceptHeader, authHeader, jsonPostPayload);
                    break;

                case "DELETE":
                    restClient = new RestController(
                        endPointUrl, HttpVerb.DELETE, contentTypeHeader,
                        acceptHeader, authHeader, jsonPostPayload);
                    break;
                }

                jsonResponse = restClient.MakeRequest();
            }
            catch (Exception e)
            {
                jsonResponse = e.Message;
            }

            return(jsonResponse);
        }
コード例 #28
0
        public void C_Delete()
        {
            RestController api = new RestController(GetConnectionString());

            ApplicationResultRecords result1 = api.Get();

            ApplicationResultBase result2 = api.Delete(result1.Records[0].ID);

            Assert.IsTrue(result2.Success);

            ApplicationResultBase result3 = api.Delete(result1.Records[1].ID);

            Assert.IsTrue(result3.Success);

            ApplicationResultRecords result4 = api.Get();

            Assert.IsTrue(result4.Success);
            Assert.IsNull(result4.Records);
        }
コード例 #29
0
        public void GetSoapActionHeader_ReturnsSanitizedValueFromProperSoapActionHeader()
        {
            var controller = new RestController(_loggerMock.Object, _anonymousServiceClientMock.Object, _authenticatedServiceClientMock.Object, _cacheMock.Object);

            IHeaderDictionary headers = new HeaderDictionary(new Dictionary <string, StringValues> {
                { "Content-Type", "application/json" },
                { "SOAPAction", "http://tempuri.org/Calculate" }
            });

            var type = typeof(BaseActionApiController);

            var method = type
                         .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                         .First(x => x.Name == "GetSoapActionHeader" && x.IsPrivate);

            var result = (string)method.Invoke(controller, new object[] { headers });

            Assert.Equal("Calculate", result.ToString());
        }
コード例 #30
0
        public void mod_OnClose()
        {
            if (!KingmakerPatchSettings.KingdomEvents.InstantComplete)
            {
                this.source_OnClose();
                return;
            }

            KingdomEventUIView previousView = this.alias_m_KingdomEventView;

            // deselects the view
            EventBus.RaiseEvent((IEventSceneHandler h) => h.OnEventSelected(null, this.alias_m_Cart));

            if (previousView == null)
            {
                return;
            }

            if (previousView.IsFinished || previousView.AssignedLeader == null || previousView.Blueprint.NeedToVisitTheThroneRoom)
            {
                return;
            }

            bool          inProgress = previousView.IsInProgress;
            BlueprintUnit leader     = previousView.AssignedLeader;

            if (!inProgress || leader == null)
            {
                return;
            }

            previousView.Event.Resolve(previousView.Task);

            if (previousView.RulerTimeRequired <= 0)
            {
                return;
            }

            foreach (UnitEntityData unitEntityData in Kingmaker.Game.Instance.Player.AllCharacters)
            {
                RestController.ApplyRest(unitEntityData.Descriptor);
            }
        }
コード例 #31
0
        /// <summary>
        ///		Envía los mensajes del proyecto
        /// </summary>
        private void Send(Projects.RestProgram objProgram)
        {
            RestController objRestController = new RestController();

            // Asigna los datos de solicitud
            objRestController.UserAgent     = objProgram.Context.UserAgent;
            objRestController.TimeOut       = objProgram.Context.TimeOut;
            objRestController.Certificate   = objProgram.Context.Certificate;
            objRestController.Proxy         = objProgram.Context.Proxy;
            objRestController.Authenticator = objProgram.Context.Authenticator;
            // Ejecuta las instrucciones
            foreach (Projects.RestInstruction objInstruction in objProgram.Instructions)
            {
                try
                { objInstruction.Response = objRestController.Send(objInstruction.Request); }
                catch (Exception objException)
                { objInstruction.Exception = objException; }
            }
        }
コード例 #32
0
        /// <summary>
        /// Deletes all places (or all of specified type) and their children within all tenants or
        /// specified one
        /// </summary>
        /// <param name="type">Place type (optional)</param>
        /// <param name="tenantTitle">Tenant title where places should be deleted (optional)</param>
        public static void DeletePlaces(PlaceType type          = PlaceType.Any,
                                        TenantTitle tenantTitle = TenantTitle.All)
        {
            var tenantList = tenantTitle == TenantTitle.All ?
                             ActionManager.Tenants.ToArray() :
                             ActionManager.Tenants
                             .Where(x => x.Title == tenantTitle.ToString())
                             .ToArray();

            foreach (var tenant in tenantList)
            {
                var response = RestController.HttpRequestJson(
                    UriCxm.Places, Method.GET, tenantCode: tenant.Code, user: TestConfig.AdminUser);
                var places = JsonConvert.DeserializeObject <List <Place> >(response.Content)
                             .AsParallel()
                             .Where(x => x.Status != (int)PlaceStatus.Deleted && x.ParentId == null)
                             .ToArray();

                foreach (var place in places)
                {
                    place.PlaceModules = new List <PlaceModule>();
                    if (type == PlaceType.Any)
                    {
                        RestController.HttpRequestJson(
                            string.Format(UriCxm.PlacesDelete, place.Id, "true"),
                            Method.DELETE,
                            tenantCode: tenant.Code,
                            user: TestConfig.AdminUser);
                    }
                    else
                    {
                        if (place.DeviceTypeId == (type != 0 ? (int?)type : null))
                        {
                            RestController.HttpRequestJson(
                                string.Format(UriCxm.PlacesDelete, place.Id, "true"),
                                Method.DELETE,
                                tenantCode: tenant.Code,
                                user: TestConfig.AdminUser);
                        }
                    }
                }
            }
        }
コード例 #33
0
        /// <summary>
        /// Request approval of uploaded entity (item or app)
        /// </summary>
        /// <typeparam name="T">Entity type</typeparam>
        /// <param name="entity">Entity object that should be approved (see <see cref="IApprovalEntity"/>)</param>
        /// <param name="tenants">Tenant(s) where the entity is located</param>
        public static T RequestApproval <T>(T entity, params TenantTitle[] tenants) where T : class, IApprovalEntity
        {
            var temp      = GetIdAndType(entity);
            var tenantIds = Array.ConvertAll(tenants, value => (int)value);
            var body      = new ApprovalRequest
            {
                EntityId   = temp.EntityId,
                Tenants    = tenantIds,
                Comments   = string.Empty,
                EntityType = temp.EntityType
            };

            RestController.HttpRequestJson(UriCxm.ApproveRequest, Method.POST, body, user: TestConfig.AdminUser);
            return((T)Convert.ChangeType(
                       body.EntityType == (int)ApprovalEntities.Item
                    ? ItemApi.GetById(body.EntityId)
                    : (object)AppApi.GetById((long)body.EntityId),
                       typeof(T)));
        }
コード例 #34
0
        /// <summary>
        /// Gets user SID for User Directory web services
        /// </summary>
        private static void GetSidUserDirectory()
        {
            var formattedTime = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
            var parameters    = new Dictionary <string, string>
            {
                { "Email", TestConfig.AdminUser.Email },
                { "DateTime", formattedTime },
                { "Password", RestController.GetSessionHash(formattedTime, TestConfig.AdminUser.Password) },
                { "lang", "en_US" }
            };

            var request = new RestRequest(TestConfig.UserDirectoryBaseUrlApi + UriUserDirectory.AccountLogin,
                                          Method.POST);

            request.AddHeader("appname", UdApplicationName);
            request.Timeout = TestConfig.ApiRequestTimeout;
            foreach (var parameter in parameters)
            {
                request.AddParameter(parameter.Key, parameter.Value);
            }

            var client   = new RestClient(TestConfig.UserDirectoryBaseUrlApi);
            var response = client.Execute(request);

            // when no response from service, try one more time
            if (response.StatusCode == 0)
            {
                response = client.Execute(request);
            }

            if (response.StatusCode == 0 || (int)response.StatusCode >= (int)HttpStatusCode.BadRequest)
            {
                throw new WebException(
                          $"User Directory: HTTP {(int) response.StatusCode} {response.StatusCode} error\n" +
                          $@"in request {response.Request.Method} {TestConfig.UserDirectoryBaseUrlApi}{UriUserDirectory.AccountLogin}" +
                          $"\nERROR:\n{response.Content}");
            }

            var responseJson = JsonConvert.DeserializeObject <Login>(response.Content);

            UserDirectoryApi.Headers["sid"] = TestConfig.AdminUser.SidUd = responseJson.Sid;
        }
コード例 #35
0
ファイル: FormRefill.cs プロジェクト: bbd33/BillingClientV3
        private void DoRefill()
        {
            if (txtTimecode.Text.Length != 7)
            {
                MessageBox.Show(null, "Mohon masukkan 7 digit timekode", "Maaf");
                return;
            }

            string code = Utils.Md5(txtTimecode.Text);

            RestController<MessageData> rcd;
            rcd = new RestController<MessageData>(Settings.RestController.ServerBase,
                                                "ClientRefill", Settings.RestController.ResourcePrefix);
            // = null;

            //SessionInformation si = null;
            string parameter = "?data=" + code+"&src="+_launcher.GetSessionInfo().Code;

            try
            {
                MessageData md = rcd.GetData(parameter);

                if (md != null)
                {
                    if (md.Text != "Ok")
                    {
                        MessageBox.Show(null, "Kode sudah tidak berlaku", "Maaf,");
                    }
                    else
                    {
                        MessageBox.Show(null, "Refill berhasil", "Selamat");
                    }
                }
                txtTimecode.Text = "";
                Hide();

            }
            catch (Exception exp)
            {
                MessageBox.Show(null, "Kode tidak berlaku", "Maaf,");
            }
        }
コード例 #36
0
ファイル: FormChat.cs プロジェクト: bbd33/BillingClientV3
        private void LoadClientList()
        {
            RestController<ClientInformations> rclist;
            rclist = new RestController<ClientInformations>( Settings.RestController.ServerBase,
                                                "stations",Settings.RestController.ResourcePrefix);
            ClientInformations clist = null;
            try
            {
                //string param = "?data=" + txtChat.Text;
                clist = rclist.GetData();
                if(clist != null )
                {

                    //for
                }
            }
            catch(Exception exp){
                AddToList(txtChat.Text + " : " +exp.Message);
            }
        }
コード例 #37
0
ファイル: FormChat.cs プロジェクト: bbd33/BillingClientV3
 private void txtChat_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyCode == Keys.Return)
     {
         RestController<MessageData> rcd;
         rcd = new RestController<MessageData>(Settings.RestController.ServerBase,
                                             "Chat",Settings.RestController.ResourcePrefix);
         MessageData md = null;
         try
         {
             string param = "?data=" + txtChat.Text;
             md = rcd.GetData(param);
             if(md != null )
             {
                 AddToList("@Nyong " + txtChat.Text);
             }
         }
         catch(Exception exp){
             AddToList(txtChat.Text + " : " +exp.Message);
         }
         txtChat.Text = "";
     }
 }
コード例 #38
0
ファイル: SecuredAttribute.cs プロジェクト: NewSpring/Rock
        /// <summary>
        /// Occurs before the action method is invoked.
        /// </summary>
        /// <param name="actionContext">The action context.</param>
        public override void OnActionExecuting( HttpActionContext actionContext )
        {
            var controller = actionContext.ActionDescriptor.ControllerDescriptor;
            string controllerClassName = controller.ControllerType.FullName;
            string actionMethod = actionContext.Request.Method.Method;
            string actionPath = actionContext.Request.GetRouteData().Route.RouteTemplate.Replace( "{controller}", controller.ControllerName );

            //// find any additional arguments that aren't part of the RouteTemplate that qualified the action method
            //// for example: ~/person/search?name={name}&includeHtml={includeHtml}&includeDetails={includeDetails}&includeBusinesses={includeBusinesses}
            //// is a different action method than ~/person/search?name={name}
            var routeQueryParams = actionContext.ActionArguments.Where(a => !actionPath.Contains("{" + a.Key + "}"));
            if ( routeQueryParams.Any())
            {
                var actionPathQueryString = routeQueryParams.Select( a => string.Format( "{0}={{{0}}}", a.Key ) ).ToList().AsDelimited( "&" );
                actionPath += "?" + actionPathQueryString;
            }

            ISecured item = Rock.Web.Cache.RestActionCache.Read( actionMethod + actionPath );
            if ( item == null )
            {
                item = Rock.Web.Cache.RestControllerCache.Read( controllerClassName );
                if ( item == null )
                {
                    item = new RestController();
                }
            }

            Person person = null;

            if ( actionContext.Request.Properties.Keys.Contains( "Person" ) )
            {
                person = actionContext.Request.Properties["Person"] as Person;
            }
            else
            {
                var principal = actionContext.Request.GetUserPrincipal();
                if ( principal != null && principal.Identity != null )
                {
                    using ( var rockContext = new RockContext() )
                    {
                        string userName = principal.Identity.Name;
                        UserLogin userLogin = null;
                        if ( userName.StartsWith( "rckipid=" ) )
                        {
                            Rock.Model.PersonService personService = new Model.PersonService( rockContext );
                            Rock.Model.Person impersonatedPerson = personService.GetByEncryptedKey( userName.Substring( 8 ) );
                            if ( impersonatedPerson != null )
                            {
                                userLogin = impersonatedPerson.GetImpersonatedUser();
                            }
                        }
                        else
                        {
                            var userLoginService = new Rock.Model.UserLoginService( rockContext );
                            userLogin = userLoginService.GetByUserName( userName );
                        }

                        if ( userLogin != null )
                        {
                            person = userLogin.Person;
                            actionContext.Request.Properties.Add( "Person", person );
                        }
                    }
                }
            }

            string action = actionMethod.Equals( "GET", StringComparison.OrdinalIgnoreCase ) ?
                Rock.Security.Authorization.VIEW : Rock.Security.Authorization.EDIT;
            if ( !item.IsAuthorized( action, person ) )
            {
                actionContext.Response = new HttpResponseMessage( HttpStatusCode.Unauthorized );
            }
        }
コード例 #39
0
ファイル: FormMain.cs プロジェクト: bbd33/BillingClientV3
        private void DoLogout()
        {
            RestController<MessageData> rmd;
            MessageData md = null;
            string resource = "ClientLogout";
            string parameter = "?data="+_sessionInformation.Code;

            rmd = new RestController<MessageData>(Settings.RestController.ServerBase, resource, Settings.RestController.ResourcePrefix);
            try
            {
                md = rmd.GetData(parameter);

            }
            catch (Exception exp)
            {
                DisplayBallonTips( exp.Message ,2000);
            }
            _sessionInformation = null;
            _pushData = null;
            timerPush.Enabled = false;
            _frmConfirm.Hide();
            ProcessMonitor.KillAll();
            Show();
            FullScreen();
        }
コード例 #40
0
        /// <summary>
        ///		Envía una solicitud Web utilizando oAuth
        /// </summary>
        private ResponseMessage GetResponseOAuth(RequestMessage objRequest)
        {
            RestController objRestController = new RestController("BauRest", 20000, this);

                // Devuelve la respuesta del servidor
                    return objRestController.Send(objRequest);
        }
コード例 #41
0
ファイル: FormMain.cs プロジェクト: bbd33/BillingClientV3
        private void timerChat_Tick(object sender, EventArgs e)
        {
            RestController<ChatDatas> rcd;
            rcd = new RestController<ChatDatas>(Settings.RestController.ServerBase, "Chats", Settings.RestController.ResourcePrefix);
            ChatDatas chatDatas = new ChatDatas();

            try
            {
                chatDatas = rcd.GetData();
            }
            catch(Exception exp) {
                //DisplayBallonTips(exp.Message, 1000);
            }

            if (chatDatas.Count > 0)
            {
                foreach (ChatData chatData in chatDatas)
                {
                    _frmChat.AddToList("     @SiGanteng " + chatData.Message);

                    if (!_frmChat.Visible)
                    {
                        //_frmChat.BringToFront();
                        try
                        {
                            DisplayChat();
                        }
                        catch (Exception exp){
                            //DisplayBallonTips(exp.Message, 1000);
                        }
                    }
                }
            }
        }
コード例 #42
0
ファイル: FormMain.cs プロジェクト: bbd33/BillingClientV3
        private void timerPush_Tick(object sender, EventArgs e)
        {
            _pushData = null;
            if( _rpd == null )
            {
                string resource = "TimecodePush";
                _rpd = new RestController<PushData>( Settings.RestController.ServerBase, resource, Settings.RestController.ResourcePrefix );
            }
            if( _sessionInformation != null && _rpd != null )
            {
                string parameter = "?data=" + _sessionInformation.Code;
                try
                {
                    _pushData = _rpd.GetData( parameter );

                }
                catch(Exception exp)
                {

                    DisplayBallonTips( exp.Message, 2000 );
                }

                if ( _pushData != null && _pushData.Duration != 0)
                {
                    string DurationText = Utils.DurationToText(_pushData.Duration);
                    DisplayBallonTips(DurationText, 3000);
                }
                //else if (_pushData.Duration <= 3)
                //{
                //    //Logout
                //    DoLogout();
                //}
            }
            if ( _pushData == null )
            {
                //Logout
                DoLogout();
            }
        }
コード例 #43
0
ファイル: FormInfo.cs プロジェクト: bbd33/BillingClientV3
        private void ExecuteCommand()
        {
            // Set Flag
            _commandExecuteInProgress = true;

            // Temporary sould replaced by config
            /*RestClient restClient = new RestClient();
            */
            string serverBase = Settings.RestController.ServerBase;//"http://10.0.0.13/damarnet/api/";
            string resource = "", resourceSuffix = Settings.RestController.ResourcePrefix;

            if (_frmMode == FormMode.QueryServerInformation)
            {
                resource = "ServerInformation";
                ServerInformation srvInfo = null;
                RestController<ServerInformation> rsi;
                rsi = new RestController<ServerInformation>(serverBase, resource, resourceSuffix);

                try
                {
                    srvInfo = rsi.GetData();
                    _launcher.SetServerInfo(srvInfo);
                    _commandExecuteInProgress = false;
                    Hide();
                }
                catch (Exception exp)
                {
                    DialogResult result;
                    result = MessageBox.Show(exp.Message, "Error", MessageBoxButtons.RetryCancel);
                    //if (result == DialogResult.Retry)
                    //{
                        _commandExecuteInProgress = false;
                        _commandRetry++;
                    //}
                }

            }
            else if (_frmMode == FormMode.QueryClientInformation)
            {
                resource = "ClientInformation";
                ClientInformation clientInfo = null;
                RestController<ClientInformation> rsc;
                rsc = new RestController<ClientInformation>(serverBase, resource, resourceSuffix);

                try
                {
                    clientInfo = rsc.GetData();
                    _launcher.SetClientInfo(clientInfo);
                    _commandExecuteInProgress = false;
                    Hide();
                }
                catch (Exception exp)
                {
                    DialogResult result;
                    result = MessageBox.Show(exp.Message, "Error", MessageBoxButtons.RetryCancel);
                    //if (result == DialogResult.Retry)
                    //{
                    _commandExecuteInProgress = false;
                    _commandRetry++;
                    //}
                }
            }
            else if (_frmMode == FormMode.QuerySessionInformation)
            {
                resource = "SessionInformation";
                SessionInformation sessionInfo = null;
                RestController<SessionInformation> rss;
                rss = new RestController<SessionInformation>(serverBase, resource, resourceSuffix);

                try
                {
                    sessionInfo = rss.GetData();
                    _launcher.SetSessionInfo(sessionInfo);
                    _commandExecuteInProgress = false;
                    Hide();
                }
                catch (Exception exp)
                {
                    //DialogResult result;
                    Hide();
                    //string resource = "ClientLogin"
                    //RestController<SessionInformation> rss;
                    //rss = RestController<SessionInformation>(serverBase, resource, resourceSuffix);
                    _launcher.BringToFront();
                    _frmLogin = new FormLogin(this, rss);
                    _frmLogin.SetMode(FormLogin.FormMode.Timecode);
                    _frmLogin.ShowDialog();
                    sessionInfo = _frmLogin.GetSessionInfo();
                    _launcher.SetSessionInfo(sessionInfo);
                    //Show();
                    //result = MessageBox.Show(exp.Message, "Error", MessageBoxButtons.RetryCancel);
                    //if (result == DialogResult.Retry)
                    //{
                    _commandExecuteInProgress = false;
                    //_commandRetry++;
                    //}
                }
            }
        }
コード例 #44
0
 public MethodInfo GetActionMethodInfo(RestController controller, string actionName)
 {
     return ControllerHelper.GetActions(controller.GetType()).First(m => m.Name == actionName);
 }
コード例 #45
0
        /// <summary>
        /// Registers the controllers.
        /// </summary>
        public static void RegisterControllers()
        {
            var rockContext = new RockContext();
            var restControllerService = new RestControllerService( rockContext );

            var existingControllers = restControllerService.Queryable( "Actions" ).ToList();
            var discoveredControllers = new List<RestController>();

            var config = GlobalConfiguration.Configuration;
            var explorer = config.Services.GetApiExplorer();
            foreach(var apiDescription in explorer.ApiDescriptions)
            {
                var action = apiDescription.ActionDescriptor;
                var name = action.ControllerDescriptor.ControllerName;

                var controller = discoveredControllers.Where( c => c.Name == name ).FirstOrDefault();
                if ( controller == null )
                {
                    controller = new RestController
                    {
                        Name = name,
                        ClassName = action.ControllerDescriptor.ControllerType.FullName
                    };

                    discoveredControllers.Add( controller );
                }

                controller.Actions.Add( new RestAction
                {
                    ApiId = apiDescription.ID,
                    Method = apiDescription.HttpMethod.Method,
                    Path = apiDescription.RelativePath
                } );
            }

            var actionService = new RestActionService( rockContext );
            foreach(var discoveredController in discoveredControllers)
            {
                var controller = restControllerService.Queryable( "Actions" )
                    .Where( c => c.Name == discoveredController.Name ).FirstOrDefault();
                if ( controller == null )
                {
                    controller = new RestController { Name = discoveredController.Name };
                    restControllerService.Add( controller );
                }
                controller.ClassName = discoveredController.ClassName;

                foreach(var discoveredAction in discoveredController.Actions)
                {
                    var action = controller.Actions.Where( a => a.ApiId == discoveredAction.ApiId ).FirstOrDefault();
                    {
                        if ( action == null )
                        {
                            action = new RestAction { ApiId = discoveredAction.ApiId };
                            controller.Actions.Add( action );
                        }
                        action.Method = discoveredAction.Method;
                        action.Path = discoveredAction.Path;
                    }
                }

                var actions = discoveredController.Actions.Select( d => d.ApiId).ToList();
                foreach( var action in controller.Actions.Where( a => !actions.Contains(a.ApiId)).ToList())
                {
                    actionService.Delete( action );
                    controller.Actions.Remove(action);
                }
            }

            var controllers = discoveredControllers.Select( d => d.Name ).ToList();
            foreach ( var controller in restControllerService.Queryable().Where( c => !controllers.Contains( c.Name ) ).ToList() )
            {
                restControllerService.Delete( controller );
            }

            rockContext.SaveChanges();
        }