Exemple #1
0
        private static Stream GetRequestBody(IDictionary <string, string> postData)
        {
            var ms = new MemoryStream();

            if (postData != null)
            {
                bool first  = true;
                var  writer = new StreamWriter(ms);
                writer.AutoFlush = true;
                foreach (var item in postData)
                {
                    if (!first)
                    {
                        writer.Write("&");
                    }
                    writer.Write(item.Key);
                    writer.Write("=");
                    writer.Write(UrlEncoder.UrlEncode(item.Value));
                    writer.WriteLine();
                    first = false;
                }

                ms.Seek(0, SeekOrigin.Begin);
            }
            return(ms);
        }
Exemple #2
0
            /// <summary>
            /// Shortens the specified url.
            /// </summary>
            /// <param name="url">URL to shorten.</param>
            /// <returns>Shortened URL or error message.</returns>
            public static string Shorten(string url)
            {
                string         return_text;
                HttpWebRequest request;

                try
                {
                    request        = (HttpWebRequest)HttpWebRequest.Create(ApiUrl + UrlEncoder.UrlEncode(url));
                    request.Method = "GET";

                    using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()))
                    {
                        return_text = reader.ReadToEnd();
                    }

                    return_text = return_text.StartsWith("http://") ? string.Format("<a href=\"{0}\">{0}</a>", return_text) : Catalog.GetString("Error: ") + Catalog.GetString("Unspecified error.");
                }
                catch (System.Threading.ThreadAbortException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    Tools.PrintInfo(ex, typeof(TinyURL));
                    return_text = Catalog.GetString("Error: ") + ex.Message;
                }

                return(return_text);
            }
Exemple #3
0
        public static byte[] ProcessPostData(IDictionary <string, string> postData)
        {
            if (postData == null || postData.Count == 0)
            {
                return(null);
            }

            var sb = new StringBuilder();

            foreach (var pair in postData)
            {
                if (sb.Length > 0)
                {
                    sb.Append("&");
                }

                if (String.IsNullOrEmpty(pair.Value))
                {
                    continue;
                }

                sb.AppendFormat(CultureInfo.InvariantCulture, "{0}={1}", pair.Key, UrlEncoder.UrlEncode(pair.Value));
            }

            return(Encoding.UTF8.GetBytes(sb.ToString()));
        }
        private string ConstructPathQuery(string uriPath, string afObjectPath)
        {
            UrlEncoder urlEncoder          = new UrlEncoder();
            string     afObjectPathEncoded = urlEncoder.UrlEncode(afObjectPath);

            return(string.Format("{0}?path={1}", uriPath, afObjectPathEncoded));
        }
Exemple #5
0
            /// <summary>
            /// Uploads text and returns link.
            /// </summary>
            /// <param name="text">Text to upload.</param>
            /// <param name="name">Uploader name.</param>
            /// <param name="privacy">Privacy level of paste.</param>
            /// <param name="expireDate">Time after which upload is deleted.</param>
            /// <param name="userKey">User authentication key.</param>
            /// <returns>Link on pastebin.</returns>
            public static string Upload(string text, string name, int privacy, string expireDate, string userKey)
            {
                string return_text;

                byte[]         post_content;
                HttpWebRequest request;

                StringBuilder post_builder = new StringBuilder();

                post_builder.Append(Parameters.ParamOption).Append("=").Append("paste");
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamDevKey).Append("=").Append(UrlEncoder.UrlEncode(Key));
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamCode).Append("=").Append(UrlEncoder.UrlEncode(text));
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamName).Append("=").Append(UrlEncoder.UrlEncode(name));
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamPrivate).Append("=").Append(privacy);
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamExpireDate).Append("=").Append(expireDate);

                if (!string.IsNullOrWhiteSpace(userKey))
                {
                    post_builder.Append("&");
                    post_builder.Append(Parameters.ParamUserKey).Append("=").Append(userKey);
                }

                post_content = Encoding.ASCII.GetBytes(post_builder.ToString());

                try
                {
                    request               = (HttpWebRequest)HttpWebRequest.Create(ApiUrl);
                    request.Method        = "POST";
                    request.ContentLength = post_content.Length;
                    request.ContentType   = "application/x-www-form-urlencoded";

                    using (Stream writer = request.GetRequestStream())
                    {
                        writer.Write(post_content, 0, post_content.Length);
                    }

                    using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()))
                    {
                        return_text = reader.ReadToEnd();
                    }

                    return_text = string.Format("<a href=\"{0}\">{0}</a>", return_text);
                }
                catch (System.Threading.ThreadAbortException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    Tools.PrintInfo(ex, typeof(Pastebin));
                    return_text = Catalog.GetString("Error: ") + ex.Message;
                }

                return(return_text);
            }
        /// <summary>
        /// 根据获取到的 token,来得到登录用户的基本信息,并配对。
        /// </summary>
        protected override async Task <AuthenticationTicket> CreateTicketAsync(ClaimsIdentity identity, AuthenticationProperties properties, OAuthTokenResponse tokens)
        {
            var endpoint = Options.UserInformationEndpoint + "?access_token=" + UrlEncoder.UrlEncode(tokens.AccessToken);
            var response = await Backchannel.GetAsync(endpoint, Context.RequestAborted);

            response.EnsureSuccessStatusCode();
            var payload = JObject.Parse(await response.Content.ReadAsStringAsync());

            var context = new OAuthCreatingTicketContext(Context, Options, Backchannel, tokens, payload)
            {
                Properties = properties,
                Principal  = new ClaimsPrincipal(identity)
            };

            var identifier = NetEaseHelper.GetId(payload);

            if (!string.IsNullOrEmpty(identifier))
            {
                identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, identifier, ClaimValueTypes.String, Options.ClaimsIssuer));
                identity.AddClaim(new Claim("urn:netease:id", identifier, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var name = NetEaseHelper.GetName(payload);

            if (!string.IsNullOrEmpty(name))
            {
                identity.AddClaim(new Claim(ClaimTypes.Name, name, ClaimValueTypes.String, Options.ClaimsIssuer));
                identity.AddClaim(new Claim("urn:netease:name", name, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            await Options.Events.CreatingTicket(context);

            return(new AuthenticationTicket(context.Principal, context.Properties, context.Options.AuthenticationScheme));
        }
Exemple #7
0
 private string ComputeSignature(string consumerSecret, string tokenSecret, string signatureData)
 {
     using (var algorithm = new HMACSHA1())
     {
         algorithm.Key = Encoding.ASCII.GetBytes(
             string.Format(CultureInfo.InvariantCulture,
                           "{0}&{1}",
                           UrlEncoder.UrlEncode(consumerSecret),
                           string.IsNullOrEmpty(tokenSecret) ? string.Empty : UrlEncoder.UrlEncode(tokenSecret)));
         var hash = algorithm.ComputeHash(Encoding.ASCII.GetBytes(signatureData));
         return(Convert.ToBase64String(hash));
     }
 }
Exemple #8
0
        /// <summary>
        ///  计算 MAC 模式值
        /// </summary>
        /// <param name="token">访问令牌</param>
        /// <param name="key">加密密钥</param>
        /// <param name="algorithm"></param>
        /// <param name="message"></param>
        /// <exception cref="NullReferenceException">message 为空</exception>
        private string ComputeMAC(string token, string key, HttpRequestMessage message, string algorithm = "HmacSHA1")
        {
            var nonce = ComputeNonce();
            var param = new[] {
                nonce,
                message.Method.Method,
                // 我去,耗了我一上午,我还以为 message.Headers.Host 取得到值呢
                message.RequestUri.Host,
                message.RequestUri.LocalPath,
                message.RequestUri.Query.Substring(1)
            };
            var mac = ComputeSignature(string.Join("\n", param) + "\n", key, algorithm);

            //return $"access_token=\"{token.ToEscapeData()}\", nonce=\"{nonce.ToEscapeData()}\",mac=\"{mac.ToEscapeData()}\"";
            return($"access_token=\"{UrlEncoder.UrlEncode(token)}\", nonce=\"{UrlEncoder.UrlEncode(nonce)}\",mac=\"{UrlEncoder.UrlEncode(mac)}\"");
        }
Exemple #9
0
            /// <summary>
            /// Shortens the specified url.
            /// </summary>
            /// <param name="url">URL to shorten.</param>
            /// <param name="login">Bit.ly login.</param>
            /// <param name="apiKey">Bit.ly API key,</param>
            /// <returns>Shortened URL or error message.</returns>
            public static string Shorten(string url, string login, string apiKey)
            {
                string         return_text;
                HttpWebRequest request;

                StringBuilder get_builder = new StringBuilder(ApiShortenUrl);

                get_builder.Append("?");
                get_builder.Append(Parameters.Format).Append("=").Append(Parameters.FormatXml);
                get_builder.Append("&");
                get_builder.Append(Parameters.Login).Append("=").Append(UrlEncoder.UrlEncode(login));
                get_builder.Append("&");
                get_builder.Append(Parameters.ApiKey).Append("=").Append(UrlEncoder.UrlEncode(apiKey));
                get_builder.Append("&");
                get_builder.Append(Parameters.Url).Append("=").Append(UrlEncoder.UrlEncode(url));

                try
                {
                    request        = (HttpWebRequest)HttpWebRequest.Create(ApiUrl + get_builder.ToString());
                    request.Method = "GET";

                    using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()))
                    {
                        using (XmlTextReader xmlreader = new XmlTextReader(reader))
                        {
                            return_text = ParseResponseXml(xmlreader);
                        }
                    }

                    if (!return_text.StartsWith(Catalog.GetString("Error: ")))
                    {
                        return_text = string.Format("<a href=\"{0}\">{0}</a>", return_text);
                    }
                }
                catch (System.Threading.ThreadAbortException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    Tools.PrintInfo(ex, typeof(BitLy));
                    return_text = Catalog.GetString("Error: ") + ex.Message;
                }

                return(return_text);
            }
Exemple #10
0
            /// <summary>
            /// Gets the user API key.
            /// </summary>
            /// <param name="username">Username.</param>
            /// <param name="password">Password.</param>
            /// <returns>User key or error message.</returns>
            public static string GetUserKey(string username, string password)
            {
                string return_text;

                byte[]         post_content;
                HttpWebRequest request;

                StringBuilder post_builder = new StringBuilder();

                post_builder.Append(Parameters.ParamDevKey).Append("=").Append(UrlEncoder.UrlEncode(Key));
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamUserName).Append("=").Append(UrlEncoder.UrlEncode(username));
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamUserPassword).Append("=").Append(UrlEncoder.UrlEncode(password));
                post_content = Encoding.ASCII.GetBytes(post_builder.ToString());

                try
                {
                    request               = (HttpWebRequest)HttpWebRequest.Create(UserApiUrl);
                    request.Method        = "POST";
                    request.ContentLength = post_content.Length;
                    request.ContentType   = "application/x-www-form-urlencoded";

                    using (Stream writer = request.GetRequestStream())
                    {
                        writer.Write(post_content, 0, post_content.Length);
                    }

                    using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()))
                    {
                        return_text = reader.ReadToEnd();
                    }
                }
                catch (System.Threading.ThreadAbortException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    Tools.PrintInfo(ex, typeof(Pastebin));
                    return_text = Catalog.GetString("Error: ") + ex.Message;
                }

                return(return_text);
            }
        public async Task <SlackResponse> Post(string text)
        {
            var urlEncoder = new UrlEncoder();

            using (var googleSearchClient = new HttpClient(handler))
            {
                var googleRawResponse = await googleSearchClient.GetAsync(
                    $"{googleCustomSearchConfiguration.Value.APIURL}?q={text}&num=4&cx={urlEncoder.UrlEncode(googleCustomSearchConfiguration.Value.SearchEngineID)}&key={urlEncoder.UrlEncode(googleCustomSearchConfiguration.Value.APIKey)}");

                var googleResponse = JsonConvert.DeserializeObject <GoogleCustomSearchResponse>(await googleRawResponse.Content.ReadAsStringAsync());

                if (googleResponse.items != null)
                {
                    List <ulong> questionIDs = new List <ulong>();
                    foreach (var item in googleResponse.items)
                    {
                        var questionID = getQuestionIDFromURL(item.link);
                        if (questionID != null)
                        {
                            questionIDs.Add(questionID.Value);
                        }
                    }


                    using (var stackOverflowClient = new HttpClient(handler))
                    {
                        var stackOverflowRawResponse = await stackOverflowClient.GetAsync($"{stackOverflowConfiguration.Value.APIURL}/questions/{string.Join(";", questionIDs)}?site=stackoverflow");

                        var stackOverflowResponse = JsonConvert.DeserializeObject <StackOverflowResponse>(await stackOverflowRawResponse.Content.ReadAsStringAsync());

                        var slackResponse = new SlackResponse
                        {
                            response_type = "in_channel",
                            text          = $"Thanks for using *Stack Overflow* instead of asking <@U07083MGT> :clap:\nHere are the first *4* results of *{googleResponse.searchInformation.formattedTotalResults}* for: *{text}*",
                            attachments   = googleResponse.items.Select(i =>
                            {
                                var stackQuestion = stackOverflowResponse.items.SingleOrDefault(q => q.question_id == getQuestionIDFromURL(i.link));

                                List <Field> fields = new List <Field>();
                                if (stackQuestion != null)
                                {
                                    fields.Add(new Field
                                    {
                                        title  = "Votes",
                                        value  = stackQuestion.score.ToString(),
                                        _short = true
                                    });
                                    fields.Add(new Field
                                    {
                                        title  = "Answers",
                                        value  = stackQuestion.answer_count.ToString(),
                                        _short = true
                                    });
                                }
                                return(new Attachment()
                                {
                                    //author_name = stackQuestion.owner.display_name,
                                    //author_link = stackQuestion.owner.link,
                                    title = i.title,
                                    text = i.snippet,
                                    title_link = i.link,
                                    color = stackQuestion == null ? "#c2c2c2" : (stackQuestion.is_answered ? "#49a300" : "#a30000"),
                                    fields = fields.ToArray(),
                                    thumb_url = stackQuestion?.owner.profile_image
                                });
                            }).ToList()
                        };

                        slackResponse.attachments.Add(new Attachment()
                        {
                            title      = "See the rest from StackOverflow.com",
                            text       = "Open this link to see the rest of the results for StackOverflow",
                            title_link = $"https://www.google.com/search?q={urlEncoder.UrlEncode("site:stackoverflow.com " + text)}",
                            color      = "#0266C8"
                        });
                        slackResponse.attachments.Add(new Attachment()
                        {
                            title      = "See the rest from all websites",
                            text       = "Open this link to see the rest of the results for all websites",
                            title_link = $"https://www.google.com/search?q={urlEncoder.UrlEncode(text)}",
                            color      = "#0266C8"
                        });
                        return(slackResponse);
                    }
                }
                else
                {
                    return(new SlackResponse
                    {
                        response_type = "in_channel",
                        text = $"No StackOverflow results for: *{text}* :cry:"
                    });
                }
            }
        }
Exemple #12
0
        private async Task <AccessToken> ObtainAccessTokenAsync(string consumerKey, string consumerSecret, RequestToken token, string verifier)
        {
            // https://dev.twitter.com/docs/api/1/post/oauth/access_token

            Logger.LogVerbose("ObtainAccessToken");

            var nonce = Guid.NewGuid().ToString("N");

            var authorizationParts = new SortedDictionary <string, string>
            {
                { "oauth_consumer_key", consumerKey },
                { "oauth_nonce", nonce },
                { "oauth_signature_method", "HMAC-SHA1" },
                { "oauth_token", token.Token },
                { "oauth_timestamp", GenerateTimeStamp() },
                { "oauth_verifier", verifier },
                { "oauth_version", "1.0" },
            };

            var parameterBuilder = new StringBuilder();

            foreach (var authorizationKey in authorizationParts)
            {
                parameterBuilder.AppendFormat("{0}={1}&", UrlEncoder.UrlEncode(authorizationKey.Key), UrlEncoder.UrlEncode(authorizationKey.Value));
            }
            parameterBuilder.Length--;
            var parameterString = parameterBuilder.ToString();

            var canonicalizedRequestBuilder = new StringBuilder();

            canonicalizedRequestBuilder.Append(HttpMethod.Post.Method);
            canonicalizedRequestBuilder.Append("&");
            canonicalizedRequestBuilder.Append(UrlEncoder.UrlEncode(AccessTokenEndpoint));
            canonicalizedRequestBuilder.Append("&");
            canonicalizedRequestBuilder.Append(UrlEncoder.UrlEncode(parameterString));

            var signature = ComputeSignature(consumerSecret, token.TokenSecret, canonicalizedRequestBuilder.ToString());

            authorizationParts.Add("oauth_signature", signature);
            authorizationParts.Remove("oauth_verifier");

            var authorizationHeaderBuilder = new StringBuilder();

            authorizationHeaderBuilder.Append("OAuth ");
            foreach (var authorizationPart in authorizationParts)
            {
                authorizationHeaderBuilder.AppendFormat(
                    "{0}=\"{1}\", ", authorizationPart.Key, UrlEncoder.UrlEncode(authorizationPart.Value));
            }
            authorizationHeaderBuilder.Length = authorizationHeaderBuilder.Length - 2;

            var request = new HttpRequestMessage(HttpMethod.Post, AccessTokenEndpoint);

            request.Headers.Add("Authorization", authorizationHeaderBuilder.ToString());

            var formPairs = new Dictionary <string, string>()
            {
                { "oauth_verifier", verifier },
            };

            request.Content = new FormUrlEncodedContent(formPairs);

            var response = await _httpClient.SendAsync(request, Context.RequestAborted);

            if (!response.IsSuccessStatusCode)
            {
                Logger.LogError("AccessToken request failed with a status code of " + response.StatusCode);
                response.EnsureSuccessStatusCode(); // throw
            }

            var responseText = await response.Content.ReadAsStringAsync();

            var responseParameters = new FormCollection(FormReader.ReadForm(responseText));

            return(new AccessToken
            {
                Token = Uri.UnescapeDataString(responseParameters["oauth_token"]),
                TokenSecret = Uri.UnescapeDataString(responseParameters["oauth_token_secret"]),
                UserId = Uri.UnescapeDataString(responseParameters["user_id"]),
                ScreenName = Uri.UnescapeDataString(responseParameters["screen_name"])
            });
        }
Exemple #13
0
        private async Task <RequestToken> ObtainRequestTokenAsync(string consumerKey, string consumerSecret, string callBackUri, AuthenticationProperties properties)
        {
            Logger.LogVerbose("ObtainRequestToken");

            var nonce = Guid.NewGuid().ToString("N");

            var authorizationParts = new SortedDictionary <string, string>
            {
                { "oauth_callback", callBackUri },
                { "oauth_consumer_key", consumerKey },
                { "oauth_nonce", nonce },
                { "oauth_signature_method", "HMAC-SHA1" },
                { "oauth_timestamp", GenerateTimeStamp() },
                { "oauth_version", "1.0" }
            };

            var parameterBuilder = new StringBuilder();

            foreach (var authorizationKey in authorizationParts)
            {
                parameterBuilder.AppendFormat("{0}={1}&", UrlEncoder.UrlEncode(authorizationKey.Key), UrlEncoder.UrlEncode(authorizationKey.Value));
            }
            parameterBuilder.Length--;
            var parameterString = parameterBuilder.ToString();

            var canonicalizedRequestBuilder = new StringBuilder();

            canonicalizedRequestBuilder.Append(HttpMethod.Post.Method);
            canonicalizedRequestBuilder.Append("&");
            canonicalizedRequestBuilder.Append(UrlEncoder.UrlEncode(RequestTokenEndpoint));
            canonicalizedRequestBuilder.Append("&");
            canonicalizedRequestBuilder.Append(UrlEncoder.UrlEncode(parameterString));

            var signature = ComputeSignature(consumerSecret, null, canonicalizedRequestBuilder.ToString());

            authorizationParts.Add("oauth_signature", signature);

            var authorizationHeaderBuilder = new StringBuilder();

            authorizationHeaderBuilder.Append("OAuth ");
            foreach (var authorizationPart in authorizationParts)
            {
                authorizationHeaderBuilder.AppendFormat(
                    "{0}=\"{1}\", ", authorizationPart.Key, UrlEncoder.UrlEncode(authorizationPart.Value));
            }
            authorizationHeaderBuilder.Length = authorizationHeaderBuilder.Length - 2;

            var request = new HttpRequestMessage(HttpMethod.Post, RequestTokenEndpoint);

            request.Headers.Add("Authorization", authorizationHeaderBuilder.ToString());

            var response = await _httpClient.SendAsync(request, Context.RequestAborted);

            response.EnsureSuccessStatusCode();
            string responseText = await response.Content.ReadAsStringAsync();

            var responseParameters = new FormCollection(FormReader.ReadForm(responseText));

            if (string.Equals(responseParameters["oauth_callback_confirmed"], "true", StringComparison.Ordinal))
            {
                return(new RequestToken {
                    Token = Uri.UnescapeDataString(responseParameters["oauth_token"]), TokenSecret = Uri.UnescapeDataString(responseParameters["oauth_token_secret"]), CallbackConfirmed = true, Properties = properties
                });
            }

            return(new RequestToken());
        }
Exemple #14
0
 internal string Escape(string what)
 {
     return(UrlEncoder.UrlEncode(what ?? string.Empty));
 }
        protected override async Task <AuthenticationTicket> CreateTicketAsync(ClaimsIdentity identity, AuthenticationProperties properties, OAuthTokenResponse tokens)
        {
            var endpoint = Options.UserInformationEndpoint + "?access_token=" + UrlEncoder.UrlEncode(tokens.AccessToken);

            if (Options.SendAppSecretProof)
            {
                endpoint += "&appsecret_proof=" + GenerateAppSecretProof(tokens.AccessToken);
            }

            var response = await Backchannel.GetAsync(endpoint, Context.RequestAborted);

            response.EnsureSuccessStatusCode();

            var payload = JObject.Parse(await response.Content.ReadAsStringAsync());

            var notification = new OAuthAuthenticatedContext(Context, Options, Backchannel, tokens, payload)
            {
                Properties = properties,
                Principal  = new ClaimsPrincipal(identity)
            };

            var identifier = FacebookAuthenticationHelper.GetId(payload);

            if (!string.IsNullOrEmpty(identifier))
            {
                identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, identifier, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var userName = FacebookAuthenticationHelper.GetUserName(payload);

            if (!string.IsNullOrEmpty(userName))
            {
                identity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, userName, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var email = FacebookAuthenticationHelper.GetEmail(payload);

            if (!string.IsNullOrEmpty(email))
            {
                identity.AddClaim(new Claim(ClaimTypes.Email, email, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var name = FacebookAuthenticationHelper.GetName(payload);

            if (!string.IsNullOrEmpty(name))
            {
                identity.AddClaim(new Claim("urn:facebook:name", name, ClaimValueTypes.String, Options.ClaimsIssuer));

                // Many Facebook accounts do not set the UserName field.  Fall back to the Name field instead.
                if (string.IsNullOrEmpty(userName))
                {
                    identity.AddClaim(new Claim(identity.NameClaimType, name, ClaimValueTypes.String, Options.ClaimsIssuer));
                }
            }

            var link = FacebookAuthenticationHelper.GetLink(payload);

            if (!string.IsNullOrEmpty(link))
            {
                identity.AddClaim(new Claim("urn:facebook:link", link, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            await Options.Notifications.Authenticated(notification);

            return(new AuthenticationTicket(notification.Principal, notification.Properties, notification.Options.AuthenticationScheme));
        }
Exemple #16
0
 public string UrlEncode(string content)
 {
     return(UrlEncoder.UrlEncode(content));
 }
 private string Escape(string what)
 {
     return(UrlEncoder.UrlEncode(what ?? string.Empty));
 }
 private static string UrlEncode(string content)
 {
     return(_urlEncoder.UrlEncode(content));
 }
Exemple #19
0
            /// <summary>
            /// Uploads image and returns dictionary of received parameters.
            /// </summary>
            /// <param name="img">Image to upload.</param>
            /// <returns>Dictionary with response parameters.</returns>
            public static Dictionary <string, string> Upload(Gdk.Pixbuf img)
            {
                byte[]         post_content;
                HttpWebRequest request;
                int            basic_length;
                Dictionary <string, string> response = new Dictionary <string, string>();

                StringBuilder post_builder = new StringBuilder();

                post_builder.Append(Parameters.ParamKey).Append("=").Append(Key);
                post_builder.Append("&");
                post_builder.Append(Parameters.ParamImage).Append("=");
                basic_length = post_builder.Length;
                post_builder.Append(UrlEncoder.UrlEncode(Convert.ToBase64String(img.SaveToBuffer("png"))));
                post_content = Encoding.UTF8.GetBytes(post_builder.ToString());

                if (post_content.Length > MaxContentLength)
                {
                    post_builder.Remove(basic_length, post_builder.Length - basic_length);
                    post_builder.Append(UrlEncoder.UrlEncode(Convert.ToBase64String(img.SaveToBuffer("jpeg"))));
                    post_content = Encoding.UTF8.GetBytes(post_builder.ToString());

                    if (post_content.Length > MaxContentLength)
                    {
                        response.Add("FATAL", Catalog.GetString("Image size is too large."));
                        return(response);
                    }
                }

                try
                {
                    request               = (HttpWebRequest)HttpWebRequest.Create(Url);
                    request.Method        = "POST";
                    request.ContentLength = post_content.Length;
                    request.ContentType   = "application/x-www-form-urlencoded";

                    using (Stream writer = request.GetRequestStream())
                    {
                        writer.Write(post_content, 0, post_content.Length);
                    }

                    using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()))
                    {
                        using (XmlTextReader xmlreader = new XmlTextReader(reader))
                        {
                            ParseResponseXml(response, xmlreader);
                        }
                    }
                }
                catch (System.Threading.ThreadAbortException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    Tools.PrintInfo(ex, typeof(Imgur));
                    response.Add("FATAL", ex.Message);
                }

                return(response);
            }