Как получить значение из `State` сервисных хуков на C # в TFS? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть сервисные хуки в моем проекте TFS. Как можно получить информацию о сервисных хуках с помощью C #? Мне нужно имя крючка и значение State (Enabled или Disabled).

Возможно ли это?

State

1 Ответ

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

Вы можете использовать REST API для получения значения состояния. Пожалуйста, смотрите Получить список подписок

PowerShell, например:

Param(
   [string]$baseUrl = "https://{account}.visualstudio.com/DefaultCollection/_apis/hooks/subscriptions",  
   [string]$user = "username",
   [string]$token = "password"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))   
$response = (Invoke-RestMethod -Uri $baseUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
$hooks = $response.value 

$states = @()
foreach($hook in $hooks){

    $customObject = new-object PSObject -property @{
          "consumer" = $hook.consumerId
          "id" = $hook.id
          "eventType" = $hook.eventType
          "state" = $hook.status
        } 
    $states += $customObject        
}   
$states | Select `
                consumer, 
                id, 
                eventType,
                state

Чтобы вызвать REST API с использованием C #, вы можете сослаться на этот поток: Как мне сделать вызовы REST API с помощью c #?

Вы также можете ссылаться ниже образец:

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace GetBuildsREST
{
    class Program
    {
        public static void Main()
        {
            Task t = GetBuildsREST();
            Task.WaitAll(new Task[] { t });
        }
        private static async Task GetBuildsREST()
        {
            try
            {
                var username = "domain\\user";
                var password = "password";

                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Accept.Add(
                        new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                        Convert.ToBase64String(
                            System.Text.ASCIIEncoding.ASCII.GetBytes(
                                string.Format("{0}:{1}", username, password))));

                    using (HttpResponseMessage response = client.GetAsync(
                                "https://{account}.visualstudio.com/DefaultCollection/_apis/hooks/subscriptions?api-version=2.0").Result)
                    {
                        response.EnsureSuccessStatusCode();
                        string responseBody = await response.Content.ReadAsStringAsync();
                        Console.WriteLine(responseBody);
                        //Do somthing to get the vale of the state....
                        //var obj = JObject.Parse(responseBody);
                        //var state = (string)obj["value"]["status"];
                        //or var state = (string)obj.SelectToken("value.status");

                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...