/// <summary>
        ///     Helper method called when user select a Rest action
        /// </summary>
        /// <param name="restAction"></param>
        private void SwitchToRestAction(RestAction restAction)
        {
            ShowResponse(null);
            string restActionStr = restAction.ToString();
            _viewModel[RestActionViewModel.SELECTED_REST_ACTION] = restActionStr;

            HashSet<string> names = RestActionViewHelper.GetNamesOfControlsToShow(restActionStr);
            foreach (TextBox tb in new[]
            {
                tbApiVersion, tbObjectType,
                tbObjectId, tbExternalIdField, tbExternalId, tbFieldList, tbFields,
                tbSoql, tbSosl, tbRequestPath, tbRequestBody, tbRequestMethod
            })
            {
                tb.Visibility = names.Contains(tb.Name) ? Visibility.Visible : Visibility.Collapsed;
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Copies the base properties from a source RestAction object
 /// </summary>
 /// <param name="source">The source.</param>
 public void CopyPropertiesFrom( RestAction source )
 {
     this.Id = source.Id;
     this.ApiId = source.ApiId;
     this.ControllerId = source.ControllerId;
     this.Method = source.Method;
     this.Path = source.Path;
     this.Guid = source.Guid;
     this.ForeignId = source.ForeignId;
 }
Esempio n. 3
0
 /// <summary>
 /// Copies the base properties from a source RestAction object
 /// </summary>
 /// <param name="source">The source.</param>
 public void CopyPropertiesFrom( RestAction source )
 {
     this.Id = source.Id;
     this.ApiId = source.ApiId;
     this.ControllerId = source.ControllerId;
     this.ForeignGuid = source.ForeignGuid;
     this.ForeignKey = source.ForeignKey;
     this.Method = source.Method;
     this.ModifiedAuditValuesAlreadyUpdated = source.ModifiedAuditValuesAlreadyUpdated;
     this.Path = source.Path;
     this.CreatedDateTime = source.CreatedDateTime;
     this.ModifiedDateTime = source.ModifiedDateTime;
     this.CreatedByPersonAliasId = source.CreatedByPersonAliasId;
     this.ModifiedByPersonAliasId = source.ModifiedByPersonAliasId;
     this.Guid = source.Guid;
     this.ForeignId = source.ForeignId;
 }
        /// <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();
        }