mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
124 lines
4.7 KiB
C#
124 lines
4.7 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneXml.WMISServiceDataProviderQuery
|
|
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
|
|
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
|
|
|
|
using Microsoft.Iris;
|
|
using Microsoft.Zune.Configuration;
|
|
using Microsoft.Zune.Service;
|
|
using Microsoft.Zune.Shell;
|
|
using System;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using ZuneUI;
|
|
|
|
namespace ZuneXml
|
|
{
|
|
internal class WMISServiceDataProviderQuery : XmlDataProviderQuery
|
|
{
|
|
private string m_strPostBody;
|
|
private bool _endpointsInitialized;
|
|
|
|
internal static DataProviderQuery ConstructWmisQuery(object queryTypeCookie) => new WMISServiceDataProviderQuery(queryTypeCookie);
|
|
|
|
public WMISServiceDataProviderQuery(object queryTypeCookie)
|
|
: base(queryTypeCookie)
|
|
=> this._keepAlive = false;
|
|
|
|
protected override void BeginExecute()
|
|
{
|
|
if (this._endpointsInitialized)
|
|
base.BeginExecute();
|
|
else
|
|
ThreadPool.QueueUserWorkItem(new WaitCallback(this.BackgroundInitializeWMISEndpointCollection));
|
|
}
|
|
|
|
private void BackgroundInitializeWMISEndpointCollection(object unused)
|
|
{
|
|
HRESULT hresult = ZuneApplication.Service2.InitializeWMISEndpointCollection();
|
|
if (hresult.IsSuccess)
|
|
{
|
|
this._endpointsInitialized = true;
|
|
Application.DeferredInvoke(new DeferredInvokeHandler(this.DeferredInvokeBeginExecute), null);
|
|
}
|
|
else
|
|
{
|
|
++this._requestGeneration;
|
|
this.SetWorkerStatus(this._requestGeneration, DataProviderQueryStatus.RequestingData);
|
|
this.SetWorkerStatus(this._requestGeneration, DataProviderQueryStatus.Error, hresult);
|
|
}
|
|
}
|
|
|
|
private void DeferredInvokeBeginExecute(object unused) => base.BeginExecute();
|
|
|
|
protected override string GetResourceUri() => this.BuildServiceUri(0, 0);
|
|
|
|
protected override string GetPostBody() => this.m_strPostBody;
|
|
|
|
private string BuildServiceUri(int chunkStart, int chunkSize)
|
|
{
|
|
this.m_strPostBody = null;
|
|
string property1 = (string)this.GetProperty("SearchString");
|
|
string property2 = (string)this.GetProperty("artistId");
|
|
string property3 = (string)this.GetProperty("albumId");
|
|
string strEndPointName;
|
|
string paramName;
|
|
string paramValue1;
|
|
if (!string.IsNullOrEmpty(property1))
|
|
{
|
|
strEndPointName = WMISEndpointIds.WMISEID_Search;
|
|
paramName = "SearchString";
|
|
paramValue1 = property1;
|
|
}
|
|
else if (!string.IsNullOrEmpty(property2))
|
|
{
|
|
strEndPointName = WMISEndpointIds.WMISEID_GetResultsForArtist;
|
|
paramName = "artistId";
|
|
paramValue1 = property2;
|
|
}
|
|
else
|
|
{
|
|
if (string.IsNullOrEmpty(property3))
|
|
return null;
|
|
strEndPointName = WMISEndpointIds.WMISEID_GetAlbumDetailsByAlbumId;
|
|
paramName = "albumId";
|
|
paramValue1 = property3;
|
|
Guid.NewGuid();
|
|
this.m_strPostBody = string.Empty;
|
|
}
|
|
string wmisEndPointUri = ZuneApplication.Service2.GetWMISEndPointUri(strEndPointName);
|
|
if (string.IsNullOrEmpty(wmisEndPointUri))
|
|
return null;
|
|
UriBuilder uriBuilder = new UriBuilder(wmisEndPointUri);
|
|
StringBuilder args = new StringBuilder();
|
|
UrlHelper.AppendParam(true, args, paramName, paramValue1);
|
|
string wmisPartner = ClientConfiguration.Service.WMISPartner;
|
|
if (!string.IsNullOrEmpty(wmisPartner))
|
|
UrlHelper.AppendParam(false, args, "Partner", wmisPartner);
|
|
string[] strArray = new string[5]
|
|
{
|
|
"locale",
|
|
"maxNumberOfResults",
|
|
"resultTypeString",
|
|
"countOnly",
|
|
"volume"
|
|
};
|
|
foreach (string str in strArray)
|
|
{
|
|
string paramValue2 = null;
|
|
object property4 = this.GetProperty(str);
|
|
if (property4 != null)
|
|
paramValue2 = property4.ToString();
|
|
if (!string.IsNullOrEmpty(paramValue2))
|
|
UrlHelper.AppendParam(false, args, str, paramValue2);
|
|
}
|
|
string str1 = args.ToString();
|
|
if (str1.Length > 0 && str1[0] == '?')
|
|
str1 = str1.Remove(0, 1);
|
|
uriBuilder.Query = str1;
|
|
return uriBuilder.Uri.AbsoluteUri;
|
|
}
|
|
}
|
|
}
|