add.stats.command.to.tfsbot
[tfs.git] / tools / tfsbot / StatsCommand.cs
blobf9e71fac858df562c8303346cea72a073f08d3a4
1 using System;
2 using System.Collections;
3 using System.Collections.Generic;
4 using System.Collections.Specialized;
5 using System.Configuration;
6 using System.IO;
7 using System.Net;
8 using System.Text;
9 using System.Threading;
10 using System.Web.Services;
11 using System.Web.Services.Description;
12 using System.Web.Services.Discovery;
13 using System.Web.Services.Protocols;
15 using Meebey.SmartIrc4net;
16 using Microsoft.TeamFoundation.Client;
17 using Microsoft.TeamFoundation.VersionControl.Client;
18 using Microsoft.TeamFoundation.VersionControl.Common;
19 using OpenTF.Common;
21 [System.Web.Services.WebServiceBinding(Name="AdminSoap", Namespace="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/Admin/03")]
22 public class AdminStats : System.Web.Services.Protocols.SoapHttpClientProtocol {
24 public AdminStats(string url, ICredentials credentials)
26 this.Url = url + "/VersionControl/v1.0/administration.asmx";
27 this.Credentials = credentials;
30 [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/Admin/03/QueryRepositoryInformation", RequestNamespace="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/Admin/03", ResponseNamespace="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/Admin/03", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, Use=System.Web.Services.Description.SoapBindingUse.Literal)]
31 public AdminRepositoryInfo QueryRepositoryInformation()
33 object[] results = this.Invoke("QueryRepositoryInformation", new object[0]);
34 return ((AdminRepositoryInfo)(results[0]));
38 [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/Admin/03")]
39 public class AdminRepositoryInfo {
41 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
42 public int UserCount;
44 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
45 public int GroupCount;
47 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
48 public int WorkspaceCount;
50 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
51 public int ShelvesetCount;
53 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
54 public int FileCount;
56 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
57 public int FolderCount;
59 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
60 public int MaxChangesetID;
62 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
63 public int PendingChangeCount;
65 [System.Xml.Serialization.XmlAttributeAttribute(Namespace="")]
66 public int ShelvesetDeletedCount;
69 partial class NotifierDaemon
71 void OnStatsCommand(IrcEventArgs e)
73 NetworkCredential creds = new NetworkCredential(AppSettings.Username, AppSettings.Password, AppSettings.Domain);
74 AdminStats stats = new AdminStats(AppSettings.TfsUrl, creds);
75 AdminRepositoryInfo info = stats.QueryRepositoryInformation();
77 CommandMessage("Files: " + info.FileCount);
78 CommandMessage("Folders: " + info.FolderCount);
79 CommandMessage("Groups: " + info.GroupCount);
80 CommandMessage("Pending Changes: " + info.PendingChangeCount);
81 CommandMessage("Shelvesets: " + info.ShelvesetCount);
82 CommandMessage("Users: " + info.UserCount);
83 CommandMessage("Workspaces: " + info.WorkspaceCount);