/// <summary>Snippet for InsertAsync</summary>
        public async Task InsertAsync()
        {
            // Snippet: InsertAsync(string, string, ResourcePolicy, CallSettings)
            // Additional: InsertAsync(string, string, ResourcePolicy, CancellationToken)
            // Create client
            ResourcePoliciesClient resourcePoliciesClient = await ResourcePoliciesClient.CreateAsync();

            // Initialize request argument(s)
            string         project = "";
            string         region  = "";
            ResourcePolicy resourcePolicyResource = new ResourcePolicy();
            // Make the request
            lro::Operation <Operation, Operation> response = await resourcePoliciesClient.InsertAsync(project, region, resourcePolicyResource);

            // Poll until the returned long-running operation is complete
            lro::Operation <Operation, Operation> completedResponse = await response.PollUntilCompletedAsync();

            // Retrieve the operation result
            Operation result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            lro::Operation <Operation, Operation> retrievedResponse = await resourcePoliciesClient.PollOnceInsertAsync(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                Operation retrievedResult = retrievedResponse.Result;
            }
            // End snippet
        }
        public void GetRequestObject()
        {
            moq::Mock <ResourcePolicies.ResourcePoliciesClient> mockGrpcClient = new moq::Mock <ResourcePolicies.ResourcePoliciesClient>(moq::MockBehavior.Strict);

            mockGrpcClient.Setup(x => x.CreateOperationsClientForRegionOperations()).Returns(new moq::Mock <lro::Operations.OperationsClient>().Object);
            GetResourcePolicyRequest request = new GetResourcePolicyRequest
            {
                Region         = "regionedb20d96",
                ResourcePolicy = "resource_policydde7e557",
                Project        = "projectaa6ff846",
            };
            ResourcePolicy expectedResponse = new ResourcePolicy
            {
                Id   = 11672635353343658936UL,
                Kind = "kindf7aa39d9",
                Name = "name1c9368b0",
                GroupPlacementPolicy = new ResourcePolicyGroupPlacementPolicy(),
                CreationTimestamp    = "creation_timestamp235e59a1",
                Region = "regionedb20d96",
                Status = "status5444cb9a",
                SnapshotSchedulePolicy = new ResourcePolicySnapshotSchedulePolicy(),
                ResourceStatus         = new ResourcePolicyResourceStatus(),
                InstanceSchedulePolicy = new ResourcePolicyInstanceSchedulePolicy(),
                Description            = "description2cf9da67",
                SelfLink = "self_link7e87f12d",
            };

            mockGrpcClient.Setup(x => x.Get(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse);
            ResourcePoliciesClient client   = new ResourcePoliciesClientImpl(mockGrpcClient.Object, null);
            ResourcePolicy         response = client.Get(request);

            xunit::Assert.Same(expectedResponse, response);
            mockGrpcClient.VerifyAll();
        }
Beispiel #3
0
        private static List <ResourcePolicy> GetResourcePoliciesForSKDTaxReport()
        {
            string         policyDesc        = "Eksempel på en policy";
            ResourcePolicy instantiatePolicy = TestDataHelper.GetResourcePolicyModel("SKD", "TaxReport2", task: "Instansiate");

            instantiatePolicy.Actions = new List <ResourceAction>();
            instantiatePolicy.Actions.Add(TestDataHelper.GetResourceActionModel("read", new string[] { "REGNA", "DAGL" }));
            instantiatePolicy.Actions.Add(TestDataHelper.GetResourceActionModel("write", new string[] { "REGNA", "DAGL" }));
            instantiatePolicy.Description = policyDesc;

            ResourcePolicy formFillingPolicy = TestDataHelper.GetResourcePolicyModel("SKD", "TaxReport2", task: "FormFilling");

            formFillingPolicy.Actions = new List <ResourceAction>();
            formFillingPolicy.Actions.Add(TestDataHelper.GetResourceActionModel("read", new string[] { "REGNA", "DAGL" }));
            formFillingPolicy.Actions.Add(TestDataHelper.GetResourceActionModel("write", new string[] { "REGNA", "DAGL" }));
            formFillingPolicy.Description = policyDesc;

            ResourcePolicy signingPolicy = TestDataHelper.GetResourcePolicyModel("SKD", "TaxReport2", endEvent: "Signing");

            signingPolicy.Actions = new List <ResourceAction>();
            signingPolicy.Actions.Add(TestDataHelper.GetResourceActionModel("read", new string[] { "REGNA", "DAGL" }));
            signingPolicy.Actions.Add(TestDataHelper.GetResourceActionModel("write", new string[] { "REGNA", "DAGL" }));
            signingPolicy.Actions.Add(TestDataHelper.GetResourceActionModel("sign", new string[] { "DAGL", "PRIV", "PRIV2" }));
            signingPolicy.Description = policyDesc;

            List <ResourcePolicy> policies = new List <ResourcePolicy>();

            policies.Add(instantiatePolicy);
            policies.Add(formFillingPolicy);
            policies.Add(signingPolicy);

            return(policies);
        }
Beispiel #4
0
        public static ResourcePolicy GetResourcePolicyModel(string org, string app, string task = null, string endEvent = null)
        {
            string         title  = string.Empty;
            ResourcePolicy policy = new ResourcePolicy
            {
                Resource = new List <AttributeMatch>
                {
                    new AttributeMatch {
                        Id = XacmlRequestAttribute.OrgAttribute, Value = org
                    },
                    new AttributeMatch {
                        Id = XacmlRequestAttribute.AppAttribute, Value = app
                    }
                }
            };

            if (task != null)
            {
                policy.Resource.Add(new AttributeMatch {
                    Id = XacmlRequestAttribute.TaskAttribute, Value = task
                });
                title = $"{org}/{app}/{task}";
            }

            if (endEvent != null)
            {
                policy.Resource.Add(new AttributeMatch {
                    Id = XacmlRequestAttribute.EndEventAttribute, Value = endEvent
                });
                title = $"{org}/{app}/{endEvent}";
            }

            policy.Title = title;
            return(policy);
        }
        public async stt::Task GetAsync()
        {
            moq::Mock <ResourcePolicies.ResourcePoliciesClient> mockGrpcClient = new moq::Mock <ResourcePolicies.ResourcePoliciesClient>(moq::MockBehavior.Strict);
            GetResourcePolicyRequest request = new GetResourcePolicyRequest
            {
                Region         = "regionedb20d96",
                ResourcePolicy = "resource_policydde7e557",
                Project        = "projectaa6ff846",
            };
            ResourcePolicy expectedResponse = new ResourcePolicy
            {
                Id   = 11672635353343658936UL,
                Kind = "kindf7aa39d9",
                Name = "name1c9368b0",
                GroupPlacementPolicy = new ResourcePolicyGroupPlacementPolicy(),
                CreationTimestamp    = "creation_timestamp235e59a1",
                Region = "regionedb20d96",
                Status = ResourcePolicy.Types.Status.Deleting,
                SnapshotSchedulePolicy = new ResourcePolicySnapshotSchedulePolicy(),
                ResourceStatus         = new ResourcePolicyResourceStatus(),
                InstanceSchedulePolicy = new ResourcePolicyInstanceSchedulePolicy(),
                Description            = "description2cf9da67",
                SelfLink = "self_link7e87f12d",
            };

            mockGrpcClient.Setup(x => x.GetAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <ResourcePolicy>(stt::Task.FromResult(expectedResponse), null, null, null, null));
            ResourcePoliciesClient client = new ResourcePoliciesClientImpl(mockGrpcClient.Object, null);
            ResourcePolicy         responseCallSettings = await client.GetAsync(request.Project, request.Region, request.ResourcePolicy, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None));

            xunit::Assert.Same(expectedResponse, responseCallSettings);
            ResourcePolicy responseCancellationToken = await client.GetAsync(request.Project, request.Region, request.ResourcePolicy, st::CancellationToken.None);

            xunit::Assert.Same(expectedResponse, responseCancellationToken);
            mockGrpcClient.VerifyAll();
        }
Beispiel #6
0
 private static void AssertResourcePolicyEqual(ResourcePolicy expected, ResourcePolicy actual)
 {
     Assert.Equal(expected.Title, actual.Title);
     AssertCollections(expected.Actions, actual.Actions, AssertResourceActionEqual);
     AssertCollections(expected.Resource, actual.Resource, AssertAttributeMatchEqual);
     if (expected.Description != null || actual.Description != null)
     {
         Assert.Equal(expected.Description, actual.Description);
     }
 }
Beispiel #7
0
 /// <summary>Snippet for Get</summary>
 public void Get()
 {
     // Snippet: Get(string, string, string, CallSettings)
     // Create client
     ResourcePoliciesClient resourcePoliciesClient = ResourcePoliciesClient.Create();
     // Initialize request argument(s)
     string project        = "";
     string region         = "";
     string resourcePolicy = "";
     // Make the request
     ResourcePolicy response = resourcePoliciesClient.Get(project, region, resourcePolicy);
     // End snippet
 }
Beispiel #8
0
 /// <summary>Snippet for Insert</summary>
 public void Insert()
 {
     // Snippet: Insert(string, string, ResourcePolicy, CallSettings)
     // Create client
     ResourcePoliciesClient resourcePoliciesClient = ResourcePoliciesClient.Create();
     // Initialize request argument(s)
     string         project = "";
     string         region  = "";
     ResourcePolicy resourcePolicyResource = new ResourcePolicy();
     // Make the request
     Operation response = resourcePoliciesClient.Insert(project, region, resourcePolicyResource);
     // End snippet
 }
Beispiel #9
0
        /// <summary>Snippet for InsertAsync</summary>
        public async Task InsertAsync()
        {
            // Snippet: InsertAsync(string, string, ResourcePolicy, CallSettings)
            // Additional: InsertAsync(string, string, ResourcePolicy, CancellationToken)
            // Create client
            ResourcePoliciesClient resourcePoliciesClient = await ResourcePoliciesClient.CreateAsync();

            // Initialize request argument(s)
            string         project = "";
            string         region  = "";
            ResourcePolicy resourcePolicyResource = new ResourcePolicy();
            // Make the request
            Operation response = await resourcePoliciesClient.InsertAsync(project, region, resourcePolicyResource);

            // End snippet
        }
Beispiel #10
0
 /// <summary>Snippet for Get</summary>
 public void GetRequestObject()
 {
     // Snippet: Get(GetResourcePolicyRequest, CallSettings)
     // Create client
     ResourcePoliciesClient resourcePoliciesClient = ResourcePoliciesClient.Create();
     // Initialize request argument(s)
     GetResourcePolicyRequest request = new GetResourcePolicyRequest
     {
         Region         = "",
         ResourcePolicy = "",
         Project        = "",
     };
     // Make the request
     ResourcePolicy response = resourcePoliciesClient.Get(request);
     // End snippet
 }
Beispiel #11
0
        /// <summary>Snippet for GetAsync</summary>
        public async Task GetAsync()
        {
            // Snippet: GetAsync(string, string, string, CallSettings)
            // Additional: GetAsync(string, string, string, CancellationToken)
            // Create client
            ResourcePoliciesClient resourcePoliciesClient = await ResourcePoliciesClient.CreateAsync();

            // Initialize request argument(s)
            string project        = "";
            string region         = "";
            string resourcePolicy = "";
            // Make the request
            ResourcePolicy response = await resourcePoliciesClient.GetAsync(project, region, resourcePolicy);

            // End snippet
        }
Beispiel #12
0
        /// <summary>
        /// Creates a remote resource instance.
        /// </summary>
        /// <since_tizen> 3 </since_tizen>
        /// <remarks>
        /// <para>To use this API, you should provide all the details required to correctly contact and
        /// observe the object.</para>
        /// <para>If not, you should discover the resource object manually.</para>
        /// <para>The <paramref name="policy" /> can contain multiple policies like <c>ResourcePolicy.Discoverable | ResourcePolicy.Observable</c>.</para>
        /// </remarks>
        /// <param name="hostAddress">The host address of the resource.</param>
        /// <param name="uriPath">The URI path of the resource.</param>
        /// <param name="policy">The policies of the resource.</param>
        /// <param name="resourceTypes">The resource types of the resource.</param>
        /// <param name="resourceInterfaces">The resource interfaces of the resource.</param>
        /// <feature>http://tizen.org/feature/iot.ocf</feature>
        /// <exception cref="NotSupportedException">Thrown when the iotcon is not supported.</exception>
        /// <exception cref="OutOfMemoryException">Thrown when there is not enough memory.</exception>
        /// <exception cref="ArgumentException">Thrown when there is an invalid parameter.</exception>
        public RemoteResource(string hostAddress, string uriPath, ResourcePolicy policy, ResourceTypes resourceTypes, ResourceInterfaces resourceInterfaces)
        {
            if (hostAddress == null || uriPath == null || resourceTypes == null || resourceInterfaces == null)
            {
                Log.Error(IoTConnectivityErrorFactory.LogTag, "Invalid parameters");
                throw new ArgumentException("Invalid parameter");
            }

            HostAddress = hostAddress;
            UriPath     = uriPath;
            Policy      = policy;
            Types       = new List <string>(resourceTypes);
            Interfaces  = new List <string>(resourceInterfaces);
            DeviceId    = null;

            CreateRemoteResource(resourceTypes._resourceTypeHandle, resourceInterfaces.ResourceInterfacesHandle);
        }
Beispiel #13
0
        /// <summary>
        /// The constructor.
        /// </summary>
        /// <since_tizen> 3 </since_tizen>
        /// <remarks>
        /// <paramref name="uri" /> format would be relative URI path like '/a/light'
        /// and its length must be less than 128.
        /// </remarks>
        /// <privilege>http://tizen.org/privilege/internet</privilege>
        /// <privlevel>public</privlevel>
        /// <param name="uri">The URI path of the resource.</param>
        /// <param name="types">Resource types.</param>
        /// <param name="interfaces">Resource interfaces.</param>
        /// <param name="policy">The policies of the resoruce.</param>
        /// <feature>http://tizen.org/feature/iot.ocf</feature>
        /// <pre>
        /// IoTConnectivityServerManager.Initialize() should be called to initialize.
        /// </pre>
        /// <seealso cref="ResourceTypes"/>
        /// <seealso cref="ResourceInterfaces"/>
        /// <seealso cref="ResourcePolicy"/>
        /// <exception cref="NotSupportedException">Thrown when the iotcon is not supported.</exception>
        /// <exception cref="OutOfMemoryException">Thrown when there is not enough memory.</exception>
        /// <example><code><![CDATA[
        /// // Create a class which inherits from Resource
        /// public class DoorResource : Resource
        /// {
        ///     public DoorResource(string uri, ResourceTypes types, ResourceInterfaces interfaces, ResourcePolicy policy)
        ///             : base(uri, types, interfaces, policy) {
        ///     }
        ///     protected override Response OnDelete(Request request) {
        ///         // Do something
        ///     }
        ///     protected override Response OnGet(Request request) {
        ///         // Do something
        ///     }
        ///     // Override other abstract methods of Resource class
        /// }
        ///
        /// // Use it like below
        /// ResourceInterfaces ifaces = new ResourceInterfaces(new List<string>(){ ResourceInterfaces.DefaultInterface });
        /// ResourceTypes types = new ResourceTypes(new List<string>(){ "oic.iot.door.new" });
        /// Resource resource = new DoorResource("/door/uri1", types, ifaces, ResourcePolicy.Discoverable | ResourcePolicy.Observable);
        /// ]]></code></example>
        protected Resource(string uri, ResourceTypes types, ResourceInterfaces interfaces, ResourcePolicy policy)
        {
            UriPath    = uri;
            Types      = types;
            Interfaces = interfaces;
            Policy     = policy;

            _children.CollectionChanged += ChildrenCollectionChanged;

            int ret = Interop.IoTConnectivity.Server.Observers.Create(out _observerHandle);

            if (ret != (int)IoTConnectivityError.None)
            {
                Log.Error(IoTConnectivityErrorFactory.LogTag, "Failed to create obsever handle");
                throw IoTConnectivityErrorFactory.GetException(ret);
            }
        }
Beispiel #14
0
        private static void CreateUniqueResourcePolicy(string resourceKey, List <string> policyKeys, Dictionary <string, ResourcePolicy> resourcePolicies, List <AttributeMatch> resourceMatches)
        {
            if (!string.IsNullOrEmpty(resourceKey))
            {
                policyKeys.Add(resourceKey);

                if (!resourcePolicies.ContainsKey(resourceKey))
                {
                    string         title     = string.Join("/", resourceMatches.Select(rm => rm.Value));
                    ResourcePolicy newPolicy = new ResourcePolicy
                    {
                        Resource = resourceMatches,
                        Title    = title
                    };

                    resourcePolicies.Add(resourceKey, newPolicy);
                }
            }
        }
Beispiel #15
0
        /// <summary>Snippet for GetAsync</summary>
        public async Task GetRequestObjectAsync()
        {
            // Snippet: GetAsync(GetResourcePolicyRequest, CallSettings)
            // Additional: GetAsync(GetResourcePolicyRequest, CancellationToken)
            // Create client
            ResourcePoliciesClient resourcePoliciesClient = await ResourcePoliciesClient.CreateAsync();

            // Initialize request argument(s)
            GetResourcePolicyRequest request = new GetResourcePolicyRequest
            {
                Region         = "",
                ResourcePolicy = "",
                Project        = "",
            };
            // Make the request
            ResourcePolicy response = await resourcePoliciesClient.GetAsync(request);

            // End snippet
        }
Beispiel #16
0
        public PolicyResponse AddPolicy(PolicyRequest request)
        {
            var policy = new Policy()
            {
                Name        = request.Name,
                Description = request.Description,
                CreatedBy   = "user",
                CreatedDate = DateTime.UtcNow
            };

            foreach (var resource in request.ResourceIds)
            {
                var resouce = new ResourcePolicy()
                {
                    ResourceId = resource, PolicyId = policy.PolicyId
                };
                policy.ResourcePolicies.Add(resouce);
            }
            _dbContext.Policy.Add(policy);
            _dbContext.SaveChanges();
            return(_mapper.Map <PolicyResponse>(policy));
        }
Beispiel #17
0
        public PolicyResponse UpdatePolicy(PolicyRequest request, int policyId)
        {
            try
            {
                var policy = _dbContext.Policy.SingleOrDefault(p => p.PolicyId == policyId);
                if (policy == null)
                {
                    throw new ArgumentException("Policy Not found.");
                }
                policy.Name           = request.Name;
                policy.IsDeleted      = request.IsDeleted;
                policy.Description    = request.Description;
                policy.LastModifiedBy = "user";
                policy.LastModified   = DateTime.UtcNow;

                // remove existing resouces
                var resoucePolicies = _dbContext.ResourcePolicy.Where(p => p.PolicyId == policyId);
                _dbContext.ResourcePolicy.RemoveRange(resoucePolicies);

                foreach (var resource in request.ResourceIds)
                {
                    var resourcePolicy = new ResourcePolicy()
                    {
                        ResourceId = resource, PolicyId = policy.PolicyId
                    };
                    policy.ResourcePolicies.Add(resourcePolicy);
                }
                _dbContext.Attach <Policy>(policy);
                _dbContext.SaveChanges();
                return(_mapper.Map <PolicyResponse>(policy));
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #18
0
 /// <summary>
 /// The LiteResource constructor.
 /// </summary>
 /// <since_tizen> 3 </since_tizen>
 /// <remarks>
 /// <para>Creates a lite resource, which can then be registered in server using <see cref="IoTConnectivityServerManager.RegisterResource(Resource)"/>.</para>
 /// <para>When client requests some operations, it sends a response to client automatically.</para>
 /// <para><paramref name="uri" /> length must be less than 128.</para>
 /// </remarks>
 /// <privilege>http://tizen.org/privilege/internet</privilege>
 /// <privlevel>public</privlevel>
 /// <param name="uri">The uri path of the lite resource.</param>
 /// <param name="types">The type of the resource.</param>
 /// <param name="policy">Policy of the resource.</param>
 /// <param name="attribs">Optional attributes of the resource.</param>
 /// <feature>http://tizen.org/feature/iot.ocf</feature>
 /// <pre>
 /// IoTConnectivityServerManager.Initialize() should be called to initialize.
 /// </pre>
 /// <seealso cref="ResourceTypes"/>
 /// <seealso cref="ResourcePolicy"/>
 /// <seealso cref="Attributes"/>
 /// <example><code><![CDATA[
 /// List<string> list = new List<string>() { "org.tizen.light" };
 /// Attributes attributes = new Attributes() {
 ///     { "state", "ON" }
 /// };
 /// LiteResource res = new LiteResource("/light/1", new ResourceTypes(list), ResourcePolicy.Discoverable, attributes);
 /// ]]></code></example>
 public LiteResource(string uri, ResourceTypes types, ResourcePolicy policy, Attributes attribs = null)
     : base(uri, types, new ResourceInterfaces(new string[] { ResourceInterfaces.DefaultInterface }), policy)
 {
     Attributes = attribs;
 }
Beispiel #19
0
 private static void AddActionsToResourcePolicy(List <ResourceAction> actions, ResourcePolicy resourcePolicy)
 {
     if (resourcePolicy.Actions == null)
     {
         resourcePolicy.Actions = new List <ResourceAction>();
         resourcePolicy.Actions.AddRange(actions);
     }
     else
     {
         foreach (ResourceAction resourceAction in actions)
         {
             if (!resourcePolicy.Actions.Any(action => action.Match.Value == resourceAction.Match.Value && action.Match.Id == resourceAction.Match.Id))
             {
                 resourcePolicy.Actions.Add(resourceAction);
             }
             else
             {
                 ResourceAction existingAction = resourcePolicy.Actions.First(action => action.Match.Value == resourceAction.Match.Value && action.Match.Id == resourceAction.Match.Id);
                 existingAction.RoleGrants.AddRange(resourceAction.RoleGrants.Where(roleGrant => !existingAction.RoleGrants.Any(existingRoleGrant => existingRoleGrant.RoleTypeCode == roleGrant.RoleTypeCode)));
             }
         }
     }
 }