protected JodelRequestBase(JodelUser user, HttpMethod method, string url, string version = "v2", string postData = "") { User = user; Method = method; Url = url; Version = version; PostData = postData; }
public static async Task <VerificationResult> VerifyAccountAsync(JodelUser jodelUser) { var checkinRequestProto = new CheckinRequest { checkin = new CheckinRequest.Checkin { build = new CheckinRequest.Checkin.Build { sdkVersion = 18 } }, version = 3, fragment = 0 }; var data = SerializeToByteArray(checkinRequestProto); var webClient = new WebClient(); webClient.Headers.Add("Content-Type", "application/x-protobuffer"); webClient.Headers.Add("Accept-Encoding", "deflate"); webClient.Headers.Add("User-Agent", "Android-Checkin/2.0 (vbox86p JLS36G); deflate"); var checkinResponseString = await webClient.UploadDataTaskAsync("https://android.clients.google.com/checkin", data); CheckinResponse checkinResponseProto; try { checkinResponseProto = ProtoBuf.Serializer.Deserialize <CheckinResponse>(new MemoryStream(checkinResponseString)); } catch (Exception) { return(new VerificationResult(false, "Couldn't deserialize CheckinProtoResponse.")); } var registerPostData = "app=com.tellm.android.app&app_ver=1001800&cert=a4a8d4d7b09736a0f65596a868cc6fd620920fb0&device=" + checkinResponseProto.androidId + "&sender=425112442765&X-appid=" + Guid.NewGuid().ToString("n").Substring(0, 11) + "&X-scope=GCM"; webClient.Headers.Clear(); webClient.Headers.Add("Authorization", "AidLogin " + checkinResponseProto.androidId + ":" + checkinResponseProto.securityToken); webClient.Headers.Add("Accept", "*/*"); webClient.Headers.Add("Accept-Encoding", "deflate"); webClient.Headers.Add("User-Agent", "Android-Checkin/2.0 (vbox86p JLS36G); deflate"); webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var registerTokenResponseString = await webClient.UploadStringTaskAsync("https://android.clients.google.com/c2dm/register3", registerPostData); if (!registerTokenResponseString.Contains("token")) { return(new VerificationResult(false, "Couldn't register c2dm token.")); } var registerToken = registerTokenResponseString.Replace("token=", ""); var verificationResult = await jodelUser.VerifyInstanceIdAsync(registerToken); return(!verificationResult.Verified ? new VerificationResult(false, "Couldn't verify using c2dm token.") : new VerificationResult(true, "")); }
//todo: not 100% async yet public static async Task <VerificationResult> VerifyAccountAsync(JodelUser jodelUser) { var checkinRequestProto = new CheckinRequest { checkin = new CheckinRequest.Checkin { build = new CheckinRequest.Checkin.Build { sdkVersion = 18 } }, version = 3, fragment = 0 }; var data = SerializeToByteArray(checkinRequestProto); var webClient = new WebClient(); webClient.Headers.Add("Content-Type", "application/x-protobuffer"); webClient.Headers.Add("Accept-Encoding", "deflate"); webClient.Headers.Add("User-Agent", "Android-Checkin/2.0 (vbox86p JLS36G); deflate"); var checkinResponseString = await webClient.UploadDataTaskAsync("https://android.clients.google.com/checkin", data); CheckinResponse checkinResponseProto; try { checkinResponseProto = ProtoBuf.Serializer.Deserialize <CheckinResponse>(new MemoryStream(checkinResponseString)); } catch (Exception) { return(new VerificationResult(false, "Couldn't deserialize CheckinProtoResponse.")); } var registerPostData = "app=com.tellm.android.app&app_ver=1001800&cert=a4a8d4d7b09736a0f65596a868cc6fd620920fb0&device=" + checkinResponseProto.androidId + "&sender=425112442765&X-appid=" + Guid.NewGuid().ToString("n").Substring(0, 11) + "&X-scope=GCM"; webClient.Headers.Clear(); webClient.Headers.Add("Authorization", "AidLogin " + checkinResponseProto.androidId + ":" + checkinResponseProto.securityToken); webClient.Headers.Add("Accept", "*/*"); webClient.Headers.Add("Accept-Encoding", "deflate"); webClient.Headers.Add("User-Agent", "Android-Checkin/2.0 (vbox86p JLS36G); deflate"); webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var registerTokenResponseString = await webClient.UploadStringTaskAsync("https://android.clients.google.com/c2dm/register3", registerPostData); if (!registerTokenResponseString.Contains("token")) { return(new VerificationResult(false, "Couldn't register c2dm token.")); } var registerToken = registerTokenResponseString.Replace("token=", ""); var tokenPushed = await jodelUser.PushTokenAsync(registerToken); if (!tokenPushed) { return(new VerificationResult(false, "Couldn't push c2dm token.")); } var loginRequestProto = new LoginRequest { auth_service = 2, auth_token = checkinResponseProto.securityToken.ToString(), id = "android-11", domain = "mcs.android.com", device_id = "android-" + checkinResponseProto.androidId.ToString("X"), resource = checkinResponseProto.androidId.ToString(), user = checkinResponseProto.androidId.ToString(), use_rmq2 = true, account_id = (long)checkinResponseProto.androidId }; //lazy hack var verificationResponse = await Task.Run(() => GetGcmVerificationCode(loginRequestProto)); if (!verificationResponse.Success) { return(verificationResponse); } var verificationData = verificationResponse.Message; if (!verificationData.Contains("verification_code")) { return(new VerificationResult(false, "MCS server didn't contain verification_code field.")); } var serverTime = Regex.Match(verificationData, "\"server_time\":(.*?),").Groups[1].Value; var verificationToken = Regex.Match(verificationData, "\"verification_code\":\"(.*?)\"").Groups[1].Value; var verifiedPushToken = await jodelUser.VerifyPushTokenAsync(serverTime, verificationToken); return(!verifiedPushToken ? new VerificationResult(false, "Couldn't verify c2dm token.") : new VerificationResult(true, "")); }
public SimplifiedRequest(JodelUser user, HttpMethod method, string url, string version = "v2", string postData = "") : base(user, method, url, version, postData) { }
public JodelRequestFactory(JodelUser user) { User = user; }