Beispiel #1
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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;
        }
Beispiel #5
0
 /// <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);
Beispiel #6
0
 /// <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);