コード例 #1
0
ファイル: ALMClient.cs プロジェクト: craigadam/ALMRestClient
        /// <summary>
        /// Update an ALM item
        /// </summary>
        /// <param name="id">Id of the item</param>
        /// <param name="changes">An item containing all the fields to change</param>
        public bool UpdateDefect(string id, ALMItem changes)
        {
            var req = new RestRequest(clientConfig.LockEntityAddress);

            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            IRestResponse response = null;

            try
            {
                response = Execute(req, "update defect -> lock item");

                if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Created)
                {
                    if (Update(id, changes) == false && HideCustomExceptions == false)
                    {
                        // Todo: Determine what exception should be thrown
                    }
                }
            }
            finally
            {
                // then delete the lock
                req.Method = Method.DELETE;
                response   = Execute(req, "update defect -> unlock item");
            }

            // Delete lock was successful
            return(response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Accepted || response.StatusCode == HttpStatusCode.NoContent);
        }
コード例 #2
0
ファイル: ALMClient.cs プロジェクト: craigadam/ALMRestClient
        /// <summary>
        /// Get the list of defects
        /// </summary>
        /// <param name="items">Defects result</param>
        private void ReadDefects(List <ALMItem> items)
        {
            int startIndex = 0;
            int pageSize   = 100;
            int total      = 0;

            do
            {
                RestRequest getDefects = new RestRequest(clientConfig.EntitiesAddress);


                AddDomainAndProject(getDefects);
                AddDefect(getDefects);
                getDefects.AddHeader("Accept", "application/xml");

                getDefects.AddParameter("page-size", pageSize);

                // start index appears to be 1-based, despite the documentation on https://MYDOMAIN.saas.hp.com/qcbin/Help/doc_library/api_refs/REST/webframe.html
                getDefects.AddParameter("start-index", startIndex + 1);

                IRestResponse response = Execute(getDefects, "get defects");

                XDocument doc = XDocument.Parse(response.Content);
                total = FindTotal(doc);

                foreach (var entity in doc.Root.Elements())
                {
                    items.Add(ALMItem.FromXML(entity.Elements("Fields").Elements()));
                }

                // time for the next page
                startIndex += pageSize;
            } while (startIndex < total);
        }
コード例 #3
0
ファイル: ALMClient.cs プロジェクト: mukesh3521/ALMRestClient
        private void Update(string id, ALMItem changes)
        {
            var req = new RestRequest("/rest/domains/{domain}/projects/{project}/{Entity Type}/{Entity ID}");

            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            req.Method = Method.PUT;

            req.AddHeader("Content-Type", "application/xml");
            req.AddHeader("Accept", "application/xml");
            req.AddParameter("application/xml", ConvertToFieldXml(changes.Fields), ParameterType.RequestBody);

            var response = Execute(req, "update");
        }
コード例 #4
0
ファイル: ALMClient.cs プロジェクト: craigadam/ALMRestClient
        /// <summary>
        /// Update the item
        /// </summary>
        /// <param name="id">The item id to be updated</param>
        /// <param name="changes">The modified item to be updated</param>
        private bool Update(string id, ALMItem changes)
        {
            var req = new RestRequest(clientConfig.EntityAddress);

            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            req.Method = Method.PUT;

            req.AddHeader("Content-Type", "application/xml");
            req.AddHeader("Accept", "application/xml");
            req.AddParameter("application/xml", ConvertToFieldXml(changes.Fields), ParameterType.RequestBody);

            var response = Execute(req, "update");

            return(response.StatusCode == HttpStatusCode.OK);
        }
コード例 #5
0
ファイル: ALMClient.cs プロジェクト: mukesh3521/ALMRestClient
        /// <summary>
        /// Update an ALM item
        /// </summary>
        /// <param name="id">Id of the item</param>
        /// <param name="changes">An item containing all the fields to change</param>
        public void UpdateDefect(string id, ALMItem changes)
        {
            var req = new RestRequest("/rest/domains/{domain}/projects/{project}/{Entity Type}/{Entity ID}/lock");

            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            IRestResponse response = Execute(req, "update defect -> lock item");

            try
            {
                Update(id, changes);
            }
            finally
            {
                // then delete the lock
                req.Method = Method.DELETE;
                response   = Execute(req, "update defect -> unlock item");
            }
        }
コード例 #6
0
        /// <summary>
        /// Construct the item from the XML payload - factory method
        /// </summary>
        /// <returns>new ALM Item</returns>
        public static ALMItem FromXML(IEnumerable <XElement> fields)
        {
            ALMItem item = new ALMItem();

            foreach (var field in fields)
            {
                var name         = field.Attribute("Name").Value;
                var valueElement = field.Element("Value");

                if (valueElement == null)
                {
                    // skip ones with no values
                    continue;
                }

                var value = valueElement.Value;

                item.Fields.Add(name, value);
            }

            return(item);
        }
コード例 #7
0
ファイル: ALMClient.cs プロジェクト: webcompere/ALMRestClient
        /// <summary>
        /// Update the item
        /// </summary>
        /// <param name="id">The item id to be updated</param>
        /// <param name="changes">The modified item to be updated</param>
        private bool Update(string id, ALMItem changes)
        {
            var req = new RestRequest(clientConfig.EntityAddress);
            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            req.Method = Method.PUT;

            req.AddHeader("Content-Type", "application/xml");
            req.AddHeader("Accept", "application/xml");
            req.AddParameter("application/xml", ConvertToFieldXml(changes.Fields), ParameterType.RequestBody);

            var response = Execute(req, "update");

            return response.StatusCode == HttpStatusCode.OK;
        }
コード例 #8
0
ファイル: ALMClient.cs プロジェクト: webcompere/ALMRestClient
        /// <summary>
        /// Update an ALM item
        /// </summary>
        /// <param name="id">Id of the item</param>
        /// <param name="changes">An item containing all the fields to change</param>
        public bool UpdateDefect(string id, ALMItem changes)
        {
            var req = new RestRequest(clientConfig.LockEntityAddress);
            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            IRestResponse response = null;

            try
            {
                response = Execute(req, "update defect -> lock item");

                if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Created)
                {
                    if (Update(id, changes) == false && HideCustomExceptions == false)
                    {
                        // Todo: Determine what exception should be thrown
                    }
                }
            }
            finally
            {
                // then delete the lock
                req.Method = Method.DELETE;
                response = Execute(req, "update defect -> unlock item");
            }

            // Delete lock was successful
            return response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Accepted || response.StatusCode == HttpStatusCode.NoContent;
        }
コード例 #9
0
ファイル: ALMItem.cs プロジェクト: webcompere/ALMRestClient
        /// <summary>
        /// Construct the item from the XML payload - factory method
        /// </summary>
        /// <returns>new ALM Item</returns>
        public static ALMItem FromXML(IEnumerable<XElement> fields)
        {
            ALMItem item = new ALMItem();

            foreach (var field in fields)
            {
                var name = field.Attribute("Name").Value;
                var valueElement = field.Element("Value");

                if (valueElement == null)
                {
                    // skip ones with no values
                    continue;
                }

                var value = valueElement.Value;

                item.Fields.Add(name, value);
            }

            return item;
        }
コード例 #10
0
ファイル: ALMClient.cs プロジェクト: mukesh3521/ALMRestClient
        /// <summary>
        /// Update an ALM item
        /// </summary>
        /// <param name="id">Id of the item</param>
        /// <param name="changes">An item containing all the fields to change</param>
        public void UpdateDefect(string id, ALMItem changes)
        {
            var req = new RestRequest("/rest/domains/{domain}/projects/{project}/{Entity Type}/{Entity ID}/lock");
            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            IRestResponse response = Execute(req, "update defect -> lock item");

            try
            {
                Update(id, changes);
            }
            finally
            {
                // then delete the lock
                req.Method = Method.DELETE;
                response = Execute(req, "update defect -> unlock item");
            }
        }
コード例 #11
0
ファイル: ALMClient.cs プロジェクト: mukesh3521/ALMRestClient
        private void Update(string id, ALMItem changes)
        {
            var req = new RestRequest("/rest/domains/{domain}/projects/{project}/{Entity Type}/{Entity ID}");
            AddDomainAndProject(req);
            AddDefectAndId(id, req);

            req.Method = Method.PUT;

            req.AddHeader("Content-Type", "application/xml");
            req.AddHeader("Accept", "application/xml");
            req.AddParameter("application/xml", ConvertToFieldXml(changes.Fields), ParameterType.RequestBody);

            var response = Execute(req, "update");
        }