private void IgnoreUnignoreItem(bool ignore, string type, long ownerId, long itemId, Action <BackendResult <bool, ResultCode> > callback) { Dictionary <string, string> dictionary = new Dictionary <string, string>(); string index1 = "type"; string str1 = type; dictionary[index1] = str1; string index2 = "owner_id"; string str2 = ownerId.ToString(); dictionary[index2] = str2; string index3 = "item_id"; string str3 = itemId.ToString(); dictionary[index3] = str3; Dictionary <string, string> parameters = dictionary; VKRequestsDispatcher.DispatchRequestToVK <bool>(ignore ? "newsfeed.ignoreItem" : "newsfeed.unignoreItem", parameters, callback, (Func <string, bool>)(jsonStr => { VKRequestsDispatcher.GenericRoot <int> genericRoot = JsonConvert.DeserializeObject <VKRequestsDispatcher.GenericRoot <int> >(jsonStr); if (genericRoot == null) { return(false); } return(genericRoot.response == 1); }), false, true, new CancellationToken?(), null); }
public void GetProfileInfo(long userId, Action <BackendResult <UserData, ResultCode> > callback) { Dictionary <string, string> parameters = new Dictionary <string, string>(); string index1 = "userId"; string str1 = userId.ToString(); parameters[index1] = str1; string index2 = "func_v"; string str2 = "3"; parameters[index2] = str2; VKRequestsDispatcher.DispatchRequestToVK <UserData>("execute.getProfileInfo", parameters, callback, (Func <string, UserData>)(jsonStr => { jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "relatives", false); jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "wallData", true); jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "Groups", false); jsonStr = VKRequestsDispatcher.FixArrayToObject(jsonStr, "personal"); jsonStr = VKRequestsDispatcher.FixArrayToObject(jsonStr, "occupation"); jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "photos", true); jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "subscriptions", true); jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "gifts", true); int resultCount; jsonStr = VKRequestsDispatcher.GetArrayCountAndRemove(jsonStr, "wall", out resultCount); VKRequestsDispatcher.GenericRoot <UserData> genericRoot = JsonConvert.DeserializeObject <VKRequestsDispatcher.GenericRoot <UserData> >(jsonStr); if (genericRoot.response.user.counters.docs == 0) { genericRoot.response.user.counters.docs = genericRoot.response.docsCount; } return(genericRoot.response); }), false, true, new CancellationToken?(), null); }
public void GetProfileInfo(long userId, Action <BackendResult <UserData, ResultCode> > callback) { Dictionary <string, string> parameters = new Dictionary <string, string>(); /* * parameters["userId"] = userId.ToString(); * parameters["func_v"] = "3"; * VKRequestsDispatcher.DispatchRequestToVK<UserData>("execute.getProfileInfo", parameters, callback, (Func<string, UserData>)(jsonStr => * { * jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "relatives", false); * jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "wallData", true); * jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "Groups", false); * jsonStr = VKRequestsDispatcher.FixArrayToObject(jsonStr, "personal"); * jsonStr = VKRequestsDispatcher.FixArrayToObject(jsonStr, "occupation"); * jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "photos", true); * jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "subscriptions", true); * jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "gifts", true); * int resultCount; * jsonStr = VKRequestsDispatcher.GetArrayCountAndRemove(jsonStr, "wall", out resultCount); * VKRequestsDispatcher.GenericRoot<UserData> genericRoot = JsonConvert.DeserializeObject<VKRequestsDispatcher.GenericRoot<UserData>>(jsonStr); * if (genericRoot.response.user.counters.docs == 0) * genericRoot.response.user.counters.docs = genericRoot.response.docsCount; * return genericRoot.response; * }), false, true, new CancellationToken?(), null);*/ parameters["user_id"] = userId.ToString(); parameters["func_v"] = "2"; parameters["photo_count"] = "25"; parameters["gift_count"] = "25"; parameters["photo_sizes"] = "1"; parameters["skip_hidden"] = "1"; Action <BackendResult <User, ResultCode> > act = (ud) => { BackendResult <UserData, ResultCode> res = new BackendResult <UserData, ResultCode>(); res.ResultData = new UserData(); res.ResultData.user = ud.ResultData; res.ResultData.gifts = ud.ResultData.gifts; res.ResultData.photos = ud.ResultData.photos; res.ResultCode = ResultCode.Succeeded; callback(res); }; VKRequestsDispatcher.DispatchRequestToVK <User>("execute.getFullProfileNewNew", parameters, act, (Func <string, User>)(jsonStr => { //"status":{"text":"На пути достижения цели..."} Regex r = new Regex(".+(\"status\":{\"text\":\"(.*?)\"})"); Match m = r.Match(jsonStr); string str1 = m.Groups[1].Value; string str2 = m.Groups[2].Value; jsonStr = jsonStr.Replace(str1, "\"status\":\"" + str2 + "\""); VKRequestsDispatcher.GenericRoot <User> genericRoot = JsonConvert.DeserializeObject <VKRequestsDispatcher.GenericRoot <User> >(jsonStr); return(genericRoot.response); }), false, true, new CancellationToken?(), null); }
public void AddList(string name, Action <BackendResult <ResponseWithId, ResultCode> > callback) { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters["name"] = name; VKRequestsDispatcher.DispatchRequestToVK <ResponseWithId>("friends.addList", parameters, callback, (Func <string, ResponseWithId>)(jsonStr => { VKRequestsDispatcher.GenericRoot <FriendsList> genericRoot = JsonConvert.DeserializeObject <VKRequestsDispatcher.GenericRoot <FriendsList> >(jsonStr); return(new ResponseWithId() { response = genericRoot.response.lid }); }), false, true, new CancellationToken?(), null); }
public void Unsubscribe(string type, long ownerId, long itemId, Action <BackendResult <bool, ResultCode> > callback) { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters["type"] = type; parameters["owner_id"] = ownerId.ToString(); parameters["item_id"] = itemId.ToString(); VKRequestsDispatcher.DispatchRequestToVK <bool>("newsfeed.unsubscribe", parameters, callback, (Func <string, bool>)(jsonStr => { VKRequestsDispatcher.GenericRoot <int> genericRoot = JsonConvert.DeserializeObject <VKRequestsDispatcher.GenericRoot <int> >(jsonStr); if (genericRoot == null) { return(false); } return(genericRoot.response == 1); }), false, true, new CancellationToken?(), null); }
public void GetWallPostByIdWithComments(long postId, long ownerId, int offset, int countToRead, int knownTotalCount, bool needWallPost, Action <BackendResult <GetWallPostResponseData, ResultCode> > callback, long pollId = 0, long pollOwnerId = 0, LikeObjectType likeObjType = LikeObjectType.post) { long userId = VKRequestsDispatcher.AuthData.user_id; if (knownTotalCount != -1 && offset + countToRead > knownTotalCount) { countToRead = knownTotalCount - offset; } string str1 = (!needWallPost ? "var likesAll = API.likes.getList({{\"item_id\":{0}, \"owner_id\":{1}, \"count\":20, type:\"{8}\"}});" : " var wallPost = API.wall.getById({{\"posts\":\"{1}_{0}\"}});\r\nvar likesAll = API.likes.getList({{\"item_id\":{0}, \"owner_id\":{1}, \"count\":20, type:wallPost[0].post_type}});" + Environment.NewLine) + "\r\n\r\n\r\n\r\nvar offset = {2};\r\n\r\n\r\nvar comments = API.wall.getComments({{\"post_id\":\"{0}\", \"owner_id\":\"{1}\", \"offset\":offset, \"count\":\"{3}\", \"need_likes\":\"1\", \"sort\":\"desc\", \"preview_length\":\"0\", \"allow_group_comments\":1}});\r\n\r\nvar datUsersNames = [email protected]_to_user + [email protected]_id;\r\nvar users2 = API.users.get({{\"user_ids\":datUsersNames, \"fields\":\"first_name_dat,last_name_dat\"}});\r\n\r\n\r\n\r\nvar userOrGroupIds = likesAll.items;\r\n"; if (needWallPost) { str1 += "userOrGroupIds = userOrGroupIds + [email protected]_id + [email protected]_id + [email protected]_id + wallPost[0][email protected]_id + wallPost[0][email protected]_id;\r\n"; } string str2 = str1 + "userOrGroupIds = userOrGroupIds + [email protected]_id;\r\n\r\n\r\nvar userIds = [];\r\nvar groupIds = [];\r\n\r\nvar i = 0;\r\n\r\nvar length = userOrGroupIds.length;\r\n\r\nwhile (i < length)\r\n{{\r\n var id = parseInt(userOrGroupIds[i]);\r\n \r\n if (id > 0)\r\n {{\r\n if (userIds.length > 0)\r\n {{\r\n userIds = userIds + \",\";\r\n }}\r\n userIds = userIds + id;\r\n }}\r\n else if (id < 0)\r\n {{\r\n id = -id;\r\n if (groupIds.length > 0)\r\n {{\r\n groupIds = groupIds + \",\";\r\n }}\r\n groupIds = groupIds + id;\r\n }}\r\n \r\n i = i + 1;\r\n}}\r\n\r\nif ({1} < 0)\r\n{{\r\n if (groupIds.length > 0) groupIds = groupIds + \",\";\r\n groupIds = groupIds + ({1} * -1);\r\n}}\r\n\r\nvar users = API.users.get({{\"user_ids\":userIds, \"fields\":\"sex,photo_max,online,online_mobile\" }});\r\nvar groups = API.groups.getById({{\"group_ids\":groupIds}});"; string str3 = string.Format(pollId == 0L ? (!needWallPost ? str2 + "return {{\"Users\": users, \"Groups\":groups, \"LikesAll\":likesAll, \"comments\": comments, \"Users2\": users2 }};" : str2 + "return {{\"Users\": users, \"Groups\":groups, \"LikesAll\":likesAll, \"WallPost\":wallPost[0], \"comments\": comments, \"Users2\": users2 }};") : (!needWallPost ? str2 + "\r\nvar poll= API.polls.getById({{\"owner_id\":{7}, \"poll_id\":{6}}}); \r\nreturn {{\"Users\": users, \"Groups\":groups, \"LikesAll\":likesAll, \"comments\": comments, \"Users2\": users2, \"Poll\":poll }};" : str2 + "\r\nvar poll= API.polls.getById({{\"owner_id\":{7}, \"poll_id\":{6}}}); \r\nreturn {{\"Users\": users, \"Groups\":groups, \"LikesAll\":likesAll, \"WallPost\":wallPost[0], \"comments\": comments, \"Users2\": users2, \"Poll\":poll }};"), postId, ownerId, offset, countToRead, knownTotalCount, userId, pollId, pollOwnerId, likeObjType); Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters["code"] = str3; VKRequestsDispatcher.DispatchRequestToVK <GetWallPostResponseData>("execute", parameters, callback, (Func <string, GetWallPostResponseData>)(jsonStr => { VKRequestsDispatcher.GenericRoot <GetWallPostResponseData> genericRoot = JsonConvert.DeserializeObject <VKRequestsDispatcher.GenericRoot <GetWallPostResponseData> >(VKRequestsDispatcher.FixFalseArray(VKRequestsDispatcher.FixFalseArray(VKRequestsDispatcher.FixFalseArray(VKRequestsDispatcher.FixFalseArray(VKRequestsDispatcher.FixFalseArray(VKRequestsDispatcher.FixFalseArray(jsonStr, "Users", false), "Users2", false), "Groups", false), "Poll", true), "LikesAll", true), "comments", true)); if (genericRoot.response.LikesAll.items != null) { genericRoot.response.LikesAll.users = new List <UserLike>(genericRoot.response.LikesAll.items.Select <long, UserLike>((Func <long, UserLike>)(it => new UserLike() { uid = it }))); } genericRoot.response.Users.Add(AppGlobalStateManager.Current.GlobalState.LoggedInUser); genericRoot.response.Comments.Reverse(); GroupsService.Current.AddCachedGroups((IEnumerable <Group>)genericRoot.response.Groups); if (countToRead == 0) { genericRoot.response.Comments.Clear(); } if (genericRoot.response.WallPost == null) { genericRoot.response.WallPost = new WallPost(); } return(genericRoot.response); }), false, true, new CancellationToken?(), null); }
private static void DoDispatch <R>(string baseUrl, string methodName, Dictionary <string, string> parameters, Action <BackendResult <R, ResultCode> > callback, Func <string, R> customDeserializationFunc = null, bool lowPriority = false, bool pageDataRequest = true, CancellationToken?cancellationToken = null, Action confirmationRequiredHandler = null) { parameters["v"] = VKConstants.API_VERSION; if (!string.IsNullOrEmpty(VKRequestsDispatcher._autorizationData != null ? VKRequestsDispatcher._autorizationData.access_token : null)) { parameters["access_token"] = VKRequestsDispatcher._autorizationData.access_token; } VKRequestsDispatcher.AddLangParameter(parameters); if (!string.IsNullOrEmpty(VKRequestsDispatcher._autorizationData != null ? VKRequestsDispatcher._autorizationData.secret : null)) { if (parameters.ContainsKey("sig")) { parameters.Remove("sig"); } string str1 = JsonWebRequest.ConvertDictionaryToQueryString(parameters, false); if (str1 != string.Empty) { str1 = "?" + str1; } string str2 = VKRequestsDispatcher.HashString("/method/" + methodName + str1 + VKRequestsDispatcher._autorizationData.secret); parameters["sig"] = str2.ToLower(); } JsonWebRequest.SendHTTPRequestAsync(!VKRequestsDispatcher.USE_HTTP ? "https://" + baseUrl : "http://" + baseUrl, parameters, (Action <JsonResponseData>)(jsonResp => { BackendResult <R, ResultCode> backendResult = new BackendResult <R, ResultCode>(ResultCode.CommunicationFailed); if (jsonResp.IsSucceeded) { VKRequestsDispatcher.ResultData resultFromJson = VKRequestsDispatcher.GetResultFromJson(JObject.Parse(jsonResp.JsonString)); backendResult.ResultCode = resultFromJson.ResultCode; backendResult.Error = resultFromJson.error; if (backendResult.ResultCode == ResultCode.UserAuthorizationFailed) { if (!string.IsNullOrEmpty(VKRequestsDispatcher._autorizationData != null ? VKRequestsDispatcher._autorizationData.access_token : null)) { Logger.Instance.Error("RECEIVED AUTHORIZATION FAILURE!!! JSON STR = " + jsonResp.JsonString ?? ""); LogoutRequestHandler.InvokeLogoutRequest(); } } if (backendResult.ResultCode == ResultCode.CaptchaRequired) { CaptchaUserRequestHandler.InvokeCaptchaRequest(new CaptchaUserRequest() { CaptchaSid = resultFromJson.captcha_sid, Url = resultFromJson.captcha_img }, (Action <CaptchaUserResponse>)(captchaResp => { if (!captchaResp.IsCancelled) { Dictionary <string, string> parameters1 = parameters; parameters1["captcha_sid"] = captchaResp.Request.CaptchaSid; parameters1["captcha_key"] = captchaResp.EnteredString; VKRequestsDispatcher.DoDispatch <R>(baseUrl, methodName, parameters1, callback, customDeserializationFunc, lowPriority, pageDataRequest, cancellationToken, null); } else { VKRequestsDispatcher.InvokeCallback((Action)(() => callback(new BackendResult <R, ResultCode>(ResultCode.CaptchaControlCancelled))), cancellationToken); } })); } else if (backendResult.ResultCode == ResultCode.ValidationRequired) { if (resultFromJson.validation_type == "2fa_app" || resultFromJson.validation_type == "2fa_sms") { if (parameters.ContainsKey("force_sms") || parameters.ContainsKey("code")) { R r = customDeserializationFunc != null ? customDeserializationFunc("") : default(R); VKRequestsDispatcher.InvokeCallback((Action)(() => callback(new BackendResult <R, ResultCode>(ResultCode.Succeeded, r))), cancellationToken); } else { CaptchaUserRequestHandler.InvokeValidation2FARequest(new Validation2FAUserRequest() { username = parameters.ContainsKey("username") ? parameters["username"] : "", password = parameters.ContainsKey("password") ? parameters["password"] : "", phoneMask = resultFromJson.phone_mask, validationType = resultFromJson.validation_type, validationSid = resultFromJson.validation_sid }, (Action <ValidationUserResponse>)(valResp => VKRequestsDispatcher.ProcessValidationResponse <R>(valResp, baseUrl, methodName, parameters, callback, customDeserializationFunc, lowPriority, pageDataRequest, cancellationToken))); } } else { CaptchaUserRequestHandler.InvokeValidationRequest(new ValidationUserRequest() { ValidationUri = resultFromJson.redirect_uri }, (Action <ValidationUserResponse>)(valResp => VKRequestsDispatcher.ProcessValidationResponse <R>(valResp, baseUrl, methodName, parameters, callback, customDeserializationFunc, lowPriority, pageDataRequest, cancellationToken))); } } else if (backendResult.ResultCode == ResultCode.ConfirmationRequired) { if (!VKRequestsDispatcher.GetIsResponseCancelled(cancellationToken)) { Action action = confirmationRequiredHandler; if (action != null) { action(); } IBackendConfirmationHandler confirmationHandler = ServiceLocator.Resolve <IBackendConfirmationHandler>(); if (confirmationHandler != null) { confirmationHandler.Confirm(resultFromJson.confirmation_text, (Action <bool>)(confirmed => { if (confirmed) { parameters["confirm"] = "1"; VKRequestsDispatcher.DoDispatch <R>(baseUrl, methodName, parameters, callback, customDeserializationFunc, lowPriority, pageDataRequest, cancellationToken, null); } else { VKRequestsDispatcher.InvokeCallback((Action)(() => callback(new BackendResult <R, ResultCode>(ResultCode.ConfirmationCancelled))), cancellationToken); } })); } } } else if (backendResult.ResultCode == ResultCode.NotEnoughMoney) { if (!VKRequestsDispatcher.GetIsResponseCancelled(cancellationToken)) { IBackendNotEnoughMoneyHandler enoughMoneyHandler = ServiceLocator.Resolve <IBackendNotEnoughMoneyHandler>(); Action action1 = (() => VKRequestsDispatcher.DoDispatch <R>(baseUrl, methodName, parameters, callback, customDeserializationFunc, lowPriority, pageDataRequest, cancellationToken, null)); Action action2 = (Action)(() => VKRequestsDispatcher.InvokeCallback((Action)(() => callback(new BackendResult <R, ResultCode>(ResultCode.BalanceRefillCancelled))), cancellationToken)); if (enoughMoneyHandler != null) { Action refilledCallback = action1; Action cancelledCallback = action2; enoughMoneyHandler.RequestBalanceRefill(refilledCallback, cancelledCallback); } } } else if (backendResult.ResultCode == ResultCode.Succeeded) { try { List <ExecuteError> executeErrorList = null; R r; if (customDeserializationFunc != null) { r = customDeserializationFunc(jsonResp.JsonString); } else if (typeof(R) == typeof(VKClient.Common.Backend.DataObjects.ResponseWithId)) { r = JsonConvert.DeserializeObject <R>(jsonResp.JsonString); } else { VKRequestsDispatcher.GenericRoot <R> genericRoot = JsonConvert.DeserializeObject <VKRequestsDispatcher.GenericRoot <R> >(jsonResp.JsonString); r = genericRoot.response; executeErrorList = genericRoot.execute_errors; } backendResult.ResultData = r; backendResult.ExecuteErrors = executeErrorList; } catch (Exception ex) { Logger.Instance.Error("Error during deserialization", ex); backendResult.ResultCode = ResultCode.DeserializationError; } } } if (backendResult.ResultCode == ResultCode.CaptchaRequired || backendResult.ResultCode == ResultCode.ValidationRequired || (backendResult.ResultCode == ResultCode.ConfirmationRequired || backendResult.ResultCode == ResultCode.NotEnoughMoney)) { return; } VKRequestsDispatcher.InvokeCallback((Action)(() => { Action <BackendResult <R, ResultCode> > action = callback; if (action == null) { return; } BackendResult <R, ResultCode> backendResult1 = backendResult; action(backendResult1); }), cancellationToken); }), true, lowPriority, pageDataRequest); }