示例#1
0
        /// <summary>
        /// Parses rate-limiting information from the specified <paramref name="response"/>.
        /// </summary>
        /// <param name="response">The response that holds the rate-limiting information.</param>
        /// <returns>An instance of <see cref="VimeoRateLimiting"/>.</returns>
        public static VimeoRateLimiting GetFromResponse(IHttpResponse response)
        {
            if (int.TryParse(response.Headers["X-Ratelimit-Limit"] ?? "", out int limit) == false)
            {
                limit = -1;
            }

            if (int.TryParse(response.Headers["X-Ratelimit-Remaining"] ?? "", out int remaining) == false)
            {
                remaining = -1;
            }

            EssentialsTime reset = EssentialsTime.Parse(response.Headers["X-RateLimit-Reset"]);

            return(new VimeoRateLimiting(limit, remaining, reset));
        }
        public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            switch (reader.TokenType)
            {
            case JsonTokenType.Null:
                return(null);

            case JsonTokenType.Number:
                return(EssentialsTime.FromUnixTimeSeconds(reader.GetInt32()));

            case JsonTokenType.String:
                return(EssentialsTime.Parse(reader.GetString()));

            default:
                throw new Exception($"Unsupported token type: {reader.TokenType}");
            }
        }