private string GetExecutionResultLinkId(CodeExecutionRequest codeExecutionRequest,
                                                CodeExecutionRequestData requestData)
        {
            using (var client = new CookieAwareWebClient())
            {
                client.CookieContainer.Add(requestData.CookieCollection);

                client.UploadValues(IdeOneBaseUrl + IdeOneSubmissionPostfix,
                                    GetCodeSubmissionRequestParameters(codeExecutionRequest, requestData));

                return(client.ResponseUri.AbsolutePath.Replace("/", ""));
            }
        }
        private CodeExecutionRequestData ComposeExecutionRequestData()
        {
            var requestData = new CodeExecutionRequestData();

            string httpResponse;

            using (var client = new CookieAwareWebClient())
            {
                httpResponse = client.DownloadString(IdeOneBaseUrl);
                requestData.CookieCollection = client.ResponseCookies;
            }

            requestData.ProtectionFieldValues = GetProtectedFieldValues(httpResponse);

            return(requestData);
        }
        private NameValueCollection GetCodeSubmissionRequestParameters(CodeExecutionRequest codeExecutionRequest,
                                                                       CodeExecutionRequestData requestData)
        {
            var nameValueCollection = new NameValueCollection();

            foreach (var protectionFieldValue in requestData.ProtectionFieldValues)
            {
                nameValueCollection.Add(protectionFieldValue.Key, protectionFieldValue.Value);
            }

            nameValueCollection.Add("file", codeExecutionRequest.SourceCode);
            nameValueCollection.Add("input", PrepareInputParameters(codeExecutionRequest.Input));
            nameValueCollection.Add("timelimit", "0");
            nameValueCollection.Add("_lang", ((int)codeExecutionRequest.CodeLanguage).ToString());
            nameValueCollection.Add("public", "0");
            nameValueCollection.Add("run", "1");

            return(nameValueCollection);
        }