/// <summary>
        /// Sets the properties of multiple objects in one HTTP request.
        /// </summary>
        /// <param name="objectVersionUpdateInformation">Information on the objects to promote.</param>
        /// <param name="token">A cancellation token for the request.</param>
        /// <remarks>Will also promote objects if they are external and a class property value is provided (see <see cref="MFWSVaultExternalObjectOperations.PromoteObjectsAsync"/>).</remarks>
        public async Task <List <ExtendedObjectVersion> > SetPropertiesOfMultipleObjectsAsync(CancellationToken token = default(CancellationToken), params ObjectVersionUpdateInformation[] objectVersionUpdateInformation)
        {
            // Sanity.
            if (null == objectVersionUpdateInformation)
            {
                throw new ArgumentNullException(nameof(objectVersionUpdateInformation));
            }
            if (objectVersionUpdateInformation.Length == 0)
            {
                return(new List <ExtendedObjectVersion>());
            }

            // Create the request.
            var request = new RestRequest($"/REST/objects/setmultipleobjproperties");

            // Create the request body.
            var body = new ObjectsUpdateInfo();

            body.MultipleObjectInfo.AddRange(objectVersionUpdateInformation);

            // Set the request body.
            request.AddJsonBody(body);

            // Make the request and get the response.
            var response = await this.MFWSClient.Put <List <ExtendedObjectVersion> >(request, token)
                           .ConfigureAwait(false);

            // Return the object data.
            return(response.Data);
        }
Exemplo n.º 2
0
        public void SetPropertiesOfMultipleObjects()
        {
            // Create our test runner.
            var runner = new RestApiTestRunner <List <ExtendedObjectVersion> >(Method.PUT, "/REST/objects/setmultipleobjproperties");

            // Create the expected body.
            var body = new ObjectsUpdateInfo()
            {
                MultipleObjectInfo = new[]
                {
                    new ObjectVersionUpdateInformation()
                    {
                        ObjVer = new ObjVer()
                        {
                            Type    = 0,
                            ID      = 1,
                            Version = 2
                        },
                        Properties = new List <PropertyValue>
                        {
                            new PropertyValue()
                            {
                                PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass,
                                TypedValue  = new TypedValue()
                                {
                                    Lookup = new Lookup()
                                    {
                                        Item = (int)MFBuiltInDocumentClass.MFBuiltInDocumentClassOtherDocument
                                    }
                                }
                            }
                        }
                    },
                    new ObjectVersionUpdateInformation()
                    {
                        ObjVer = new ObjVer()
                        {
                            Type    = 0,
                            ID      = 2,
                            Version = 1
                        },
                        Properties = new List <PropertyValue>
                        {
                            new PropertyValue()
                            {
                                PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass,
                                TypedValue  = new TypedValue()
                                {
                                    Lookup = new Lookup()
                                    {
                                        Item = (int)MFBuiltInDocumentClass.MFBuiltInDocumentClassOtherDocument
                                    }
                                }
                            }
                        }
                    }
                }.ToList()
            };

            // Set the expected body.
            runner.SetExpectedRequestBody(body);

            // Execute.
            runner.MFWSClient.ExternalObjectOperations.PromoteObjects(
                objectVersionUpdateInformation: body.MultipleObjectInfo.ToArray());

            // Verify.
            runner.Verify();
        }
        public async Task PromoteObjectsAsync()
        {
            // Create our test runner.
            var runner = new RestApiTestRunner <List <ExtendedObjectVersion> >(Method.PUT, "/REST/objects/setmultipleobjproperties");

            // Create the expected body.
            var body = new ObjectsUpdateInfo()
            {
                MultipleObjectInfo = new[]
                {
                    new ObjectVersionUpdateInformation()
                    {
                        ObjVer = new ObjVer()
                        {
                            ExternalRepositoryName            = "hello world",
                            ExternalRepositoryObjectID        = "my object id",
                            ExternalRepositoryObjectVersionID = "version",
                            Type = 0
                        },
                        Properties = new List <PropertyValue>
                        {
                            new PropertyValue()
                            {
                                PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass,
                                TypedValue  = new TypedValue()
                                {
                                    Lookup = new Lookup()
                                    {
                                        Item = (int)MFBuiltInDocumentClass.MFBuiltInDocumentClassOtherDocument
                                    }
                                }
                            }
                        }
                    },
                    new ObjectVersionUpdateInformation()
                    {
                        ObjVer = new ObjVer()
                        {
                            ExternalRepositoryName            = "hello world",
                            ExternalRepositoryObjectID        = "my object id 2",
                            ExternalRepositoryObjectVersionID = "version 2",
                            Type = 0
                        },
                        Properties = new List <PropertyValue>
                        {
                            new PropertyValue()
                            {
                                PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass,
                                TypedValue  = new TypedValue()
                                {
                                    Lookup = new Lookup()
                                    {
                                        Item = (int)MFBuiltInDocumentClass.MFBuiltInDocumentClassOtherDocument
                                    }
                                }
                            }
                        }
                    }
                }.ToList()
            };

            // Set the expected body.
            runner.SetExpectedRequestBody(body);

            // Execute.
            await runner.MFWSClient.ExternalObjectOperations.PromoteObjectsAsync(
                objectVersionUpdateInformation : body.MultipleObjectInfo.ToArray());

            // Verify.
            runner.Verify();
        }