The main interface to the Rally REST API
        static void Main(string[] args)
        {
            RallyRestApi restApi;
            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            String projectRef = "/project/12352608219";
            Request defectRequest = new Request("Defect");
            defectRequest.Project = projectRef;
            defectRequest.Fetch = new List<string>()
                {
                    "Name",
            "FormattedID",
                    "Tasks"
                };

            defectRequest.Query = new Query("FormattedID", Query.Operator.Equals, "DE8");
            QueryResult defectResults = restApi.Query(defectRequest);
            String defRef = defectResults.Results.First()._ref;
            String defName = defectResults.Results.First().Name;
            Console.WriteLine(defName + " " + defRef);
            DynamicJsonObject defect = restApi.GetByReference(defRef, "Name", "FormattedID", "Tasks");
            String taskCollectionRef = defect["Tasks"]._ref;
            Console.WriteLine(taskCollectionRef);

            ArrayList taskList = new ArrayList();

            foreach (var d in defectResults.Results)
            {
                Request tasksRequest = new Request(d["Tasks"]);
                QueryResult tasksResult = restApi.Query(tasksRequest);
                foreach (var t in tasksResult.Results)
                {
                    var tName = t["Name"];
                    var tFormattedID = t["FormattedID"];
                    Console.WriteLine("Task: " + tName + " " + tFormattedID);
                    DynamicJsonObject task = new DynamicJsonObject();
                    task["_ref"] = t["_ref"];
                    taskList.Add(task);
                }
            }

            Console.WriteLine("Count of elements in the collection before adding a new task: " + taskList.Count);

            DynamicJsonObject newTask = new DynamicJsonObject();
            newTask["Name"] = "another last task";
            newTask["WorkProduct"] = defRef;
            CreateResult createResult = restApi.Create(projectRef, "Task", newTask);
            newTask = restApi.GetByReference(createResult.Reference, "FormattedID", "Name", "WorkProduct");
            Console.WriteLine(newTask["FormattedID"] + " " + newTask["Name"] + " WorkProduct:" + newTask["WorkProduct"]["FormattedID"]);
            taskList.Add(newTask);

            Console.WriteLine("Count of elements in the array after adding a new task: " + taskList.Count);
            defect["Tasks"] = taskList;
            OperationResult updateResult = restApi.Update(defRef, defect);
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
            String apiKey = "_abc123";
            restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);

            String[] workspaces = new String[] { "/workspace/12352608129", "/workspace/34900020610" };

            foreach (var s in workspaces)
            {
                Console.WriteLine(" ______________ " + s + " _________________");
                Request typedefRequest = new Request("TypeDefinition");
                typedefRequest.Workspace = s;
                typedefRequest.Fetch = new List<string>() { "ElementName", "Ordinal" };
                typedefRequest.Query = new Query("Parent.Name", Query.Operator.Equals, "Portfolio Item");
                QueryResult typedefResponse = restApi.Query(typedefRequest);

                foreach (var t in typedefResponse.Results)
                {

                    if (t["Ordinal"] > -1)
                    {
                        Console.WriteLine("ElementName: " + t["ElementName"] + " Ordinal: " + t["Ordinal"]);
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            //Initialize the REST API
            RallyRestApi restApi;
            //with this user I get hundreds of workspaces - this is a subadmin
            restApi = new RallyRestApi("*****@*****.**", "supersecret", "https://rally1.rallydev.com", "v2.0");
            //with this user I get only two workspaces
            //restApi = new RallyRestApi("*****@*****.**", "scret", "https://rally1.rallydev.com", "v2.0");

            /***************THIS CODE PRINTS OUT ALL WORKSPACES AND PROJECTS IN THE SUB ******************************/

            //get the current subscription
            DynamicJsonObject sub = restApi.GetSubscription("Workspaces");

            Request wRequest = new Request(sub["Workspaces"]);
            wRequest.Limit = 1000;
            QueryResult queryResult = restApi.Query(wRequest);
            int allProjects = 0;
            foreach (var result in queryResult.Results)
            {
                var workspaceReference = result["_ref"];
                var workspaceName = result["Name"];
                Console.WriteLine("Workspace: " + workspaceName);
                Request projectsRequest = new Request(result["Projects"]);
                projectsRequest.Fetch = new List<string>()
                {
                    "Name",
            "State",
                };
                projectsRequest.Limit = 10000; //project requests are made per workspace
                QueryResult queryProjectResult = restApi.Query(projectsRequest);
                int projectsPerWorkspace = 0;
                foreach (var p in queryProjectResult.Results)
                {
                    allProjects++;
                    projectsPerWorkspace++;
                    Console.WriteLine(projectsPerWorkspace + " Project: " + p["Name"] + " State: " + p["State"]);
                }
            Console.WriteLine("----------------------------");
            }
            Console.WriteLine("Returned " + allProjects + " projects in the subscription");
        }
        static void Main(string[] args)
        {
            //Initialize the REST API using API KEYd
            RallyRestApi restApi;
            restApi = new RallyRestApi("_abc123", "https://rally1.rallydev.com");

            DateTime now = DateTime.Today;
            DateTime checkback = now.AddDays(-2); //last two days
            String checkbackString = checkback.ToString("yyyy-MM-dd");

            //get the subscription
            DynamicJsonObject sub = restApi.GetSubscription("Workspaces");

            Request wRequest = new Request(sub["Workspaces"]);
            wRequest.Limit = 1000;
            QueryResult queryResult = restApi.Query(wRequest);
            foreach (var result in queryResult.Results)
            {
                var workspaceReference = result["_ref"];
                var workspaceName = result["Name"];
                Request projectsRequest = new Request(result["Projects"]);
                projectsRequest.Fetch = new List<string>()
                {
                    "Name"
                };
                projectsRequest.Limit = 1000;
                QueryResult queryProjectResult = restApi.Query(projectsRequest);
                foreach (var p in queryProjectResult.Results)
                {
                    Request artifactRequest = new Request("artifact");
                    artifactRequest.Project = p["_ref"];
                    artifactRequest.Query = new Query("LastUpdateDate", Query.Operator.GreaterThanOrEqualTo, checkbackString);
                    QueryResult queryResults = restApi.Query(artifactRequest);
                    if (queryResults.TotalResultCount > 0)
                    {
                        Console.WriteLine("Project: " + p["Name"] + " (Workspace " + workspaceName + ")");
                    }

                }
            }
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
            String apiKey = "_abc123";
            restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);
            String workspaceRef = "/workspace/12352608129";
            //String projectRef = "/project/39468725060";
            Request request = new Request("Attachment");
            request.Workspace = workspaceRef;
            //request.Project = projectRef;
            request.Fetch = new List<string>() { "Artifact", "TestCaseResult", "Size", "CreationDate" };
            request.Limit = 400;
            request.Order = "CreationDate Desc";
            QueryResult results = restApi.Query(request);

            foreach (var a in results.Results)
            {
                if (a["Artifact"] != null)
                {
                    Console.WriteLine("Artifact: " + a["Artifact"]["_ref"]);
                }
                else if (a["TestCaseResult"] != null)
                {
                    Console.WriteLine("TestCaseResult: " + a["TestCaseResult"]["_ref"]);
                }
                Console.WriteLine("Size: " + a["Size"]);
            }
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi;

            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");
            String workspaceRef = "/workspace/12352608129"; //use your workspace object id

            Request defectRequest = new Request("defect");
            defectRequest.Workspace = workspaceRef;
            defectRequest.Query = new Query("LastUpdateDate", Query.Operator.GreaterThanOrEqualTo, "2014-07-20");
            defectRequest.Fetch = new List<string>()
                {
                    "Name",
                    "FormattedID"
                };

            int stopAfter = 2;  //KEEP IT LOW UNTIL YOU MAKE SURE IT IS DELETING THE INTENDED SUBSET OF YOUR DATA
            int count = 0;
            QueryResult queryDefectResults = restApi.Query(defectRequest);
            foreach (var d in queryDefectResults.Results)
            {
                if (count == stopAfter)
                {
                    break;
                }
                Console.WriteLine("Deleting: " + d["FormattedID"] + " " + d["Name"]);
                OperationResult deleteResult = restApi.Delete(workspaceRef, d["_ref"]); //DELTED DEFECTS WILL BE FOUND IN THE RECYCLE BIN
                count++;
            }
        }
        public RallyApi.RallyRestApi GetApi(string userName, string password)
        {
            int hash = (userName + "|" + password).GetHashCode();

            if (Pools == null)
            {
                Pools = new Dictionary <int, RallyApi.RallyRestApi>();
            }
            if (Pools.ContainsKey(hash) && Pools[hash].ConnectionInfo.UserName == userName && Pools[hash].ConnectionInfo.Password == password)
            {
                var conn = Pools[hash];
                if (conn.ConnectionInfo != null &&
                    conn.AuthenticationState == RallyApi.RallyRestApi.AuthenticationResult.Authenticated)
                {
                    return(conn);
                }
                RallyApi.RallyRestApi.AuthenticationResult r = conn.Authenticate(userName, password, allowSSO: false);
                if (r != RallyApi.RallyRestApi.AuthenticationResult.Authenticated)
                {
                    return(null);
                }
            }

            RallyApi.RallyRestApi api = new RallyApi.RallyRestApi();
            var result = api.Authenticate(userName, password, allowSSO: false);

            if (result != RallyApi.RallyRestApi.AuthenticationResult.Authenticated)
            {
                return(null);
            }
            Pools.Add(hash, api);
            return(api);
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi;
            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");
            String projectRef = "/project/12352608219";
            Request request = new Request("TestSet");
            request.Project = projectRef;
            request.Fetch = new List<string>()
            {
                "Name",
                "FormattedID",
                "TestCases"
            };
            request.Query = new Query("FormattedID", Query.Operator.Equals, "TS31");
            QueryResult result = restApi.Query(request);

            String testsetRef = result.Results.First()._ref;
            DynamicJsonObject testset = restApi.GetByReference(testsetRef, "TestCases");
            Request request2 = new Request(testset["TestCases"]);
            request2.Fetch = new List<string>()
            {
                "Name",
                "FormattedID"
            };
            request2.Limit = 1000;
            QueryResult result2 = restApi.Query(request2);
            int caseCount = 0;
            foreach (var testcase in result2.Results)
            {
                Console.WriteLine("TestCase: " + testcase["FormattedID"]);
                caseCount++;
            }
            Console.WriteLine(caseCount);
        }
Esempio n. 9
0
        public RallyApi.RallyRestApi GetApi(string userName, string password)
        {
            int hash = (userName + "|" + password).GetHashCode();
            if (Pools == null)
            {
                Pools = new Dictionary<int, RallyApi.RallyRestApi>();
            }
            if (Pools.ContainsKey(hash) && Pools[hash].ConnectionInfo.UserName == userName && Pools[hash].ConnectionInfo.Password == password)
                {
                    var conn = Pools[hash];
                    if (conn.ConnectionInfo != null &&
                        conn.AuthenticationState == RallyApi.RallyRestApi.AuthenticationResult.Authenticated)
                    {
                        return conn;
                    }
                    RallyApi.RallyRestApi.AuthenticationResult r = conn.Authenticate(userName, password, allowSSO:false);
                    if (r != RallyApi.RallyRestApi.AuthenticationResult.Authenticated)
                    {
                        return null;
                    }
                }

                RallyApi.RallyRestApi api = new RallyApi.RallyRestApi();
                var result = api.Authenticate(userName, password, allowSSO:false);
                if (result != RallyApi.RallyRestApi.AuthenticationResult.Authenticated)
                {
                    return null;
                }
                Pools.Add(hash, api);
                return api;
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi;
            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            String workspaceRef = "/workspace/12345"; //replace this OID with ObjectID of your workspace
            Request revRequest = new Request("Revision");
            revRequest.Workspace = workspaceRef;
            revRequest.Fetch = new List<string>() { "Description", "User", "CreationDate" };

            DateTime now = DateTime.Now;
            Console.WriteLine("now: " + now);

            //look 4 hours back
            //DateTime fourHoursBack = now.AddHours(-4);
            //String fourHoursBackString = fourHoursBack.ToString("yyyy-MM-dd" + "T" + "HH:mm");
            //Console.WriteLine(fourHoursBack);
            //Console.WriteLine(fourHoursBackString);
            //revRequest.Query = new Query("CreationDate", Query.Operator.GreaterThanOrEqualTo, fourHoursBackString);

            //look 10 min back
            DateTime someMinutesBack = now.AddMinutes(-10);
            String someMinutesBackString = someMinutesBack.ToString("yyyy-MM-dd" + "T" + "HH:mm");
            Console.WriteLine("someMinutesBack: " + someMinutesBack);
            Console.WriteLine("someMinutesBackString: " + someMinutesBackString);
            revRequest.Query = new Query("CreationDate", Query.Operator.GreaterThanOrEqualTo, someMinutesBackString);

            QueryResult queryRevResults = restApi.Query(revRequest);

            foreach (var rev in queryRevResults.Results)
            {
                Console.WriteLine("----------");
                Console.WriteLine("Description: " + rev["Description"] + " Author: " + rev["User"]._refObjectName + " CreationDate: " + rev["CreationDate"]);
            }
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi;
            restApi = new RallyRestApi("_abc123", "https://rally1.rallydev.com");

            String projectRef = "/project/12352608219";
            bool projectScopingUp = false;
            bool projectScopingDown = false;

            Request storyRequest = new Request("hierarchicalrequirement");
            storyRequest.Project = projectRef;
            storyRequest.ProjectScopeUp = projectScopingUp;
            storyRequest.ProjectScopeDown = projectScopingDown;
            storyRequest.Limit = 10000;
            storyRequest.Query = new Query("LastUpdateDate", Query.Operator.GreaterThanOrEqualTo, "2013-01-01");

            storyRequest.Fetch = new List<string>()
                {
                    "Name",
                    "FormattedID"
                };

            QueryResult queryResults = restApi.Query(storyRequest);
            int count = 0;
            foreach (var d in queryResults.Results)
            {
                count++;
                Console.WriteLine(count + ". FormattedID: " + d["FormattedID"] + " Name: " + d["Name"]);
            }
            Console.WriteLine("Found " + queryResults.TotalResultCount);
        }
        static void Main(string[] args)
        {
            int storyCount = 0;
            int taskCount = 0;
            RallyRestApi restApi;
            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            String workspaceRef = "/workspace/12352608129";     //replace this OID with an OID of your workspace

            Request sRequest = new Request("HierarchicalRequirement");
            sRequest.Workspace = workspaceRef;
            sRequest.Fetch = new List<string>() { "FormattedID", "Name", "Tasks", "Iteration"};
            sRequest.Query = new Query("(Iteration.StartDate <= Today)").And(new Query("(Iteration.EndDate >= Today)"));
            QueryResult queryResults = restApi.Query(sRequest);

            foreach (var s in queryResults.Results)
            {
                Console.WriteLine("FormattedID: " + s["FormattedID"] + " Name: " + s["Name"]);
                storyCount++;
                Request tasksRequest = new Request(s["Tasks"]);
                QueryResult queryTaskResult = restApi.Query(tasksRequest);
                foreach (var t in queryTaskResult.Results)
                {
                    Console.WriteLine("Task: " + t["FormattedID"] + " State: " + t["State"]);
                    taskCount++;
                }
            }
            Console.WriteLine(storyCount + " stories, " + taskCount + " tasks ");
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi;
            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            String workspaceRef = "/workspace/12345";     //replace this OID with an OID of your workspace

            DateTime today = DateTime.Today;
            DateTime checkback = today.AddDays(-2); //last two days
            String checkbackString = checkback.ToString("yyyy-MM-dd");

            Request sRequest = new Request("HierarchicalRequirement");
            sRequest.Workspace = workspaceRef;
            sRequest.Fetch = new List<string>() { "Name", "FormattedID", "RevisionHistory", "Revisions", "LastUpdateDate" };
            sRequest.Query = new Query("LastUpdateDate", Query.Operator.GreaterThanOrEqualTo, checkbackString);
            QueryResult queryResults = restApi.Query(sRequest);

            foreach (var s in queryResults.Results)
            {
                Console.WriteLine("**********************************************************");
                Console.WriteLine("FormattedID: " + s["FormattedID"] + " Name: " + s["Name"]);
                Console.WriteLine("**********************************************************");
                String historyRef = s["RevisionHistory"]._ref;
                Request revisionsRequest = new Request("Revisions");
                revisionsRequest.Query = new Query("RevisionHistory", Query.Operator.Equals, historyRef);
                revisionsRequest.Fetch = new List<string>() { "User", "Description", "RevisionNumber", "CreationDate" };
                QueryResult revisionsResults = restApi.Query(revisionsRequest);
                foreach (var r in revisionsResults.Results)
                {
                    Console.WriteLine("-------------------------------------------------------");
                    Console.WriteLine("Description: " + r["Description"] + " Author: " + r["User"]._refObjectName + " CreationDate: " + r["CreationDate"]);

                }
            }
        }
        public List<dynamic> GetStories(string currentRunTime, string projectRef)
        {
            List<dynamic> returnValue;
            RallyRestApi rallyApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");
            Request request = new Request("HierarchicalRequirement");
            request.Project = projectRef;
            request.ProjectScopeUp = false;
            request.ProjectScopeDown = false;
            request.PageSize = 200;
            try
            {

                QueryResult qr = rallyApi.Query(request);
                var results = qr.Results;
                returnValue = results.ToList();
                while (results.Count() == 200)
                {
                    Console.WriteLine("inside while loop...  " + results.Count());
                    request.Start = returnValue.Count + 1;
                    results = rallyApi.Query(request).Results;
                    returnValue.AddRange(results);
                }
                Console.WriteLine("total results returned...  " + returnValue.Count);
            }
            catch (Exception)
            {
                throw;
            }

            return returnValue;
        }
Esempio n. 15
0
        int DoSign(IEnumerable<Artifact> artifacts, SynchronizationContext sc)
        {
            var restApi = new RallyRestApi(Settings.Default.RallyUser, Settings.Default.RallyPassword
                //, proxy: new WebProxy("localhost:8888", false)
                );

            foreach (var tagArt in artifacts)
            {
                var toCreate = new DynamicJsonObject();
                toCreate["Text"] = "%FIX_CODE_REVIEW_PASSED%";
                toCreate["Artifact"] = tagArt.Reference;
                var createResult = restApi.Create("ConversationPost", toCreate);

                // update status
                sc.Post(_ => {
                    var lvi = listViewArtifacts.Items.Cast<ListViewItem>().FirstOrDefault(l => l.Tag == tagArt);
                    if (!createResult.Success)
                    {
                        lvi.BackColor = Color.Tomato;

                        if (createResult.Errors.Count > 0)
                            lvi.SubItems[1].Text = createResult.Errors[0];
                        else
                            lvi.SubItems[1].Text = "Unexpected error";
                    }
                    else
                    {
                        lvi.BackColor = Color.LightGreen;
                        lvi.SubItems[3].Text = "✔";
                    }
                }, null);
            }

            return 0;
        }
        static void Main(string[] args)
        {
            int storyCount = 0;
            int taskCount = 0;
            RallyRestApi restApi;
            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            String workspaceRef = "/workspace/1234";     //replace this OID with an OID of your workspace

            Request sRequest = new Request("HierarchicalRequirement");
            sRequest.Workspace = workspaceRef;
            sRequest.Fetch = new List<string>() { "FormattedID", "Name", "Tasks", "Release", "Project", "Owner" };
            sRequest.Query = new Query("Release.Name", Query.Operator.Equals, "r1").And(new Query("Owner", Query.Operator.Equals, "*****@*****.**"));
            QueryResult queryResults = restApi.Query(sRequest);

            foreach (var s in queryResults.Results)
            {
                Console.WriteLine("FormattedID: " + s["FormattedID"] + " Name: " + s["Name"] + " Release: " + s["Release"]._refObjectName + " Project: " + s["Project"]._refObjectName + " Owner: " + s["Owner"]._refObjectName);
                storyCount++;
                Request tasksRequest = new Request(s["Tasks"]);
                QueryResult queryTaskResult = restApi.Query(tasksRequest);
                foreach (var t in queryTaskResult.Results)
                {
                    Console.WriteLine("Task: " + t["FormattedID"] + " State: " + t["State"]);
                    taskCount++;
                }
            }
            Console.WriteLine(storyCount + " stories, "+  taskCount + " tasks ");
        }
 public List<dynamic> GetArtifactNotificationForDateRange(RallyRestApi rallyApi, string LastItemDateStamp, string currentRunTime, string projectRef)
 {
     List<dynamic> returnValue;
     Request request = new Request("artifactnotification");
     request.Project = projectRef;
     //request.PageSize = 200;
     request.Limit = 5000;
     request.Fetch = new List<string>() { "IDPrefix", "ID"};
     request.Query = new Query("CreationDate", Query.Operator.GreaterThan, LastItemDateStamp).And(new Query("CreationDate", Query.Operator.LessThanOrEqualTo, currentRunTime));
     try
     {
         QueryResult qr = rallyApi.Query(request);
         var results = qr.Results;
         foreach (var r in results)
         {
             Console.WriteLine(r["IDPrefix"] + r["ID"]);
         }
         returnValue = results.ToList();
         return returnValue;
     }
     catch (Exception)
     {
         throw;
     }
 }
 static void Main(string[] args)
 {
     String apiKey = "_abc123";
     RallyRestApi restApi = new RallyRestApi(apiKey, "https://rally1.rallydev.com");
     String projectRef = "/project/12352608219";
     Request request = new Request("RecycleBinEntry");
     request.Project = projectRef;
     request.Fetch = new List<string>() { "Name"};
     request.Query = new Query("ID", Query.Operator.Equals, "DE6");
     QueryResult result = restApi.Query(request);
     Console.WriteLine("Name: " + result.Results.First()["Name"]);
 }
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
            String apiKey = "_abc123";
            restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);
            String workspaceRef = "/workspace/123";
            String projectRef = "/project/456";

            Request request = new Request("PortfolioItem/Feature");
            request.Fetch = new List<string>() { "Name", "FormattedID" };
            request.Query = new Query("FormattedID", Query.Operator.Equals, "F2356");
            QueryResult result = restApi.Query(request);

            String featureRef = result.Results.First()._ref;
            Console.WriteLine("found" + featureRef);

            //create stories
            try
            {
                for (int i = 1; i <= 25; i++)
                {
                    DynamicJsonObject story = new DynamicJsonObject();
                    story["Name"] = "story " + i;
                    story["PlanEstimate"] = new Random().Next(2,10);
                    story["PortfolioItem"] = featureRef;
                    story["Project"] = projectRef;
                    CreateResult createResult = restApi.Create(workspaceRef, "HierarchicalRequirement", story);
                    story = restApi.GetByReference(createResult.Reference, "FormattedID");
                    Console.WriteLine("creating..." + story["FormattedID"]);
                }
            //read stories
                DynamicJsonObject feature = restApi.GetByReference(featureRef, "UserStories");
                Request storiesRequest = new Request(feature["UserStories"]);
                storiesRequest.Fetch = new List<string>()
                {
                    "FormattedID",
                    "PlanEstimate"
                };
                storiesRequest.Limit = 1000;
                QueryResult storiesResult = restApi.Query(storiesRequest);
                int storyCount = 0;
                foreach (var userStory in storiesResult.Results)
                {
                    Console.WriteLine(userStory["FormattedID"] + " " + userStory["PlanEstimate"]);
                    storyCount++;
                }
                Console.WriteLine(storyCount);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Esempio n. 20
0
        public ICollection<Story> GetAllStories()
        {
            var api = new RallyRestApi("*****@*****.**", "old*9salt");

            var result = api.Query(new Request("HierarchicalRequirement") {
                Fetch = new[] {"Name", "PlanEstimate"}.ToList(),
                PageSize = 20,
                Limit = 20
            });

            return result.Results.Take(20).Select(Translate).ToList();
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi;
            restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");

            String projectRef = "/project/222";
            Request testSetRequest = new Request("TestSet");
            testSetRequest.Project = projectRef;
            testSetRequest.Fetch = new List<string>()
                {
                    "Name",
            "FormattedID",
                    "TestCases"
                };

            testSetRequest.Query = new Query("FormattedID", Query.Operator.Equals, "TS22");
            QueryResult queryTestSetResults = restApi.Query(testSetRequest);
            String tsRef = queryTestSetResults.Results.First()._ref;
            String tsName = queryTestSetResults.Results.First().Name;
            Console.WriteLine(tsName + " "  + tsRef);
            DynamicJsonObject testSet = restApi.GetByReference(tsRef, "FormattedID", "TestCases");
            String testCasesCollectionRef = testSet["TestCases"]._ref;
            Console.WriteLine(testCasesCollectionRef);

            ArrayList testCasesList = new ArrayList();

            foreach (var ts in queryTestSetResults.Results)
            {
                Request tcRequest = new Request(ts["TestCases"]);
                QueryResult queryTestCasesResult = restApi.Query(tcRequest);
                foreach (var tc in queryTestCasesResult.Results)
                {
                    var tName = tc["Name"];
                    var tFormattedID = tc["FormattedID"];
                    Console.WriteLine("Test Case: " + tName + " " + tFormattedID);
                    DynamicJsonObject aTC = new DynamicJsonObject();
                    aTC["_ref"] = tc["_ref"];
                    testCasesList.Add(aTC);  //add each test case in the collection to array 'testCasesList'
                }
            }

             Console.WriteLine("count of elements in the array before adding a new tc:" + testCasesList.Count);

              DynamicJsonObject anotherTC = new DynamicJsonObject();
              anotherTC["_ref"] = "/testcase/123456789";             //any existing test to add to the collection

               testCasesList.Add(anotherTC);

               Console.WriteLine("count of elements in the array:" + testCasesList.Count);
               testSet["TestCases"] = testCasesList;
               OperationResult updateResult = restApi.Update(tsRef, testSet);
        }
 public RallyApi.RallyRestApi GetApi(string apiKey, string rallyServer)
 {
     RallyApi.RallyRestApi api = new RallyApi.RallyRestApi();
     var result = api.AuthenticateWithApiKey(apiKey, rallyServer);
     if (result == RallyApi.RallyRestApi.AuthenticationResult.Authenticated)
     {
         return api;
     }
     else
     {
         return null;
     }
 }
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
            String apiKey = "_abc777";
            restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);
            String workspaceRef = "/workspace/123";
            String projectRef = "/project/134";

            DynamicJsonObject badDefect = new DynamicJsonObject();
            badDefect["Name"] = "bad defect " + DateTime.Now;
            badDefect["Project"] = projectRef;

            CreateResult createRequest = restApi.Create(workspaceRef, "Defect", badDefect);
            badDefect = restApi.GetByReference(createRequest.Reference, "FormattedID", "Project");
            Console.WriteLine(badDefect["FormattedID"] + " " + badDefect["Project"]._refObjectName);
        }
    static void Main(string[] args)
    {
        RallyRestApi restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");
        DynamicJsonObject user = restApi.GetCurrentUser();
        String userRef = user["_ref"];
        String workspaceRef = "/workspace/11111"; //use valid workspace OID in your Rally
        String projectRef = "/project/12345";         //use valid project OID in your Rally

        DynamicJsonObject myStory = new DynamicJsonObject();
        myStory["Name"] = "my story";
        myStory["Project"] = projectRef;
        myStory["Owner"] = userRef;
        CreateResult createResult = restApi.Create(workspaceRef, "HierarchicalRequirement", myStory);
        myStory = restApi.GetByReference(createResult.Reference, "FormattedID", "Owner", "Project");
        Console.WriteLine(myStory["FormattedID"] + " " + myStory["Owner"]._refObjectName + " " + myStory["Project"]._refObjectName);
    }
        static void Main(string[] args)
        {
            RallyRestApi rallyApi = new RallyRestApi("*****@*****.**", "secret", "https://sandbox.rallydev.com", "v2.0");
            Program program = new Program();
            String projectRef = "/project/12352608219"; //Company X
            String aUTCdateString = "2015-04-08";
            while (true)
            {

                Console.WriteLine("===============");
                DateTime start = DateTime.Now;
                var p = program.GetArtifactNotificationForDateRange(rallyApi, aUTCdateString, DateTime.Now.ToString("o"), projectRef);
                DateTime finish = DateTime.Now;
                Console.WriteLine(string.Format("{0}", finish.Subtract(start)));
                Thread.Sleep(5000);
            }
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi;
            //restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");
            restApi = new RallyRestApi("_abc123", "https://rally1.rallydev.com"); //either username/passowrd or API Key authetnication is valid
            String workspaceRef = "/workspace/12352608129";     //replace this OID with an OID of your workspace

            DateTime today = DateTime.Today;
            DateTime checkback = today.AddDays(-5);
            String checkbackString = checkback.ToString("yyyy-MM-dd");

            Request sRequest = new Request("HierarchicalRequirement");
            sRequest.Workspace = workspaceRef;
            sRequest.Fetch = new List<string>() { "Name", "FormattedID", "Changesets", "LastUpdateDate" };
            sRequest.Query = new Query("LastUpdateDate", Query.Operator.GreaterThanOrEqualTo, checkbackString);
            QueryResult queryResults = restApi.Query(sRequest);

            foreach (var s in queryResults.Results)
            {
                Console.WriteLine("**********************************************************");
                Console.WriteLine("FormattedID: " + s["FormattedID"] + " Name: " + s["Name"]);
                Console.WriteLine("**********************************************************");
                Request changesetRequest = new Request("Changesets");
                QueryResult changesetResult = restApi.Query(changesetRequest);
                String author = "None";
                if (changesetResult.TotalResultCount > 0)
                {
                    foreach (var c in changesetResult.Results)
                    {
                        if (c["Author"] != null)
                        {
                            author = c["Author"]._refObjectName;
                        }
                        Console.WriteLine("changeset: Author:" + author + " SCMRepository: " + c["SCMRepository"]._refObjectName + " Message: " + c["Message"]);
                        Request changesRequest = new Request(c["Changes"]);
                        QueryResult changesResult = restApi.Query(changesRequest);
                        foreach (var ch in changesResult.Results)
                        {
                            Console.WriteLine("Change: " + ch["Action"] + " PathAndFilename: " + ch["PathAndFilename"]);
                        }
                    }
                }

            }
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
            String apiKey = "_abc123";
            restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);
            String workspaceRef = "/workspace/1011574887"; //non-default workspace of the user
            String projectRef = "/project/1791269111"; //a non-default project of the user (inside the workspace above)
            try
            {
                //create testset
                DynamicJsonObject myTestSet = new DynamicJsonObject();
                myTestSet["Name"] = "important set " + DateTime.Now;
                myTestSet["Project"] = projectRef;

                CreateResult createTestSet = restApi.Create(workspaceRef, "TestSet", myTestSet);
                myTestSet = restApi.GetByReference(createTestSet.Reference, "FormattedID", "Project");
                Console.WriteLine(myTestSet["FormattedID"] + " " + myTestSet["Project"]._refObjectName);

                //find current iteration

                Request iterationRequest = new Request("Iteration");
                iterationRequest.Project = projectRef;
                iterationRequest.ProjectScopeDown = false;
                iterationRequest.ProjectScopeUp = false;
                iterationRequest.Fetch = new List<string>() { "ObjectID", "Name" };
                iterationRequest.Query = new Query("(StartDate <= Today)").And(new Query("(EndDate >= Today)"));
                QueryResult queryResults = restApi.Query(iterationRequest);
                if (queryResults.TotalResultCount > 0)
                {
                    Console.WriteLine(queryResults.Results.First()["Name"] + " " + queryResults.Results.First()["ObjectID"]);
                    myTestSet["Iteration"] = queryResults.Results.First()._ref;
                    OperationResult updateResult = restApi.Update(myTestSet["_ref"], myTestSet);
                }
                else
                {
                    Console.WriteLine("No current iterations");
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
    static void Main(string[] args)
    {
        RallyRestApi restApi = new RallyRestApi("*****@*****.**", "secret", "https://sandbox.rallydev.com", "v2.0");
        DynamicJsonObject user = restApi.GetCurrentUser();
        String userRef = user["_ref"];
        String workspaceRef = "/workspace/12352608129"; //use valid workspace OID in your Rally
        String projectRef = "/project/14018981229";         //use valid project OID in your Rally

        System.Diagnostics.TextWriterTraceListener myListener = new System.Diagnostics.TextWriterTraceListener("log.log", "myListener");

        try
        {
            //create story
            DynamicJsonObject myStory = new DynamicJsonObject();
            myStory["Name"] = "my story " + DateTime.Now;
            myStory["Project"] = projectRef;
            myStory["Owner"] = userRef;
            CreateResult createStory = restApi.Create(workspaceRef, "HierarchicalRequirement", myStory);
            myStory = restApi.GetByReference(createStory.Reference, "FormattedID", "Owner", "Project");
            myListener.WriteLine(DateTime.Now + "___________\r\n" +  myStory["FormattedID"] + " Owner: " + myStory["Owner"]._refObjectName + " Project: " + myStory["Project"]._refObjectName);

            //update story
            myStory["Description"] = "updated " + DateTime.Now;

            //create tasks
            for (int i = 1; i <= 3; i++)
            {
                DynamicJsonObject myTask = new DynamicJsonObject();
                myTask["Name"] = "task " + i + DateTime.Now;
                myTask["Owner"] = userRef;
                myTask["State"] = "In-Progress";
                myTask["WorkProduct"] = myStory["_ref"];
                CreateResult createTask = restApi.Create(workspaceRef, "Task", myTask);
                myTask = restApi.GetByReference(createTask.Reference, "FormattedID", "Owner", "State");
                myListener.WriteLine(myTask["FormattedID"] + " State: " + myTask["StateX"]);
            }
        }
        catch(Exception e)
        {
            myListener.WriteLine(e);
        }

        myListener.Flush();
    }
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi("*****@*****.**", "secret", "https://rally1.rallydev.com", "v2.0");
            String workspaceRef = "/workspace/11111"; //use valid workspace OID in your Rally
            String projectRef = "/project/12345";         //use valid project OID in your Rally
            String userRef = "/user/777";
            DynamicJsonObject d = new DynamicJsonObject();
            d["Name"] = "some bug";
            d["Project"] = projectRef;
            d["Owner"] = userRef;

            CreateResult createResult = restApi.Create(workspaceRef, "Defect", d);
            DynamicJsonObject defect = restApi.GetByReference(createResult.Reference, "FormattedID");
            Console.WriteLine(defect["FormattedID"]);

            //update defect
            defect["Description"] = "bad bug";
            OperationResult updateResult = restApi.Update(defect["_ref"], defect);
        }
        static void Main(string[] args)
        {
            //Initialize the REST API
            RallyRestApi restApi;
               restApi = new RallyRestApi("*****@*****.**", "topsecret", "https://rally1.rallydev.com", "v2.0");

            //Set our Workspace and Project scopings
            String workspaceRef = "/workspace/1111"; //use valid OID of your workspace
            String projectRef = "/project/2222";     //use valid OID of your project
            bool projectScopingUp = false;
            bool projectScopingDown = true;
            Request userRequest = new Request("User");

            userRequest.Workspace = workspaceRef;
            userRequest.Project = projectRef;
            userRequest.ProjectScopeUp = projectScopingUp;
            userRequest.ProjectScopeDown = projectScopingDown;

            /*
                userRequest.Fetch = new List<string>()
                {
                   "Role",
            "CostCenter",
                   "LastLoginDate",
                   "OfficeLocation",
                   "CreationDate"
                };*/

            userRequest.Query = new Query("UserName", Query.Operator.Equals, "*****@*****.**");

            QueryResult userResults = restApi.Query(userRequest);
            String userRef = userResults.Results.First()._ref;
            DynamicJsonObject user = restApi.GetByReference(userRef, "Name", "Role", "CostCenter", "LastLoginDate", "OfficeLocation", "CreationDate");
            String role = user["Role"];
            String costCenter = user["CostCenter"];
            String lastLoginDate = user["LastLoginDate"];
            String officeLocation = user["OfficeLocation"];
            String creationDate = user["CreationDate"];

            Console.WriteLine("Role: " + role + " CostCenter: " + costCenter + " LastLoginDate: " + lastLoginDate + " OfficeLocation: " + officeLocation + " CreationDate: " + creationDate);
        }
        static void Main(string[] args)
        {
            RallyRestApi restApi = new RallyRestApi(webServiceVersion: "v2.0");
                String apiKey = "_abc123";
                restApi.Authenticate(apiKey, "https://rally1.rallydev.com", allowSSO: false);
                String projectRef = "/project/32904827032";
                try
                {
                    //create story
                    DynamicJsonObject myStory = new DynamicJsonObject();
                    myStory["Name"] = "another story " + DateTime.Now;
                    myStory["Project"] = projectRef;

                    CreateResult createStory = restApi.Create(workspaceRef, "HierarchicalRequirement", myStory);
                    myStory = restApi.GetByReference(createStory.Reference, "FormattedID", "Project");

                    //update story
                    myStory["Description"] = "updated " + DateTime.Now;
                    myStory["c_CustomString"] = "abc123";
                    Console.WriteLine("--------------------");
                    Console.WriteLine(myStory["FormattedID"]);
                    OperationResult updateResult = restApi.Update(myStory["_ref"], myStory);

                    //create tasks
                    for (int i = 1; i <= 3; i++)
                    {
                        DynamicJsonObject myTask = new DynamicJsonObject();
                        myTask["Name"] = "task " + i + DateTime.Now;
                        myTask["State"] = "In-Progress";
                        myTask["WorkProduct"] = myStory["_ref"];
                        CreateResult createTask = restApi.Create(workspaceRef, "Task", myTask);
                        myTask = restApi.GetByReference(createTask.Reference, "FormattedID", "Owner", "State");
                        Console.WriteLine(myTask["FormattedID"]);

                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
        }