Skip to content

Commit 2ef54e4

Browse files
committed
Added support for creating project team memberships
Better log messages Create Result now carries the created object
1 parent 29fe72b commit 2ef54e4

4 files changed

Lines changed: 43 additions & 14 deletions

File tree

Rally.RestApi/HttpService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public string Post(Uri target, string data, IDictionary<string, string> headers
9292
}
9393
finally
9494
{
95-
Trace.TraceInformation("Post Url ({0}):\r\n{1}\r\nRequest Headers:\r\n{2}Request Data:\r\n{3}\r\nResponse Headers:\r\n{4}Response Data\r\n{5}",
95+
Trace.TraceInformation("Post ({0}):\r\n{1}\r\nRequest Headers:\r\n{2}Request Data:\r\n{3}\r\nResponse Headers:\r\n{4}Response Data\r\n{5}",
9696
DateTime.Now.Subtract(startTime).ToString(),
9797
target.ToString(),
9898
requestHeaders,
@@ -120,7 +120,7 @@ public string Get(Uri target, IDictionary<string, string> headers = null)
120120
}
121121
finally
122122
{
123-
Trace.TraceInformation("Get Url ({0}):\r\n{1}\r\nRequest Headers:\r\n{2}Response Headers:\r\n{3}Response Data\r\n{4}",
123+
Trace.TraceInformation("Get ({0}):\r\n{1}\r\nRequest Headers:\r\n{2}Response Headers:\r\n{3}Response Data\r\n{4}",
124124
DateTime.Now.Subtract(startTime).ToString(),
125125
target.ToString(),
126126
requestHeaders,
@@ -159,7 +159,7 @@ public string Delete(Uri target, IDictionary<string, string> headers = null)
159159
}
160160
finally
161161
{
162-
Trace.TraceInformation("Delete Url ({0}):\r\n{1}\r\nRequest Headers:\r\n{2}Response Headers:\r\n{3}Response Data\r\n{4}",
162+
Trace.TraceInformation("Delete ({0}):\r\n{1}\r\nRequest Headers:\r\n{2}Response Headers:\r\n{3}Response Data\r\n{4}",
163163
DateTime.Now.Subtract(startTime).ToString(),
164164
target.ToString(),
165165
requestHeaders,

Rally.RestApi/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
// You can specify all the values or you can default the Build and Revision Numbers
3232
// by using the '*' as shown below:
3333
// [assembly: AssemblyVersion("1.0.*")]
34-
[assembly: AssemblyVersion("1.0.17.0")]
35-
[assembly: AssemblyFileVersion("1.0.17.0")]
34+
[assembly: AssemblyVersion("1.0.18.0")]
35+
[assembly: AssemblyFileVersion("1.0.18.0")]
3636

3737
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("Rally.RestApi.Test")]

Rally.RestApi/RallyRestApi.cs

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -464,21 +464,27 @@ public OperationResult Delete(string workspaceRef, string aRef)
464464
/// <returns></returns>
465465
public CreateResult Create(string workspaceRef, string typePath, DynamicJsonObject obj)
466466
{
467+
DynamicJsonObject response = CreateWithUri(FormatCreateString(workspaceRef, typePath), typePath, obj);
468+
DynamicJsonObject createResult = response["CreateResult"];
467469
var createResponse = new CreateResult();
468-
var data = new DynamicJsonObject();
469-
data[typePath] = obj;
470-
string postData = serializer.Serialize(data);
471-
dynamic response =
472-
serializer.Deserialize(Service.Post(FormatCreateString(workspaceRef,typePath), postData, GetProcessedHeaders()));
473-
if(response.CreateResult.HasMember("Object"))
470+
if (createResult.HasMember("Object"))
474471
{
475-
createResponse.Reference = response.CreateResult.Object._ref as string;
472+
createResponse.Object = createResult["Object"];
473+
createResponse.Reference = createResponse.Object["_ref"] as string;
476474
}
477-
createResponse.Errors.AddRange(DecodeArrayList(response.CreateResult.Errors));
478-
createResponse.Warnings.AddRange(DecodeArrayList(response.CreateResult.Warnings));
475+
createResponse.Errors.AddRange(DecodeArrayList(createResult["Errors"]));
476+
createResponse.Warnings.AddRange(DecodeArrayList(createResult["Warnings"]));
479477
return createResponse;
480478
}
481479

480+
public DynamicJsonObject CreateWithUri(Uri uri, string typePath, DynamicJsonObject obj)
481+
{
482+
var data = new DynamicJsonObject();
483+
data[typePath] = obj;
484+
string postData = serializer.Serialize(data);
485+
return serializer.Deserialize(Service.Post(uri, postData, GetProcessedHeaders()));
486+
}
487+
482488
/// <summary>
483489
/// Update the item described by the specified reference with
484490
/// the fields of the specified object
@@ -491,6 +497,24 @@ public OperationResult Update(string reference, DynamicJsonObject obj)
491497
return Update(Ref.GetTypeFromRef(reference), Ref.GetOidFromRef(reference), obj);
492498
}
493499

500+
public CreateResult CreateProjectTeamMembership(String projectOid, String userOid)
501+
{
502+
Uri uri = new Uri(String.Format("{0}slm/webservice/{1}/project/{2}/projectuser/{3}.js", Service.Server.AbsoluteUri, wsapiVersion, projectOid, userOid));
503+
DynamicJsonObject data = new DynamicJsonObject();
504+
data["TeamMember"] = true;
505+
DynamicJsonObject response = CreateWithUri(uri, "projectuser", data);
506+
DynamicJsonObject operationResult = response["OperationResult"];
507+
var createResponse = new CreateResult();
508+
if (operationResult.HasMember("Object"))
509+
{
510+
createResponse.Object = operationResult["Object"];
511+
createResponse.Reference = createResponse.Object["_ref"] as string;
512+
}
513+
createResponse.Errors.AddRange(DecodeArrayList(operationResult["Errors"]));
514+
createResponse.Warnings.AddRange(DecodeArrayList(operationResult["Warnings"]));
515+
return createResponse;
516+
}
517+
494518
/// <summary>
495519
/// Update the item described by the specified type and object id with
496520
/// the fields of the specified object

Rally.RestApi/Response/CreateResult.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,10 @@ public CreateResult()
2020
/// The ref of the created item
2121
/// </summary>
2222
public string Reference { get; set; }
23+
24+
/// <summary>
25+
/// The object created
26+
/// </summary>
27+
public DynamicJsonObject Object { get; set; }
2328
}
2429
}

0 commit comments

Comments
 (0)