jellyfin/MediaBrowser.ApiInteraction.Portable/ApiClient.cs
LukePulverenti Luke Pulverenti luke pulverenti 3e0c2165b6 Added the first method to portable ApiClient
2012-09-06 21:45:24 -04:00

61 lines
1.7 KiB
C#

using MediaBrowser.Model.DTO;
using System;
using System.IO;
using System.Net;
namespace MediaBrowser.ApiInteraction.Portable
{
public class ApiClient : BaseApiClient
{
private HttpWebRequest GetNewRequest(string url)
{
return HttpWebRequest.CreateHttp(url);
}
/// <summary>
/// Gets all users
/// </summary>
public void GetAllUsersAsync(Action<DTOUser[]> callback)
{
string url = ApiUrl + "/users";
GetDataAsync<DTOUser[]>(url, callback);
}
private void GetDataAsync<T>(string url, Action<T> callback)
{
GetDataAsync<T>(url, callback, SerializationFormat);
}
private void GetDataAsync<T>(string url, Action<T> callback, SerializationFormats serializationFormat)
{
if (url.IndexOf('?') == -1)
{
url += "?dataformat=" + serializationFormat.ToString();
}
else
{
url += "&dataformat=" + serializationFormat.ToString();
}
HttpWebRequest request = GetNewRequest(url);
request.BeginGetResponse(new AsyncCallback(result =>
{
T value;
using (WebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result))
{
using (Stream stream = response.GetResponseStream())
{
value = DeserializeFromStream<T>(stream);
}
}
callback(value);
}), request);
}
}
}