/// <summary> /// The async implementation of <see cref="Authorize"/> /// </summary> public static void AuthorizeAsync(AsyncCallback<string> callback, string requestToken, string userName, string password) { ValidateArgument(requestToken, "requestToken"); ValidateArgument(userName, "userName"); ValidateArgument(password, "password"); var logonAndAuthorizeTemplate = "action=submit®Callback=http%253A%252F%252Fapi.t.sina.com.cn%252Foauth%252Fauthorize%253Foauth_token%253D{0}%2526oauth_callback%253Doob%2526from%253D%2526with_cookie%253D&oauth_token={0}&oauth_callback=oob&from=&forcelogin=&userId={1}&passwd={2}"; var postData = string.Format(logonAndAuthorizeTemplate, requestToken, RFC3986Encoder.Encode(userName), RFC3986Encoder.Encode(password)); var requester = new HttpPost(APIUri.Authorize, postData); requester.RequestAsync(delegate(AsyncCallResult<string> result) { var asyncResult = new AsyncCallResult<string>(); asyncResult.Success = result.Success; asyncResult.Exception = result.Exception; if (result.Success) { var match = Regex.Match(result.Data, Constants.RetrieveAuthorizationCodePattern, RegexOptions.CultureInvariant); if (match.Success) asyncResult.Data = match.Groups[1].Value; else throw new AMicroblogException(LocalErrorCode.CredentialInvalid, "Invalid user name or password."); } else callback(asyncResult); }); }
private Transaction HandleResult(AsyncCallResult <XDocument> result, bool wasTest) { if (result.Failed()) { log.Error("Spreedly transaction failed."); if (null != result && null != result.Contents) { log.Error(result.Contents.ToString()); } return(null); } else { if (null != result && null != result.Contents) { log.Debug(result.Contents.ToString()); } } if (result.Contents == null) { return(new Transaction(wasTest, new TransactionErrors("", TransactionErrorType.CallFailed))); } return(Transaction.FromXml(result.Contents)); }
public static T FirstOrNull <T>(this AsyncCallResult <GetListResponse <T> > result_) where T : ParseObject { if (result_.HasResults()) { return(result_.Contents[0]); } return(null); }
/// <summary> /// 处理接收数据完成 /// </summary> void CallEndResult() { byte[] result = CopyBuffer(true); if (result != null && result.Length > 0) { if (SerialPortResult != null) { //异步通知接收完成 AsyncCallResult call = new AsyncCallResult(CalResult); call.BeginInvoke(result, null, null); } } }
/// <summary> /// 结束接收 /// </summary> void EndReceive(byte[] bs) { //设置最后接收时间 m_lastReceiveTime = DateTime.Now; m_isReceiving = false; if (OnSerialPortReceived != null && bs != null && bs.Length != 0) { AsyncCallResult call = new AsyncCallResult(CalReceived); call.BeginInvoke(bs, null, null); } }
//处理接手数据完成 void CallEndResult() { byte[] result = CopyBuffer(true); if (result != null && result.Length > 0) { if (SerialPortResult != null) { //异步通知接收完成 AsyncCallResult call = new AsyncCallResult(CalResult); call.BeginInvoke(result, null, null); } } result = null; //GC.Collect(); //GC.WaitForPendingFinalizers(); }
/// <summary> /// Performs the async request. /// </summary> /// <param name="state"></param> private void DoRequest(object state) { var callback = state as AsyncCallback <string>; AsyncCallResult <string> reqResult = new AsyncCallResult <string>(); try { reqResult.Data = Request(); reqResult.Success = true; } catch (Exception ex) { reqResult.Success = false; reqResult.Exception = ex; } finally { callback(reqResult); } }
public static bool Failed <T>(this AsyncCallResult <T> result) where T : class { return(result == null || result.FailureReason != AsyncCallFailureReason.None); }
/// <summary> /// Performs the async request. /// </summary> /// <param name="state"></param> private void DoRequest(object state) { var callback = state as AsyncCallback<string>; AsyncCallResult<string> reqResult = new AsyncCallResult<string>(); try { reqResult.Data = Request(); reqResult.Success = true; } catch (Exception ex) { reqResult.Success = false; reqResult.Exception = ex; } finally { callback(reqResult); } }
/// <summary> /// The async implementation of <see cref="Login"/> /// </summary> public static void LoginAsync(AsyncCallback<OAuthAccessToken> callback, string userName, string password) { Thread thread = new Thread(delegate() { var result = new AsyncCallResult<OAuthAccessToken>(); try { var token = AMicroblog.Login(userName, password); result.Success = true; result.Data = token; } catch (Exception ex) { result.Success = false; result.Exception = ex; } finally { callback(result); } }); thread.Name = "Login"; thread.Start(); }
/// <summary> /// The async implementation of <see cref="GetRequestToken"/> /// </summary> public static void GetRequestTokenAsync(AsyncCallback<OAuthRequestToken> callback) { var requester = new TokenObtainRequest(APIUri.RequestToken); requester.RequestAsync(delegate(AsyncCallResult<string> result) { var asyncResult = new AsyncCallResult<OAuthRequestToken>(); asyncResult.Success = result.Success; asyncResult.Exception = result.Exception; if (result.Success) { // Processes response. var match = Regex.Match(result.Data, Constants.RetrieveRequestTokenPattern, RegexOptions.IgnoreCase); if (!match.Success) throw new AMicroblogException(LocalErrorCode.UnknowError, "Failed to retrieve request token from the web response."); var requestToken = match.Groups[1].Value; var requestTokenSecret = match.Groups[2].Value; asyncResult.Data = new OAuthRequestToken() { Token = match.Groups[1].Value, Secret = match.Groups[2].Value }; } else callback(asyncResult); }); }
/// <summary> /// The async implementation of <see cref="GetAccessToken"/> /// </summary> public static void GetAccessTokenAsync(AsyncCallback<OAuthAccessToken> callback, OAuthRequestToken requestToken, string verifier) { ValidateArgument(requestToken, "requestToken"); ValidateArgument(requestToken.Token, "requestToken.Token"); ValidateArgument(requestToken.Secret, "requestToken.Secret"); ValidateArgument(verifier, "verifier"); // If the required auth header item is not given (for example: an incorrect name is used.), server will not response. var requester = new TokenObtainRequest(APIUri.AccessToken); requester.Params.Add(new ParamPair(Constants.OAuthToken, requestToken.Token)); requester.Params.Add(new ParamPair(Constants.OAuthVerifier, verifier)); requester.Secret = requestToken.Secret; requester.RequestAsync(delegate(AsyncCallResult<string> result) { var asyncResult = new AsyncCallResult<OAuthAccessToken>(); asyncResult.Success = result.Success; asyncResult.Exception = result.Exception; if (result.Success) { var accessTokenMatch = Regex.Match(result.Data, Constants.RetrieveAccessTokenPattern, RegexOptions.IgnoreCase); if (!accessTokenMatch.Success) throw new AMicroblogException(LocalErrorCode.UnknowError, "Failed to retrieve access token."); var accessToken = accessTokenMatch.Groups[1].Value; var accessTokenSecret = accessTokenMatch.Groups[2].Value; var userID = accessTokenMatch.Groups[4].Value; asyncResult.Data = new OAuthAccessToken() { Token = accessToken, Secret = accessTokenSecret, UserID = userID }; } else callback(asyncResult); }); }
private Transaction HandleResult(AsyncCallResult<XDocument> result, bool wasTest) { if (result.Failed()) { log.Error("Spreedly transaction failed."); if (null != result && null != result.Contents) log.Error(result.Contents.ToString()); return null; } else { if (null != result && null != result.Contents) log.Debug(result.Contents.ToString()); } if (result.Contents == null) { return new Transaction(wasTest, new TransactionErrors("", TransactionErrorType.CallFailed)); } return Transaction.FromXml(result.Contents); }
public static bool HasResults <T>(this AsyncCallResult <GetListResponse <T> > result_) where T : ParseObject { return(result_.Failed() == false && result_.Contents.Count > 0); }
public static bool IsEmpty <T>(this AsyncCallResult <GetListResponse <T> > result_) where T : ParseObject { return(result_.Failed() || result_.Contents.Count == 0); }