GetCurrentUser() 공개 메소드

Get the current user
Rally returned an HTML page. This usually occurs when Rally is off-line. Please check the ErrorMessage property for more information. The JSON returned by Rally was not able to be deserialized. Please check the JsonData property for what was returned by Rally.
public GetCurrentUser ( ) : dynamic
리턴 dynamic
    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 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();
    }
예제 #3
0
        List<ChangedArtifact> LoadChanges(DateTime fromTime, DateTime toTime, CancellationToken ct)
        {
            var toS = toTime.ToString("yyyy-MM-ddTHH:mm:ss");
            var fromS = fromTime.ToString("yyyy-MM-ddTHH:mm:ss");

            var client = new RallyRestApi(Settings.Default.RallyUser, Settings.Default.RallyPassword, cancellationToken: ct);

            if (_currentUser == null)
            {
                backgroundOperation.SetProgress("Get current user ...");
                if (string.IsNullOrWhiteSpace(textBoxUser.Text) || textBoxUser.Tag != null)
                {
                    _currentUser = client.GetCurrentUser();
                }
                else
                {
                    var query = new Query("(UserName = "******")");
                    var resp = client.Query(new Request("user") { Query = query });
                    _currentUser = resp.Results.First();
                }
            }

            // retrieve revisions
            var requestRevs = new Request("revision");
            requestRevs.Limit = Int32.MaxValue;
            requestRevs.Fetch = new List<string> { "Description", "RevisionHistory", "CreationDate" };
            requestRevs.Query = new Query("User", Query.Operator.Equals, _currentUser["UserName"])
                .And(new Query("CreationDate", Query.Operator.GreaterThanOrEqualTo, fromS))
                .And(new Query("CreationDate", Query.Operator.LessThanOrEqualTo, toS))
            ;

            backgroundOperation.SetProgress("Load revisions ...");

            var resultRevs = client.Query(requestRevs);

            var revHists = resultRevs.Results.Cast<DynamicJsonObject>()
                .GroupBy(r => (string)r["RevisionHistory"]["_refObjectUUID"])
                .ToDictionary(g => g.Key, g => g.Select(r => (DynamicJsonObject)r).ToList())
            ;

            // check cancellation
            ct.ThrowIfCancellationRequested();

            // query artifacts
            var requestArtifacts = new Request("artifact");
            requestArtifacts.Limit = Int32.MaxValue;
            requestArtifacts.Fetch = new List<string> { "FormattedID", "Name", "RevisionHistory", "LastUpdateDate", "Requirement", "WorkProduct", "ObjectID", "Owner", "Project" };
            requestArtifacts.Query = new Query("LastUpdateDate", Query.Operator.GreaterThanOrEqualTo, fromS)
                .And(new Query("LastUpdateDate", Query.Operator.LessThanOrEqualTo, toS))
            ;

            var artUuid2Revs = new Dictionary<string, List<DynamicJsonObject>>();
            var artUuid2Art = new Dictionary<string, DynamicJsonObject>();

            backgroundOperation.SetProgress("Load artifacts ...");

            var resultArts = client.Query(requestArtifacts);

            foreach (var art in resultArts.Results)
            {
                // can't inject in Query ....
                var type = (string)art["_type"];
                if (type != "Task" && type != "Defect")
                    continue;

                var histUuid = (string)art["RevisionHistory"]["_refObjectUUID"];
                if (!revHists.ContainsKey(histUuid))
                    continue;

                List<DynamicJsonObject> artifactRevs;
                if (!artUuid2Revs.TryGetValue((string)art["_refObjectUUID"], out artifactRevs))
                {
                    artifactRevs = new List<DynamicJsonObject>();
                    artUuid2Revs[(string)art["_refObjectUUID"]] = artifactRevs;
                }

                artifactRevs.AddRange(revHists[histUuid]);
                artUuid2Art[(string)art["_refObjectUUID"]] = art;
            }

            foreach (var group in artUuid2Art.GroupBy(kvp => new Artifact(kvp.Value).Type).ToArray())
            {
                ct.ThrowIfCancellationRequested();

                backgroundOperation.SetProgress(string.Format("Loading group of '{0}' ...", group.Key));

                var allIds = group.Select(a => new Artifact(a.Value).ObjectID.ToString(CultureInfo.InvariantCulture)).ToArray();
                var query = allIds
                    .Skip(1)
                    .Aggregate(new Query("ObjectId", Query.Operator.Equals, allIds.First()), (current, id) => current.Or(new Query("ObjectId", Query.Operator.Equals, id)))
                ;

                var r = new Request(group.First().Value["_type"]);
                r.Limit = Int32.MaxValue;
                r.Query = query;
                var qr = client.Query(r);

                foreach (var result in qr.Results)
                {
                    if (result["_type"] == "Task")
                    {
                        artUuid2Art[result["_refObjectUUID"]]["Estimate"] = (double)result["Estimate"];
                        artUuid2Art[result["_refObjectUUID"]]["ToDo"] = (double)result["ToDo"];
                        artUuid2Art[result["_refObjectUUID"]]["State"] = (string)result["State"];
                    }
                    else if (result["_type"] == "Defect")
                    {
                        //var additionalInfo = client.GetByReference(art.Reference);

                        //artUuid2Art[kvp.Key]["Estimate"] = additionalInfo["Estimate"];
                        //artUuid2Art["ToDo"] = additionalInfo["ToDo"];
                    }
                }
            }

            var changes = artUuid2Revs
                .Select(kvp => new ChangedArtifact { Artifact = artUuid2Art[kvp.Key], Revisions = kvp.Value, WorkItem = new Artifact(artUuid2Art[kvp.Key]) })
                .ToList()
            ;

            UpdateCache(changes);

            return changes;
        }
예제 #4
0
        void EnsureQueryValid()
        {
            if (string.IsNullOrWhiteSpace(Settings.Default.RallyQuery))
            {
                var userName = Settings.Default.RallyUser;

                try
                {
                    var rr = new RallyRestApi(Settings.Default.RallyUser, Settings.Default.RallyPassword);

                    var currentUser = rr.GetCurrentUser("UserName");

                    userName = (string)currentUser["UserName"];
                }
                catch
                {
                }

                var ownerClause = string.Format("(Owner.Name = \"{0}\")", userName);

                Settings.Default.RallyQuery = string.Format("({0} and ((State < \"Completed\") or (State < \"Closed\")))", ownerClause);

                textBoxQuery.Text = Settings.Default.RallyQuery;

                Settings.Default.Save();
            }
        }