Как использовать TFS REST API для внесения изменений в рабочий элемент от имени указанного пользователя - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно что-то вроде Внести изменения в рабочий элемент TFS от имени конкретного пользователя , но для TFS REST API.

Итак:

new WorkItemTrackingHttpClient(new Uri("http://server:8080/tfs"), new VssCredentials(...));

каковы мои следующие шаги?

1 Ответ

0 голосов
/ 19 сентября 2018

Олицетворение пользователя в Rest API не поддерживается, оно поддерживается в SOAP API.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * "*" "за 100%".REST API вы можете попробовать ниже:

public class TFSClient
{
    public WorkItemTrackingHttpClient WorkItem { get; set; }
    public TFSClient()
    {            
        VssCredentials vssCred = new VssCredentials(new WindowsCredential(true));
        WorkItem = new WorkItemTrackingHttpClient(new Uri(TFSServer.Url), vssCred);
    }
}
 public static object UpdateWorkItemByID(int id)
    {
        try
        {
            JsonPatchDocument patchDocument = new JsonPatchDocument
            {
                new JsonPatchOperation()
                {                       
                    Operation = Operation.Add,
                    Path = ItemField.History,
                    Value = "Teste"
                }
            };            
            return  new TFSClient().WorkItem.UpdateWorkItemAsync(patchDocument, id).Result;              

        }

        catch (Exception e)
        {
            throw e;
        }
    }

Вы также можете обновить рабочий элемент, вызвав REST API, указав конкретного пользователя напрямую:

например:

VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("username", "password", "domain")));

Альтернативно с помощью PowerShell:

Param(
   [string]$baseurl = "http://server:8080/tfs/DefaultCollection",  
   [string]$workitemid = "39",
   [string]$user = "Domain\user",
   [string]$token = "password"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
write-host $WorkitemType

function CreateJsonBody
{

    $value = @"
[
  {
    "op": "test",
    "path": "/rev",
    "value": 7
  },
  {
    "op": "add",
    "path": "/fields/System.Title",
    "value": "test0909ddd"
  }

]

"@

 return $value
}

$json = CreateJsonBody

$uri = "$baseurl/_apis/wit/workitems/$($workitemid)?api-version=2.2" #_apis/wit/workitems/"+"$"+"bug?api-version=2.2"
Write-Host $uri
$result = Invoke-RestMethod -Uri $uri -Method Patch -Body $json -ContentType "application/json-patch+json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...