Exemple #1
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            CreateTaskResponse response = new CreateTaskResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("taskArn", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.TaskArn = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("taskId", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.TaskId = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
        private static async Task <GetTaskResponse> GetCaptchaTask(AntiCaptchaKey antiCaptchaKey,
                                                                   CreateTaskResponse task)
        {
            try
            {
                GetTaskRequest request     = new GetTaskRequest(antiCaptchaKey.ClientKey, task.TaskId);
                string         requestJson = JsonConvert.SerializeObject(request);

                using (HttpRequestMessage httpRequest =
                           new HttpRequestMessage(HttpMethod.Post, AntiCaptchaEndpoints.GetTaskUrl))
                {
                    httpRequest.Content = new StringContent(requestJson, Encoding.UTF8, "application/json");

                    using (HttpResponseMessage httpResponse = await AntiCaptchaGlobals.HttpClient.SendAsync(httpRequest)
                           )
                    {
                        httpResponse.EnsureSuccessStatusCode();
                        string value = await httpResponse.Content.ReadAsStringAsync();

                        GetTaskResponse ret = JsonConvert.DeserializeObject <GetTaskResponse>(value);
                        return(ret);
                    }
                }
            }
            catch
            {
                return(null);
            }
        }
Exemple #3
0
        public void CreateTask()
        {
            var taskJson     = GetPostData();
            var jsonPostData = new JObject();

            jsonPostData["clientKey"] = ClientKey;
            jsonPostData["task"]      = taskJson ?? throw new Exception("A task preparing error.");

            dynamic postResult = JsonPostRequest(ApiMethods.CreateTask, jsonPostData);

            if (postResult == null || postResult.Equals(false))
            {
                throw new Exception("API error");
            }

            var response = new CreateTaskResponse(postResult);

            if (!response.ErrorId.Equals(0))
            {
                throw new Exception(response.ErrorDescription);
            }

            if (response.TaskId == null)
            {
                throw new Exception("Failed to parse taskId");
            }

            TaskId = (int)response.TaskId;
        }
Exemple #4
0
        public CreateTaskResponse CreateTask(CreateTaskRequest task, UnitOfWork context)
        {
            var response = new CreateTaskResponse
            {
                Id = context.Tasks.AddItem(_mapper.Map <Task>(task))
            };

            return(response);
        }
        public static CreateTaskResponse Unmarshall(UnmarshallerContext context)
        {
            CreateTaskResponse createTaskResponse = new CreateTaskResponse();

            createTaskResponse.HttpResponse = context.HttpResponse;
            createTaskResponse.Code         = context.StringValue("CreateTask.Code");
            createTaskResponse.Message      = context.StringValue("CreateTask.Message");
            createTaskResponse.Success      = context.StringValue("CreateTask.Success");
            createTaskResponse.RequestId    = context.StringValue("CreateTask.RequestId");

            return(createTaskResponse);
        }
Exemple #6
0
        public bool CreateTask()
        {
            var taskJson = GetPostData();

            if (taskJson == null)
            {
                DebugHelper.Out(DebugHelper.Severity.Error, "A task preparing error.");

                return(false);
            }

            var jsonPostData = new JObject
            {
                ["clientKey"] = ClientKey,
                ["task"]      = taskJson
            };

            DebugHelper.Out(DebugHelper.Severity.Info, "Connecting to " + _host);
            dynamic postResult = JsonPostRequest(ApiMethod.CreateTask, jsonPostData);

            if (postResult?.Equals(false) != false)
            {
                DebugHelper.Out(DebugHelper.Severity.Error, "API error");

                return(false);
            }

            var response = new CreateTaskResponse(postResult);

            if (!response.ErrorId.Equals(0))
            {
                ErrorMessage = response.ErrorDescription;

                DebugHelper.Out(
                    DebugHelper.Severity.Error
                    ,
                    "API error " + response.ErrorId + ": " + response.ErrorDescription);

                return(false);
            }

            if (response.TaskId == null)
            {
                DebugHelper.JsonFieldParseError("taskId", postResult);

                return(false);
            }

            TaskId = (int)response.TaskId;
            DebugHelper.Out(DebugHelper.Severity.Success, "Task ID: " + TaskId);

            return(true);
        }
Exemple #7
0
        public bool CreateTask()
        {
            var taskJson = GetPostData();

            if (taskJson == null)
            {
                DebugHelper.Out("A task preparing error.", DebugHelper.Type.Error);

                return(false);
            }

            var jsonPostData = new JObject();

            jsonPostData["clientKey"] = ClientKey;
            jsonPostData["task"]      = taskJson;

            DebugHelper.Out("Connecting to " + Host, DebugHelper.Type.Info);
            dynamic postResult = JsonPostRequest(ApiMethod.CreateTask, jsonPostData);

            if (postResult == null || postResult.Equals(false))
            {
                DebugHelper.Out("API error", DebugHelper.Type.Error);

                return(false);
            }

            var response = new CreateTaskResponse(postResult);

            if (!response.ErrorId.Equals(0))
            {
                ErrorMessage = response.ErrorDescription;

                DebugHelper.Out(
                    "API error" + response.ErrorId + ": " + response.ErrorDescription,
                    DebugHelper.Type.Error
                    );

                return(false);
            }

            if (response.TaskId == null)
            {
                DebugHelper.JsonFieldParseError("taskId", postResult);

                return(false);
            }

            TaskId = (int)response.TaskId;
            DebugHelper.Out("Task ID: " + TaskId, DebugHelper.Type.Success);

            return(true);
        }
Exemple #8
0
        /// <inheritdoc />
        public override string SolveRecaptcha(string siteKey, string siteUrl)
        {
            // Create task
            HttpRequest request = new HttpRequest();

            request.AddHeader(HttpHeader.Accept, "application/json");
            var content = new Extreme.Net.MultipartContent(BlockRequest.GenerateMultipartBoundary());

            content.Add(new Extreme.Net.StringContent(User), "username");
            content.Add(new Extreme.Net.StringContent(Pass), "password");
            content.Add(new Extreme.Net.StringContent("4"), "type");
            content.Add(new Extreme.Net.StringContent(JsonConvert.SerializeObject(new CreateRecaptchaTaskRequest(siteUrl, siteKey))), "token_params");
            var response = request.Post("http://api.dbcapi.me/api/captcha", content).ToString();
            var split    = response.Split('&');
            var status   = int.Parse(split[0].Split('=')[1]);
            var id       = split[1].Split('=')[1];

            if (status == 255)
            {
                throw new Exception(response);
            }
            TaskId = id;
            Status = CaptchaStatus.Processing;

            // Check if task has been completed
            DateTime start = DateTime.Now;

            while (Status == CaptchaStatus.Processing && (DateTime.Now - start).TotalSeconds < Timeout)
            {
                Thread.Sleep(5000);
                HttpRequest gRequest = new HttpRequest();
                gRequest.AddHeader(HttpHeader.Accept, "application/json");
                HttpResponse       gResponse = gRequest.Get($"http://api.dbcapi.me/api/captcha/{TaskId}");
                var                resp      = gResponse.ToString();
                CreateTaskResponse gtrr      = JsonConvert.DeserializeObject <CreateTaskResponse>(resp);
                if (gtrr == null)
                {
                    continue;
                }
                if (!gtrr.is_correct)
                {
                    throw new Exception("No answer could be found");
                }
                if (gtrr.text != "")
                {
                    Status = CaptchaStatus.Completed;
                    return(gtrr.text);
                }
            }
            throw new TimeoutException();
        }
Exemple #9
0
        public HttpResponseMessage CreateTask(CreateTaskRequest request, int todolistid)
        {
            var response = new CreateTaskResponse();

            if (_sessionManager.IsActive(request.SessionId))
            {
                _taskManager.AddTaskToDatabase(request.Task);
                return(Request.CreateResponse(HttpStatusCode.OK, response));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict, response));
            }
        }
Exemple #10
0
        public CreateTaskResponse Add(CreateTaskRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException();
            }

            TaskItem record = new TaskItem();

            record.Name       = request.Name;
            record.IsComplete = request.IsComplete;

            _taskItemRepository.Add(record);

            CreateTaskResponse response = new CreateTaskResponse();

            response.Id = record.Id;
            return(response);
        }
        /// <inheritdoc />
        public override string SolveCaptcha(Bitmap bitmap)
        {
            // Create task
            using (CWebClient client = new CWebClient())
            {
                if (Timeout > 0)
                {
                    client.Timeout = Timeout;
                }
                client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
                var response = client.UploadString("https://api.anti-captcha.com/createTask",
                                                   JsonConvert.SerializeObject(new CreateCaptchaTaskRequest(ApiKey, GetBase64(bitmap, ImageFormat.Png))));
                CreateTaskResponse ctr = JsonConvert.DeserializeObject <CreateTaskResponse>(response);
                if (ctr.errorId > 0)
                {
                    throw new Exception(ctr.errorCode);
                }
                TaskId = ctr.taskId;
                Status = CaptchaStatus.Processing;

                // Check if task has been completed
                DateTime start = DateTime.Now;
                while (Status == CaptchaStatus.Processing && (DateTime.Now - start).TotalSeconds < Timeout)
                {
                    Thread.Sleep(5000);
                    client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
                    response = client.UploadString("https://api.anti-captcha.com/getTaskResult",
                                                   JsonConvert.SerializeObject(new GetTaskResultRequest(ApiKey, TaskId)));
                    GetTaskResultCaptchaResponse gtrr = JsonConvert.DeserializeObject <GetTaskResultCaptchaResponse>(response);
                    if (gtrr.errorId > 0)
                    {
                        throw new Exception(gtrr.errorCode);
                    }
                    if (gtrr.status == "ready")
                    {
                        Status = CaptchaStatus.Completed;
                        return(gtrr.solution.text);
                    }
                }
                throw new TimeoutException();
            }
        }
        public async Task <GetTaskResponse> GetSolvedCaptcha(ICreateTask createTask)
        {
            AntiCaptchaQueueStats.DecrementWaiting();

            CreateTaskResponse createTaskResponse = await CreateCaptchaTask(this, createTask);

            lock (_taskLockObject)
            {
                _tasks.Add(createTaskResponse);
            }


            if (createTaskResponse.ErrorId > 0)
            {
                throw new AntiCaptchaException($"{createTaskResponse.ErrorCode}:{createTaskResponse.ErrorDescription}");
            }


            while (createTaskResponse.TaskResponse == null ||
                   createTaskResponse.TaskResponse.Status.Equals("processing"))
            {
                await Task.Delay(10000);

                createTaskResponse.TaskResponse = await GetCaptchaTask(this, createTaskResponse);

                if (createTaskResponse.TaskResponse == null || createTaskResponse.TaskResponse.ErrorId <= 0)
                {
                    continue;
                }

                createTaskResponse.TaskResponse.Status = "error";

                throw new AntiCaptchaException(
                          $"{createTaskResponse.TaskResponse.ErrorCode}:{createTaskResponse.TaskResponse.ErrorDescription}");
            }

            return(createTaskResponse.TaskResponse);
        }
Exemple #13
0
        /// <inheritdoc />
        public override string SolveCaptcha(Bitmap bitmap)
        {
            // Create task
            HttpRequest request = new HttpRequest();

            request.AddHeader(HttpHeader.Accept, "application/json");
            Extreme.Net.MultipartContent content = new Extreme.Net.MultipartContent(Request.GenerateMultipartBoundary());
            content.Add(new Extreme.Net.StringContent(User), "username");
            content.Add(new Extreme.Net.StringContent(Pass), "password");
            content.Add(new Extreme.Net.StringContent($"base64:{GetBase64(bitmap, ImageFormat.Jpeg)}"), "captchafile");
            var response = request.Post("http://api.dbcapi.me/api/captcha", content).ToString();

            // Sometimes the DBC API replies without JSON even when the Accept header is set correctly, so we must perform a check
            if (response.Trim().StartsWith("{"))
            {
                var taskResponse = JsonConvert.DeserializeObject <CreateTaskResponse>(response);
                if (taskResponse.status == 255)
                {
                    throw new Exception(taskResponse.error);
                }
                TaskId = taskResponse.captcha;
            }
            else // Not JSON
            {
                var split  = response.Split('&');
                var status = int.Parse(split[0].Split('=')[1]);
                var id     = split[1].Split('=')[1];
                if (status == 255)
                {
                    throw new Exception(response);
                }
                TaskId = id;
            }
            Status = CaptchaStatus.Processing;

            // Check if task has been completed
            DateTime start = DateTime.Now;

            while (Status == CaptchaStatus.Processing && (DateTime.Now - start).TotalSeconds < Timeout)
            {
                Thread.Sleep(5000);
                HttpRequest gRequest = new HttpRequest();
                gRequest.AddHeader(HttpHeader.Accept, "application/json");
                HttpResponse       gResponse = gRequest.Get($"http://api.dbcapi.me/api/captcha/{TaskId}");
                var                resp      = gResponse.ToString();
                CreateTaskResponse gtrr      = JsonConvert.DeserializeObject <CreateTaskResponse>(resp);
                if (gtrr == null)
                {
                    continue;
                }
                if (!gtrr.is_correct)
                {
                    throw new Exception("No answer could be found");
                }
                if (gtrr.text != string.Empty)
                {
                    Status = CaptchaStatus.Completed;
                    return(gtrr.text);
                }
            }
            throw new TimeoutException();
        }