/// <summary> /// For a given request token and verifier string return an access token. /// </summary> /// <param name="requestToken"></param> /// <param name="requestTokenSecret"></param> /// <param name="verifier"></param> /// <param name="callback"></param> public void OAuthGetAccessTokenAsync(string requestToken, string requestTokenSecret, string verifier, Action<FlickrResult<OAuthAccessToken>> callback) { string url = "http://www.flickr.com/services/oauth/access_token"; Dictionary<string, string> parameters = OAuthGetBasicParameters(); parameters.Add("oauth_verifier", verifier); parameters.Add("oauth_token", requestToken); string sig = OAuthCalculateSignature("POST", url, parameters, requestTokenSecret); parameters.Add("oauth_signature", sig); FlickrResponder.GetDataResponseAsync(this, url, parameters, (r) => { FlickrResult<OAuthAccessToken> result = new FlickrResult<OAuthAccessToken>(); if (r.Error != null) { if (r.Error is System.Net.WebException) { OAuthException ex = new OAuthException(r.Error); result.Error = ex; } else { result.Error = r.Error; } callback(result); return; } result.Result = FlickrNet.OAuthAccessToken.ParseResponse(r.Result); callback(result); }); }
/// <summary> /// Get an <see cref="OAuthRequestToken"/> for the given callback URL. /// </summary> /// <remarks>Specify 'oob' as the callback url for no callback to be performed.</remarks> /// <param name="callbackUrl">The callback Uri, or 'oob' if no callback is to be performed.</param> /// <param name="callback"></param> public async Task<FlickrResult<OAuthRequestToken>> OAuthGetRequestTokenAsync(string callbackUrl) { string url = "http://www.flickr.com/services/oauth/request_token"; Dictionary<string, string> parameters = OAuthGetBasicParameters(); parameters.Add("oauth_callback", callbackUrl); string sig = OAuthCalculateSignature("POST", url, parameters, null); parameters.Add("oauth_signature", sig); var r = await FlickrResponder.GetDataResponseAsync(this, "", url, parameters); FlickrResult<OAuthRequestToken> result = new FlickrResult<OAuthRequestToken>(); if (r.Error != null) { if (r.Error is System.Net.WebException) { OAuthException ex = new OAuthException(r.Error); result.Error = ex; } else { result.Error = r.Error; } return result; } result.Result = FlickrNet.OAuthRequestToken.ParseResponse(r.Result); return result; }
/// <summary> /// For a given request token and verifier string return an access token. /// </summary> /// <param name="requestToken"></param> /// <param name="requestTokenSecret"></param> /// <param name="verifier"></param> /// <param name="callback"></param> public async Task <FlickrResult <OAuthAccessToken> > OAuthGetAccessTokenAsync(string requestToken, string requestTokenSecret, string verifier) { string url = "https://www.flickr.com/services/oauth/access_token"; Dictionary <string, string> parameters = OAuthGetBasicParameters(); parameters.Add("oauth_verifier", verifier); parameters.Add("oauth_token", requestToken); string sig = OAuthCalculateSignature("POST", url, parameters, requestTokenSecret); parameters.Add("oauth_signature", sig); var r = await FlickrResponder.GetDataResponseAsync(this, "", url, parameters); FlickrResult <OAuthAccessToken> result = new FlickrResult <OAuthAccessToken>(); if (r.Error != null) { if (r.Error is System.Net.WebException) { OAuthException ex = new OAuthException(r.Error); result.Error = ex; } else { result.Error = r.Error; } return(result); } result.Result = FlickrNet.OAuthAccessToken.ParseResponse(r.Result); return(result); }
/// <summary> /// Get an <see cref="OAuthRequestToken"/> for the given callback URL. /// </summary> /// <remarks>Specify 'oob' as the callback url for no callback to be performed.</remarks> /// <param name="callbackUrl">The callback Uri, or 'oob' if no callback is to be performed.</param> /// <param name="callback"></param> async public Task <bool> OAuthGetRequestTokenAsync(string callbackUrl, Action <FlickrResult <OAuthRequestToken> > callback) { string url = "http://www.flickr.com/services/oauth/request_token"; Dictionary <string, string> parameters = OAuthGetBasicParameters(); parameters.Add("oauth_callback", callbackUrl); string sig = OAuthCalculateSignature("POST", url, parameters, null); parameters.Add("oauth_signature", sig); FlickrResponder.GetDataResponseAsync(this, url, parameters, (r) => { FlickrResult <OAuthRequestToken> result = new FlickrResult <OAuthRequestToken>(); if (r.Error != null) { if (r.Error is System.Net.WebException) { OAuthException ex = new OAuthException(r.Error); result.Error = ex; } else { result.Error = r.Error; } callback(result); return; } result.Result = FlickrNet.OAuthRequestToken.ParseResponse(r.Result); callback(result); }); return(true); }
/// <summary> /// For a given request token and verifier string return an access token. /// </summary> /// <param name="requestToken"></param> /// <param name="requestTokenSecret"></param> /// <param name="verifier"></param> /// <param name="callback"></param> public void OAuthGetAccessTokenAsync(string requestToken, string requestTokenSecret, string verifier, Action <FlickrResult <OAuthAccessToken> > callback) { CheckApiKey(); #if SILVERLIGHT string url = "https://api.flickr.com/services/oauth/access_token"; #else string url = "https://www.flickr.com/services/oauth/access_token"; #endif Dictionary <string, string> parameters = OAuthGetBasicParameters(); parameters.Add("oauth_verifier", verifier); parameters.Add("oauth_token", requestToken); string sig = OAuthCalculateSignature("POST", url, parameters, requestTokenSecret); parameters.Add("oauth_signature", sig); FlickrResponder.GetDataResponseAsync(this, url, parameters, (r) => { FlickrResult <OAuthAccessToken> result = new FlickrResult <OAuthAccessToken>(); if (r.Error != null) { if (r.Error is System.Net.WebException) { OAuthException ex = new OAuthException(r.Error); result.Error = ex; } else { result.Error = r.Error; } callback(result); return; } result.Result = FlickrNet.OAuthAccessToken.ParseResponse(r.Result); callback(result); }); }
private void UploadDataAsync(Stream imageStream, string fileName, Uri uploadUri, Dictionary <string, string> parameters, Action <FlickrResult <string> > callback) { string boundary = "FLICKR_MIME_" + DateTime.Now.ToString("yyyyMMddhhmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo); string authHeader = FlickrResponder.OAuthCalculateAuthHeader(parameters); var dataBuffer = CreateUploadData(imageStream, fileName, parameters, boundary); var req = (HttpWebRequest)WebRequest.Create(uploadUri); req.Method = "POST"; req.ContentType = "multipart/form-data; boundary=" + boundary; #if (!SILVERLIGHT && !WINDOWS_PHONE) req.SendChunked = true; #endif req.AllowWriteStreamBuffering = false; if (!string.IsNullOrEmpty(authHeader)) { req.Headers["Authorization"] = authHeader; } req.BeginGetRequestStream( r => { var result = new FlickrResult <string>(); using (var reqStream = req.EndGetRequestStream(r)) { try { var bufferSize = 32 * 1024; if (dataBuffer.Length / 100 > bufferSize) { bufferSize = bufferSize * 2; } dataBuffer.UploadProgress += (o, e) => { if (OnUploadProgress != null) { OnUploadProgress(this, e); } }; dataBuffer.CopyTo(reqStream, bufferSize); reqStream.Close(); } catch (Exception ex) { result.Error = ex; callback(result); } } req.BeginGetResponse( r2 => { try { var res = req.EndGetResponse(r2); var sr = new StreamReader(res.GetResponseStream()); var responseXml = sr.ReadToEnd(); sr.Close(); var t = new UnknownResponse(); ((IFlickrParsable)t).Load(responseXml); result.Result = t.GetElementValue("photoid"); result.HasError = false; } catch (Exception ex) { if (ex is WebException) { var oauthEx = new OAuthException(ex); result.Error = string.IsNullOrEmpty(oauthEx.Message) ? ex : oauthEx; } else { result.Error = ex; } } callback(result); }, this); }, this); }
private void UploadDataAsync(Stream imageStream, string fileName, Uri uploadUri, Dictionary <string, string> parameters, Action <FlickrResult <string> > callback) { string boundary = "FLICKR_MIME_" + DateTime.Now.ToString("yyyyMMddhhmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo); string authHeader = FlickrResponder.OAuthCalculateAuthHeader(parameters); byte[] dataBuffer = CreateUploadData(imageStream, fileName, parameters, boundary); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uploadUri); req.Method = "POST"; req.ContentType = "multipart/form-data; boundary=" + boundary; if (!String.IsNullOrEmpty(authHeader)) { req.Headers["Authorization"] = authHeader; } req.BeginGetRequestStream( r => { Stream s = req.EndGetRequestStream(r); int bufferSize = 1024 * 32; int soFar = 0; while (soFar < dataBuffer.Length) { if ((dataBuffer.Length - soFar) < bufferSize) { bufferSize = dataBuffer.Length - soFar; } s.Write(dataBuffer, soFar, bufferSize); soFar += bufferSize; if (OnUploadProgress != null) { UploadProgressEventArgs args = new UploadProgressEventArgs(soFar, dataBuffer.Length); OnUploadProgress(this, args); } } req.BeginGetResponse( r2 => { FlickrResult <string> result = new FlickrResult <string>(); try { WebResponse res = req.EndGetResponse(r2); StreamReader sr = new StreamReader(res.GetResponseStream()); string responseXml = sr.ReadToEnd(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; XmlReader reader = XmlReader.Create(new StringReader(responseXml), settings); if (!reader.ReadToDescendant("rsp")) { throw new XmlException("Unable to find response element 'rsp' in Flickr response"); } while (reader.MoveToNextAttribute()) { if (reader.LocalName == "stat" && reader.Value == "fail") { throw ExceptionHandler.CreateResponseException(reader); } continue; } reader.MoveToElement(); reader.Read(); UnknownResponse t = new UnknownResponse(); ((IFlickrParsable)t).Load(reader); result.Result = t.GetElementValue("photoid"); result.HasError = false; } catch (Exception ex) { if (ex is WebException) { OAuthException oauthEx = new OAuthException(ex); if (String.IsNullOrEmpty(oauthEx.Message)) { result.Error = ex; } else { result.Error = oauthEx; } } else { result.Error = ex; } } callback(result); }, this); }, this); }
/// <summary> /// Get an <see cref="OAuthRequestToken"/> for the given callback URL. /// </summary> /// <remarks>Specify 'oob' as the callback url for no callback to be performed.</remarks> /// <param name="callbackUrl">The callback Uri, or 'oob' if no callback is to be performed.</param> /// <param name="callback"></param> public void OAuthGetRequestTokenAsync(string callbackUrl, Action<FlickrResult<OAuthRequestToken>> callback) { CheckApiKey(); #if SILVERLIGHT string url = "https://api.flickr.com/services/oauth/request_token"; #else string url = "https://www.flickr.com/services/oauth/request_token"; #endif Dictionary<string, string> parameters = OAuthGetBasicParameters(); parameters.Add("oauth_callback", callbackUrl); string sig = OAuthCalculateSignature("POST", url, parameters, null); parameters.Add("oauth_signature", sig); FlickrResponder.GetDataResponseAsync(this, url, parameters, (r) => { var result = new FlickrResult<OAuthRequestToken>(); if (r.Error != null) { if (r.Error is System.Net.WebException) { var ex = new OAuthException(r.Error); result.Error = ex; } else { result.Error = r.Error; } callback(result); return; } result.Result = FlickrNet.OAuthRequestToken.ParseResponse(r.Result); callback(result); }); }
private void UploadDataAsync(Stream imageStream, string fileName, Uri uploadUri, Dictionary<string, string> parameters, Action<FlickrResult<string>> callback) { string boundary = "FLICKR_MIME_" + DateTime.Now.ToString("yyyyMMddhhmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo); string authHeader = FlickrResponder.OAuthCalculateAuthHeader(parameters); byte[] dataBuffer = CreateUploadData(imageStream, fileName, parameters, boundary); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uploadUri); req.Method = "POST"; req.ContentType = "multipart/form-data; boundary=" + boundary; if (!String.IsNullOrEmpty(authHeader)) { req.Headers["Authorization"] = authHeader; } req.BeginGetRequestStream( r => { Stream s = req.EndGetRequestStream(r); int bufferSize = 1024 * 32; int soFar = 0; while (soFar < dataBuffer.Length) { s.Write(dataBuffer, soFar, Math.Min(bufferSize, dataBuffer.Length - soFar)); soFar += bufferSize; if (OnUploadProgress != null) { UploadProgressEventArgs args = new UploadProgressEventArgs(soFar, dataBuffer.Length); OnUploadProgress(this, args); } } s.Close(); req.BeginGetResponse( r2 => { FlickrResult<string> result = new FlickrResult<string>(); try { WebResponse res = req.EndGetResponse(r2); StreamReader sr = new StreamReader(res.GetResponseStream()); string responseXml = sr.ReadToEnd(); sr.Close(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; XmlReader reader = XmlReader.Create(new StringReader(responseXml), settings); if (!reader.ReadToDescendant("rsp")) { throw new XmlException("Unable to find response element 'rsp' in Flickr response"); } while (reader.MoveToNextAttribute()) { if (reader.LocalName == "stat" && reader.Value == "fail") throw ExceptionHandler.CreateResponseException(reader); continue; } reader.MoveToElement(); reader.Read(); UnknownResponse t = new UnknownResponse(); ((IFlickrParsable)t).Load(reader); result.Result = t.GetElementValue("photoid"); result.HasError = false; } catch (Exception ex) { if (ex is WebException) { OAuthException oauthEx = new OAuthException(ex); if (String.IsNullOrEmpty(oauthEx.Message)) result.Error = ex; else result.Error = oauthEx; } else { result.Error = ex; } } callback(result); }, this); }, this); }
private void UploadDataAsync(Stream imageStream, string fileName, Uri uploadUri, Dictionary <string, string> parameters, Action <FlickrResult <string> > callback) { string boundary = "FLICKR_MIME_" + DateTime.Now.ToString("yyyyMMddhhmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo); string authHeader = FlickrResponder.OAuthCalculateAuthHeader(parameters); var dataBuffer = CreateUploadData(imageStream, fileName, parameters, boundary); var req = WebRequest.Create(uploadUri); req.Method = "POST"; req.ContentType = "multipart/form-data; boundary=" + boundary; if (!String.IsNullOrEmpty(authHeader)) { req.Headers["Authorization"] = authHeader; } req.BeginGetRequestStream( r => { using (var reqStream = req.EndGetRequestStream(r)) { var bufferSize = 32 * 1024; if (dataBuffer.Length / 100 > bufferSize) { bufferSize = bufferSize * 2; } dataBuffer.UploadProgress += (o, e) => { if (OnUploadProgress != null) { OnUploadProgress(this, e); } }; dataBuffer.CopyTo(reqStream, bufferSize); reqStream.Close(); } req.BeginGetResponse( r2 => { var result = new FlickrResult <string>(); try { var res = req.EndGetResponse(r2); var sr = new StreamReader(res.GetResponseStream()); var responseXml = sr.ReadToEnd(); sr.Close(); var settings = new XmlReaderSettings { IgnoreWhitespace = true }; var reader = XmlReader.Create(new StringReader(responseXml), settings); if (!reader.ReadToDescendant("rsp")) { throw new XmlException("Unable to find response element 'rsp' in Flickr response"); } while (reader.MoveToNextAttribute()) { if (reader.LocalName == "stat" && reader.Value == "fail") { throw ExceptionHandler.CreateResponseException(reader); } } reader.MoveToElement(); reader.Read(); var t = new UnknownResponse(); ((IFlickrParsable)t).Load(reader); result.Result = t.GetElementValue("photoid"); result.HasError = false; } catch (Exception ex) { if (ex is WebException) { var oauthEx = new OAuthException(ex); result.Error = String.IsNullOrEmpty(oauthEx.Message) ? ex : oauthEx; } else { result.Error = ex; } } callback(result); }, this); }, this); }
private void UploadDataAsync(Stream imageStream, string fileName, Uri uploadUri, Dictionary<string, string> parameters, Action<FlickrResult<string>> callback) { string boundary = "FLICKR_MIME_" + DateTime.Now.ToString("yyyyMMddhhmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo); string authHeader = FlickrResponder.OAuthCalculateAuthHeader(parameters); var dataBuffer = CreateUploadData(imageStream, fileName, parameters, boundary); var req = WebRequest.Create(uploadUri); req.Method = "POST"; req.ContentType = "multipart/form-data; boundary=" + boundary; if (!string.IsNullOrEmpty(authHeader)) { req.Headers["Authorization"] = authHeader; } req.BeginGetRequestStream( r => { using (var reqStream = req.EndGetRequestStream(r)) { var bufferSize = 32 * 1024; if (dataBuffer.Length / 100 > bufferSize) bufferSize = bufferSize * 2; dataBuffer.UploadProgress += (o, e) => { if (OnUploadProgress != null) OnUploadProgress(this, e); }; dataBuffer.CopyTo(reqStream, bufferSize); reqStream.Close(); } req.BeginGetResponse( r2 => { var result = new FlickrResult<string>(); try { var res = req.EndGetResponse(r2); var sr = new StreamReader(res.GetResponseStream()); var responseXml = sr.ReadToEnd(); sr.Close(); var settings = new XmlReaderSettings {IgnoreWhitespace = true}; var reader = XmlReader.Create(new StringReader(responseXml), settings); if (!reader.ReadToDescendant("rsp")) { throw new XmlException("Unable to find response element 'rsp' in Flickr response"); } while (reader.MoveToNextAttribute()) { if (reader.LocalName == "stat" && reader.Value == "fail") throw ExceptionHandler.CreateResponseException(reader); } reader.MoveToElement(); reader.Read(); var t = new UnknownResponse(); ((IFlickrParsable)t).Load(reader); result.Result = t.GetElementValue("photoid"); result.HasError = false; } catch (Exception ex) { if (ex is WebException) { var oauthEx = new OAuthException(ex); result.Error = string.IsNullOrEmpty(oauthEx.Message) ? ex : oauthEx; } else { result.Error = ex; } } callback(result); }, this); }, this); }