summaryrefslogtreecommitdiffstats
path: root/tools/Sandcastle/Source/BuildAssembler/BuildComponents/MsdnResolver.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-10-31 16:27:49 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2009-10-31 16:27:49 -0700
commit55d6e4be43225184f9a656e6d9cc8fc1e8e7387b (patch)
treec382ef957455af8a39f80789dff9b112e97c2fe6 /tools/Sandcastle/Source/BuildAssembler/BuildComponents/MsdnResolver.cs
parent07a8ecbc4fc50d11179f7e0b3fadb9f2be430ae5 (diff)
parentebf5efb48cddbfaf08aec24117b7c5f9626f1c02 (diff)
downloadDotNetOpenAuth-55d6e4be43225184f9a656e6d9cc8fc1e8e7387b.zip
DotNetOpenAuth-55d6e4be43225184f9a656e6d9cc8fc1e8e7387b.tar.gz
DotNetOpenAuth-55d6e4be43225184f9a656e6d9cc8fc1e8e7387b.tar.bz2
Merge branch 'contracts'
Diffstat (limited to 'tools/Sandcastle/Source/BuildAssembler/BuildComponents/MsdnResolver.cs')
-rw-r--r--tools/Sandcastle/Source/BuildAssembler/BuildComponents/MsdnResolver.cs76
1 files changed, 76 insertions, 0 deletions
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildComponents/MsdnResolver.cs b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/MsdnResolver.cs
new file mode 100644
index 0000000..84a43f1
--- /dev/null
+++ b/tools/Sandcastle/Source/BuildAssembler/BuildComponents/MsdnResolver.cs
@@ -0,0 +1,76 @@
+// Copyright © Microsoft Corporation.
+// This source file is subject to the Microsoft Permissive License.
+// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
+// All other rights reserved.
+
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Web.Services.Protocols;
+
+namespace Microsoft.Ddue.Tools {
+
+ public class MsdnResolver {
+
+ public MsdnResolver () {
+ msdnService = new ContentService();
+ msdnService.appIdValue = new appId();
+ msdnService.appIdValue.value = "Sandcastle";
+ msdnService.SoapVersion = SoapProtocolVersion.Soap11;
+ }
+
+ public bool IsDisabled {
+ get {
+ return ((msdnService == null));
+ }
+ }
+
+ public string Locale {
+ get {
+ return (locale);
+ }
+ set {
+ locale = value;
+ }
+ }
+
+ public string GetMsdnUrl (string id) {
+
+ if (cachedMsdnUrls.ContainsKey(id)) return (String.Format(urlFormat, locale, cachedMsdnUrls[id]));
+
+ if (msdnService == null) return(null);
+
+ getContentRequest msdnRequest = new getContentRequest();
+ msdnRequest.contentIdentifier = "AssetId:" + id;
+ msdnRequest.locale = locale;
+
+ string endpoint = null;
+ try {
+ getContentResponse msdnResponse = msdnService.GetContent(msdnRequest);
+ endpoint = msdnResponse.contentId;
+ } catch (WebException) {
+ msdnService = null;
+ } catch (SoapException) {
+ // lookup failed
+ }
+
+ cachedMsdnUrls[id] = endpoint;
+
+ if (String.IsNullOrEmpty(endpoint)) {
+ return (null);
+ } else {
+ return (String.Format(urlFormat, locale, endpoint));
+ }
+ }
+
+ private ContentService msdnService;
+
+ private string locale = "en-us";
+
+ private static string urlFormat = "http://msdn2.microsoft.com/{0}/library/{1}";
+
+ private Dictionary<string, string> cachedMsdnUrls = new Dictionary<string, string>();
+
+ }
+
+}