/// <summary>
        /// Получает все задания, запрошенные командой
        /// </summary>
        /// <param name="round">Идентификатор раунда</param>
        /// <param name="taskType">Тип задачи</param>
        /// <param name="taskStatus">Статус задачи</param>
        /// <param name="offset">Сколько задач пропустить</param>
        /// <param name="count">Сколько задач вернуть</param>
        /// <returns>Список заданий</returns>
        public async Task <List <TaskResponse> > GetTasksAsync(string round, string taskType, TaskStatus taskStatus,
                                                               int offset = 0, int count = 50)
        {
            var query = HttpUtility.ParseQueryString(string.Empty);

            query.Add("secret", teamSecret);
            query.Add("round", round);
            query.Add("type", taskType);
            query.Add("status", ((int)taskStatus).ToString());
            query.Add("offset", offset.ToString());
            query.Add("count", count.ToString());

            var url = new UriBuilder(baseUrl);

            url.Path  = $"/api/tasks";
            url.Query = query.ToString();

            var response = await httpClient.GetAsync(url.ToString());

            if (response.IsSuccessStatusCode)
            {
                return(await response.Content.ReadAsAsync <List <TaskResponse> >());
            }
            throw ErrorResponseException.ExtractFrom(response);
        }
Exemple #2
0
        /// <summary>
        /// Получает информацию о челлендже, доступную команде
        /// </summary>
        /// <param name="challengeId">Идентификатор челленджа</param>
        /// <returns>Информация о челлендже</returns>
        public async Task <ChallengeResponse> GetChallengeAsync(string challengeId)
        {
            var query = HttpUtility.ParseQueryString(string.Empty);

            query.Add("secret", teamSecret);

            var url = new UriBuilder(baseUrl);

            url.Path  = $"/api/challenges/{HttpUtility.UrlEncode(challengeId)}";
            url.Query = query.ToString();

            var response = await httpClient.GetAsync(url.ToString());

            if (response.IsSuccessStatusCode)
            {
                return(await response.Content.ReadAsAsync <ChallengeResponse>());
            }
            throw ErrorResponseException.ExtractFrom(response);
        }
Exemple #3
0
        /// <summary>
        /// Получает все задания, запрошенные командой
        /// </summary>
        /// <returns>Список заданий</returns>
        public async Task <List <TaskResponse> > GetAllTasksAsync()
        {
            var query = HttpUtility.ParseQueryString(string.Empty);

            query.Add("secret", teamSecret);

            var url = new UriBuilder(baseUrl);

            url.Path  = $"/api/tasks";
            url.Query = query.ToString();

            var response = await httpClient.GetAsync(url.ToString());

            if (response.IsSuccessStatusCode)
            {
                return(await response.Content.ReadAsAsync <List <TaskResponse> >());
            }
            throw ErrorResponseException.ExtractFrom(response);
        }
Exemple #4
0
        /// <summary>
        /// Отправляет ответ на задание
        /// </summary>
        /// <param name="taskId">Идентификатор задания</param>
        /// <returns>Новое состояние задания, на которое давался ответ</returns>
        public async Task <TaskResponse> CheckTaskAnswerAsync(string taskId, string answer)
        {
            var query = HttpUtility.ParseQueryString(string.Empty);

            query.Add("secret", teamSecret);

            var url = new UriBuilder(baseUrl);

            url.Path  = $"/api/tasks/{HttpUtility.UrlEncode(taskId)}";
            url.Query = query.ToString();

            var content = new AnswerRequest {
                Answer = answer
            }.SerializeToJsonContent();
            var response = await httpClient.PostAsync(url.ToString(), content);

            if (response.IsSuccessStatusCode)
            {
                return(await response.Content.ReadAsAsync <TaskResponse>());
            }
            throw ErrorResponseException.ExtractFrom(response);
        }
Exemple #5
0
        /// <summary>
        /// Запрашивает новое задание некоторого типа в некотором раунде для команды
        /// </summary>
        /// <param name="round">Идентификатор раунда</param>
        /// <param name="type">Тип задачи. Если не передать, будет выбрана задача случайного типа</param>
        /// <returns>Полученное задание</returns>
        public async Task <TaskResponse> AskNewTaskAsync(string round, string type = null)
        {
            var query = HttpUtility.ParseQueryString(string.Empty);

            query.Add("secret", teamSecret);
            query.Add("round", round);
            if (type != null)
            {
                query.Add("type", type);
            }

            var url = new UriBuilder(baseUrl);

            url.Path  = $"/api/tasks";
            url.Query = query.ToString();

            var response = await httpClient.PostAsync(url.ToString(), null);

            if (response.IsSuccessStatusCode)
            {
                return(await response.Content.ReadAsAsync <TaskResponse>());
            }
            throw ErrorResponseException.ExtractFrom(response);
        }