/// <summary> /// Fetch all Beatmaps uploaded by this user /// </summary> /// <param name="page">Page index</param> /// <param name="token">Cancellation token</param> /// <param name="progress">Optional progress reporter</param> /// <returns></returns> public async Task <Page> Beatmaps(string userAgent, uint page, CancellationToken token, IProgress <double> progress = null) { string pageURI = $"maps/{PageType.Uploader}/{ID}"; string url = $"{pageURI}/{page}"; Page p = await BeatSaver.FetchPaged(url, userAgent, token, progress); p.PageURI = pageURI; return(p); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Make usage of beat saber plus custom maps server /// </summary> /// <param name="p_Instance"></param> /// <param name="p_Enabled"></param> /// <returns></returns> public static bool UseAlternativeServer(BeatSaverSharp.BeatSaver p_Instance, Server p_Server, string p_CustomURL = "") { if (p_Instance == null) { return(false); } try { if (m_BeatSaver_HttpInstance == null) { m_BeatSaver_HttpInstance = typeof(BeatSaverSharp.BeatSaver).GetProperty("HttpInstance", BindingFlags.Instance | BindingFlags.NonPublic); } var l_BSSHttp = m_BeatSaver_HttpInstance.GetValue(p_Instance); if (l_BSSHttp != null) { if (m_Http_Client == null) { m_Http_Client = l_BSSHttp.GetType().GetProperty("Client", BindingFlags.Instance | BindingFlags.NonPublic); } var l_HTTPClient = m_Http_Client.GetValue(l_BSSHttp) as HttpClient; if (l_HTTPClient != null) { var l_NewServer = $"{BeatSaverSharp.BeatSaver.BaseURL}/api/"; if (p_Server == Server.BeatSaberPlus) { l_NewServer = s_BeatSaberPlusServer; } else if (p_Server == Server.Custom) { l_NewServer = p_CustomURL; } l_HTTPClient.BaseAddress = new Uri(l_NewServer); Logger.Instance?.Info("[SDK.Game][BeatSaver.UseAlternativeServer] Switching a BeatSaver instance to server " + p_Server.ToString() + (p_Server == Server.Custom ? " " + p_CustomURL : "")); return(true); } } } catch (Exception p_Exception) { Logger.Instance?.Error("[SDK.Game][BeatSaver.UseAlternativeServer] Switching a BeatSaver instance to server " + p_Server.ToString() + (p_Server == Server.Custom ? " " + p_CustomURL : "") + " failed"); Logger.Instance?.Error(p_Exception); } return(false); }
/// <summary> /// Fetch the previous page in this sequence /// </summary> /// <param name="token">Cancellation token</param> /// <param name="progress">Optional progress reporter</param> /// <returns></returns> public async Task <Page> FetchPreviousPage(string userAgent, CancellationToken token, IProgress <double> progress = null) { if (PreviousPage == null) { return(null); } string url = $"{PageURI}/{PreviousPage}"; if (Query != null) { url += $"?q={HttpUtility.UrlEncode(Query)}"; } Page p = await BeatSaver.FetchPaged(url, userAgent, token, progress); p.PageURI = PageURI; p.Query = Query; return(p); }
/// <summary> /// Instantiate a partial Beatmap /// </summary> /// <param name="client">BeatSaver Client</param> /// <param name="key">Hex Key</param> /// <param name="hash">SHA1 Hash</param> /// <param name="name">Beatmap Name</param> public Beatmap(BeatSaver client = null, string key = null, string hash = null, string name = null) { if (key == null && hash == null) { throw new ArgumentException("Key and Hash cannot both be null"); } Client = client ?? BeatSaver.Client; if (key != null) { Key = key; } if (hash != null) { Hash = hash; } if (name != null) { Name = name; } Partial = true; }
/// <summary> /// Fetch a Beatmap by Hash /// </summary> /// <param name="hash">SHA1 Hash</param> /// <param name="token">Cancellation token</param> /// <param name="progress">Optional progress reporter</param> /// <returns></returns> public static async Task <Beatmap> FromHash(string hash, string userAgent, CancellationToken token, IProgress <double> progress = null) => await BeatSaver.Hash(hash, userAgent, token, progress);
/// <summary> /// Fetch a Beatmap by Key /// </summary> /// <param name="key">Hex Key</param> /// <param name="token">Cancellation token</param> /// <param name="progress">Optional progress reporter</param> /// <returns></returns> public static async Task <Beatmap> FromKey(string key, string userAgent, CancellationToken token, IProgress <double> progress = null) => await BeatSaver.Key(key, userAgent, token, progress);