protected string SignedPost (string url, IDictionary<string,string> parameters, OAuth.Token token) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create (url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Headers.Add ("Authorization", OAuth.Sign (Consumer, url, parameters, token, "POST", null)); StreamWriter streamWriter = new StreamWriter (request.GetRequestStream ()); streamWriter.Write (OAuth.PercentEscape (parameters)); streamWriter.Close (); HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse (); } catch(WebException e) { RdioException re; response = (HttpWebResponse)e.Response; if (response.StatusCode == HttpStatusCode.Forbidden || response.StatusCode == HttpStatusCode.Unauthorized) { re = new AuthorizationException(); } else { re = new RdioException(); } re.Request = request; re.Response = response; re.Exception = e; throw re; } StreamReader streamReader = new StreamReader (response.GetResponseStream ()); return streamReader.ReadToEnd (); }
public RdioClient (OAuth.Consumer consumer, OAuth.Token accessToken) { Consumer = consumer; AccessToken = accessToken; }
public AuthState(OAuth.Token requestToken, string url) { RequestToken = requestToken; Url = url; }
public RdioClient (OAuth.Consumer consumer) { Consumer = consumer; }
public OAuth.Token CompleteAuthentication(string verifier, OAuth.Token requestToken) { string response = SignedPost ("http://api.rdio.com/oauth/access_token", new Dictionary<string,string> { { "oauth_verifier", verifier } }, requestToken); NameValueCollection parsed = HttpUtility.ParseQueryString(response); return new OAuth.Token(parsed["oauth_token"], parsed["oauth_token_secret"]); }