Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #r "Newtonsoft.Json"
- #r "System.Configuration"
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Net.Http;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using Microsoft.TeamFoundation.Build.WebApi;
- using Microsoft.VisualStudio.Services.Common;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
- {
- string jsonContent = await req.Content.ReadAsStringAsync();
- // Deserialize Json
- var jsonObject = JsonConvert.DeserializeObject<VSTSWebHook>(jsonContent);
- // From ApplicationSettings
- var vstsUser = ConfigurationManager.AppSettings["VstsUser"];
- var vstsPassword = ConfigurationManager.AppSettings["VstsPassword"];
- // Create VSTS Connection from Json Value
- var project = new Guid(jsonObject.resource.definition.project.id);
- var definitionId = jsonObject.resource.definition.id;
- var result = jsonObject.resource.result;
- var buildId = jsonObject.resource.id;
- var build = new BuildHttpClient(new Uri("https://<YOUR TENANT>.VisualStudio.com/DefaultCollection/"), new VssBasicCredential(vstsUser, vstsPassword));
- // Exception will happen at here.
- // Obrain definition from VSTS
- var buildDefinition = await build.GetDefinitionAsync(project, definitionId);
- return req.CreateResponse(HttpStatusCode.OK, new {
- body = $"Test Complete.",
- });
- }
- public class VSTSWebHook
- {
- public string subscriptionId { get; set; }
- public int notificationId { get; set; }
- public string id { get; set; }
- public string eventType { get; set; }
- public string publisherId { get; set; }
- public Message message { get; set; }
- public Detailedmessage detailedMessage { get; set; }
- public Resource resource { get; set; }
- public string resourceVersion { get; set; }
- public Resourcecontainers resourceContainers { get; set; }
- public DateTime createdDate { get; set; }
- }
- public class Message
- {
- public string text { get; set; }
- public string html { get; set; }
- public string markdown { get; set; }
- }
- public class Detailedmessage
- {
- public string text { get; set; }
- public string html { get; set; }
- public string markdown { get; set; }
- }
- public class Resource
- {
- public int id { get; set; }
- public string status { get; set; }
- public string result { get; set; }
- public DateTime queueTime { get; set; }
- public DateTime startTime { get; set; }
- public DateTime finishTime { get; set; }
- public string url { get; set; }
- public Definition definition { get; set; }
- public string uri { get; set; }
- public string sourceBranch { get; set; }
- public string sourceVersion { get; set; }
- public Queue queue { get; set; }
- public string priority { get; set; }
- public string reason { get; set; }
- public Requestedfor requestedFor { get; set; }
- public Requestedby requestedBy { get; set; }
- public DateTime lastChangedDate { get; set; }
- public Lastchangedby lastChangedBy { get; set; }
- public Orchestrationplan orchestrationPlan { get; set; }
- public Logs logs { get; set; }
- public Repository repository { get; set; }
- }
- public class Definition
- {
- public string type { get; set; }
- public int revision { get; set; }
- public int id { get; set; }
- public string name { get; set; }
- public string url { get; set; }
- public Project project { get; set; }
- }
- public class Project
- {
- public string id { get; set; }
- public string name { get; set; }
- public string url { get; set; }
- public string state { get; set; }
- }
- public class Queue
- {
- public object pool { get; set; }
- public int id { get; set; }
- public string name { get; set; }
- }
- public class Requestedfor
- {
- public string id { get; set; }
- public string displayName { get; set; }
- public string uniqueName { get; set; }
- public string url { get; set; }
- public string imageUrl { get; set; }
- }
- public class Requestedby
- {
- public string id { get; set; }
- public string displayName { get; set; }
- public string uniqueName { get; set; }
- public string url { get; set; }
- public string imageUrl { get; set; }
- public bool isContainer { get; set; }
- }
- public class Lastchangedby
- {
- public string id { get; set; }
- public string displayName { get; set; }
- public string uniqueName { get; set; }
- public string url { get; set; }
- public string imageUrl { get; set; }
- public bool isContainer { get; set; }
- }
- public class Orchestrationplan
- {
- public string planId { get; set; }
- }
- public class Logs
- {
- public int id { get; set; }
- public string type { get; set; }
- public string url { get; set; }
- }
- public class Repository
- {
- public string id { get; set; }
- public string type { get; set; }
- public object clean { get; set; }
- public bool checkoutSubmodules { get; set; }
- }
- public class Resourcecontainers
- {
- public Collection collection { get; set; }
- public Account account { get; set; }
- public Project1 project { get; set; }
- }
- public class Collection
- {
- public string id { get; set; }
- }
- public class Account
- {
- public string id { get; set; }
- }
- public class Project1
- {
- public string id { get; set; }
- }
- {
- "frameworks": {
- "net46":{
- "dependencies": {
- "Microsoft.TeamFoundationServer.Client" : "14.89.0",
- "Microsoft.VisualStudio.Services.Client" : "14.89.0"
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement