using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; using Ombi.Api.Emby.Models; using Ombi.Helpers; namespace Ombi.Api.Emby { public class EmbyApi : IEmbyApi { public EmbyApi(IApi api) { Api = api; } private IApi Api { get; } /// /// Returns all users from the Emby Instance /// /// /// public async Task> GetUsers(string baseUri, string apiKey) { var request = new Request("emby/users", baseUri, HttpMethod.Get); AddHeaders(request, apiKey); var obj = await Api.Request>(request); return obj; } public async Task GetSystemInformation(string apiKey, string baseUrl) { var request = new Request("emby/System/Info", baseUrl, HttpMethod.Get); AddHeaders(request, apiKey); var obj = await Api.Request(request); return obj; } public async Task LogIn(string username, string password, string apiKey, string baseUri) { var request = new Request("emby/users/authenticatebyname", baseUri, HttpMethod.Post); var body = new { username, password = password.GetSha1Hash().ToLower(), passwordMd5 = password.CalcuateMd5Hash() }; request.AddJsonBody(body); request.AddHeader("X-Emby-Authorization", $"MediaBrowser Client=\"Ombi\", Device=\"Ombi\", DeviceId=\"v3\", Version=\"v3\""); AddHeaders(request, apiKey); var obj = await Api.Request(request); return obj; } private static void AddHeaders(Request req, string apiKey) { if (!string.IsNullOrEmpty(apiKey)) { req.AddHeader("X-MediaBrowser-Token", apiKey); } req.AddHeader("Accept", "application/json"); req.AddContentHeader("Content-Type", "application/json"); req.AddHeader("Device", "Ombi"); } } }