private async Task <Dictionary <long, List <VkWallResponse> > > CheckUpdates()
        {
            Dictionary <long, List <VkWallResponse> > usersPosts = new Dictionary <long, List <VkWallResponse> >();

            foreach (var userId in _userIdList)
            {
                var postDto = new PostDTOModel()
                {
                    AccountId = userId
                };
                var wall = await VkClient.GetUserPosts(postDto);

                //if (wall.Response.Items.Any(x => x.Date > DateTime.Now.AddMinutes(-10)))
                //{
                //    if (usersPosts.ContainsKey(userId))
                //    {
                //        usersPosts[userId].Add(wall);
                //    }
                //    else
                //    {
                //        usersPosts.Add(userId, new List<VkWallResponse>() { wall });
                //    }
                //}
            }
            return(usersPosts);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            string    groupName = "programm_exam";
            Stopwatch timeGetGroupMembersFriendsWalls = new Stopwatch();
            Stopwatch FillPostsInDB = new Stopwatch();

            var           vkClient         = new VkClient();
            List <VkUser> listGroupMembers = vkClient.GetGroupMembersGraph(groupName);

            var efClient = new EFDatabaseClient();

            efClient.CleanDatabase();
            efClient.FillGroupMembersInDatabase(listGroupMembers, groupName);

            timeGetGroupMembersFriendsWalls.Start();
            var userWallDictionary = vkClient.GetWallsForFriendsInUserGraph(listGroupMembers);

            timeGetGroupMembersFriendsWalls.Stop();
            Console.WriteLine("------------------------------------------------------------------\n" +
                              "Время получения постов для друзей членов сообщества: {0}\n" +
                              "------------------------------------------------------------------",
                              FormatTime(timeGetGroupMembersFriendsWalls));

            FillPostsInDB.Start();
            efClient.FillNewsForDbGroupMembers(groupName, userWallDictionary);
            FillPostsInDB.Stop();
            Console.WriteLine("Время записи всех постов для друзей членов сообщества в БД: {0}\n" +
                              "------------------------------------------------------------------",
                              FormatTime(FillPostsInDB));

            Console.ReadKey();
            Console.ReadKey();
        }
        public async Task <IActionResult> AddUpdateVKUser([FromBody] TokenModel token)
        {
            var vk          = new VkClient();
            var tokenString = await vk.GetToken(token);

            var vkuser = await vk.GetUserByCode(tokenString);

            var user = new UserDTO();

            if (vkuser != null)
            {
                user = new UserDTO
                {
                    Id        = vkuser.Id,
                    FirstName = vkuser.FirstName,
                    LastName  = vkuser.LastName,
                    Domain    = vkuser.Domain,
                };
            }

            try
            {
                UserAction.AddUpdateUser(user);
                var tknbck = new TokenBack()
                {
                    Token = tokenString,
                    Id    = user.Id
                };
                return(Ok(tknbck));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }
        }
Beispiel #4
0
        public static void RegisterAuth()
        {
            // To let users of this site log in using their accounts from other sites such as Microsoft, Facebook, and Twitter,
            // следует обновить сайт. Дополнительные сведения: http://go.microsoft.com/fwlink/?LinkID=252166

            //OAuthWebSecurity.RegisterMicrosoftClient(
            //    clientId: "",
            //    clientSecret: "");

            //OAuthWebSecurity.RegisterTwitterClient(
            //    consumerKey: "",
            //    consumerSecret: "");

            //OAuthWebSecurity.RegisterFacebookClient(
            //    appId: "",
            //    appSecret: "");

            //OAuthWebSecurity.RegisterGoogleClient();

            var vkAuth = new VkClient(
                AppId: "AppId",
                AppSecret: "AppSecret");

            OAuthWebSecurity.RegisterClient(vkAuth, displayName: "ВТентакле", extraData: null);

            var gitHubClient = new GitHubClient(
                clientId: "clientId",
                clientSecret: "clientSecret");

            OAuthWebSecurity.RegisterClient(gitHubClient, "GitHub", null);
        }
Beispiel #5
0
        public async Task <IViewComponentResult> InvokeAsync(VkClient vkClient)
        {
            if (_context != null && _signInManager.IsSignedIn(HttpContext.User))
            {
                var user = await _userManager.GetUserAsync(HttpContext.User);

                var vkUser = await _context
                             .VkUserSet?
                             .FirstOrDefaultAsync(id => id.VkUserId == user.VkUserId);

                var vkClientViewModel = new VkClientViewModel
                {
                    AccessToken = vkUser?.AccessToken,
                    UserId      = vkUser?.UserVkId
                };

                if (vkClient != null)
                {
                    vkClientViewModel.ResponseType = vkClient.ResponseType;
                    vkClientViewModel.RedirectUri  = vkClient.RedirectUri;
                    vkClientViewModel.Scope        = vkClient.Scope;
                    vkClientViewModel.ClientId     = vkClient.ClientId;
                    vkClientViewModel.Display      = vkClient.Display;
                }

                return(View(vkClientViewModel));
            }

            return(View());
        }
Beispiel #6
0
 public async Task<VkClient> GetUncheckedClient(VkAcc vkAcc)
 {
     VkClient vkClient = vkAcc.VkClients.Find(e => e.ClientStatus == VkClient.Status.Unchecked);
     if (vkClient == null)
     {
         await this.UpdateClients(vkAcc);
         vkClient = vkAcc.VkClients.Find(e => e.ClientStatus == VkClient.Status.Unchecked);
     }
     return vkClient;
 }
Beispiel #7
0
 public void OneTimeSetUp()
 {
     client = new VkClient();
     client.Authorize(new InternalVkApiAuthorizationRequestParams
     {
         ApplicationId = 6933681,
         AccessToken   =
             "b30e6b4575c30264bd26c5a6449d4e9ca635357d7758dc240f4ca7390d520aa35946b9ecad3e01138623f"
     });
 }
        public async Task <IActionResult> Index(RequestWrapper request)
        {
            Console.WriteLine($"Current user authenticated : {HttpContext.User.Identity.IsAuthenticated}");
            var result = new ResponseWrapper
            {
                Session = request.Session,
                Version = request.Version
            };

            Console.WriteLine($"{nameof(AliceController)} handle request with command: {request?.Request?.Command}");
            var publicLayer = new PublicActionsLayer();

            foreach (var action in publicLayer.Actions)
            {
                if (action.CanHandle(request.Request))
                {
                    result.Response = await action.Handle(request.Request);

                    return(Ok(result));
                }
            }
            var user = HttpContext.User;

            if (!user.Identity.IsAuthenticated)
            {
                result.StartAccountLinking = new object();

                return(await Task.FromResult(Ok(result)));
            }
            var userId     = user.FindFirst("id").Value;
            var yandexUser = await _unitOfWork.UserRepository.GetEntity(userId);

            if (yandexUser == null)
            {
                await _userCreator.SyncYandexUser(user.Identity as ClaimsIdentity);
            }

            var vkUser          = _unitOfWork.VkUserRepository.Find(user => user.YandexUserId == yandexUser.Id).FirstOrDefault();
            var vkClient        = new VkClient();
            var getStatusAction = new GetVkStatusAction(vkClient, vkUser);

            if (getStatusAction.CanHandle(request.Request))
            {
                result.Response = await getStatusAction.Handle(request.Request);

                return(Ok(result));
            }

            result.Response = new Response
            {
                Text = $"Ты авторизован, поздравляю!"
            };

            return(Ok(result));
        }
Beispiel #9
0
        public MainForm()
        {
            InitializeComponent();

            vk = new VkClient();
            vk.OnAuthCodeRequired += () =>
            {
                AuthCodeForm acf = new AuthCodeForm();
                acf.ShowDialog();
                return(acf.Code);
            };
        }
Beispiel #10
0
 public async Task LikeClient(VkClient client)
 {
     try
     {
         await VkApisManager.RandomLikeUser(client.VkAcc, client.ProfileVkId);
         await this.SetClientStatus(client.VkClientId, VkClient.Status.Liked);
     }
     catch (Exception e)
     {
         Console.WriteLine("");
     }
 }
Beispiel #11
0
        public string GetResponseHtml(IDictionary <string, string> parameters, Uri signinUri)
        {
            string code = parameters["code"];

            // Exchange the Request Token for an Access Token
            string appId     = _settings.VkApplicationId;
            string appSecret = _settings.VkApplicationSecret;

            string scheme = parameters["SERVER_PORT_SECURE"] == "1" ? "https" : "http";

            var callbackUri = new UriBuilder(string.Format("{0}://{1}", scheme, parameters["HTTP_HOST"]))
            {
                Path  = parameters["URL"],
                Query = string.Format("context={0}", parameters["context"])
            };

            var     service     = new VkClient(appId, appSecret);
            dynamic accessToken = service.GetAccessToken(code, callbackUri.ToString());

            dynamic token = accessToken.access_token;

            service.AuthenticateWith(token.ToString());

            // Claims
            dynamic result = service.Get("users.get", new
            {
                fields = "screen_name"
            });

            dynamic user = result.response[0];

            string acsNamespace = _settings.AcsNamespace;
            string wtRealm      = string.Format(WtRealm, acsNamespace);
            string wReply       = string.Format(WReply, acsNamespace);

            var requestMessage = new SignInRequestMessage(signinUri, wtRealm, wReply);

            // Add extracted claims
            var identity = new ClaimsIdentity(AuthenticationTypes.Federation);

            identity.AddClaim(new Claim(ClaimTypes.Name, string.Format("{0} {1}", user.first_name, user.last_name)));
            identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.uid.ToString()));
            identity.AddClaim(new Claim(VkClaims.VkToken, token.ToString()));

            var principal = new ClaimsPrincipal(identity);

            SignInResponseMessage responseMessage = FederatedPassiveSecurityTokenServiceOperations.ProcessSignInRequest(requestMessage, principal, this);

            responseMessage.Context = parameters["context"];

            return(responseMessage.WriteFormPost());
        }
Beispiel #12
0
 public async Task AddClientToFriends(VkClient client)
 {
     try
     {
         await VkApisManager.AddUserToFriends(client.VkAcc, client.ProfileVkId);
         await this.IncrementAddedFriends(client.VkAcc);
         await this.SetClientStatus(client.VkClientId, VkClient.Status.Ready);
     }
     catch (Exception e)
     {
         await this.ClearFriends(client.VkAcc);
     }
 }
Beispiel #13
0
        public void Setup()
        {
            var fakeLog    = new FakeLog();
            var vkApi      = new VkApi();
            var auth       = new VkAuthorizer(vkApi, fakeLog, "", "");
            var authResult = auth.TryAuthorize();

            if (!authResult)
            {
                throw new Exception("Не прошла авторизация");
            }
            vkClient = new VkClient(vkApi);
        }
Beispiel #14
0
        static public VkNet.Model.User GetVkUser(VkClient vkClient, VkAcc vkAcc = null)
        {
            if (vkAcc == null)
            {
                vkAcc = vkClient.VkAcc;
            }

            var api  = _getApi(vkAcc);
            var user = api.Users.Get(
                new long[] { vkClient.ProfileVkId },
                VkNet.Enums.Filters.ProfileFields.BirthDate | VkNet.Enums.Filters.ProfileFields.City)
                       .FirstOrDefault();

            return(user);
        }
        public async Task <IEnumerable <PostDTO> > GetUserPosts([FromBody] PostDTOModel postModel)
        {
            var postList = new List <PostDTO>();

            var vkPosts = await VkClient.GetUserPosts(new PostDTOModel { AccountId = 35340109, Token = postModel.Token });

            //var vkPosts2 = await VkClient.GetUserPosts(new PostDTOModel { AccountId = 68038156, Token = postModel.Token});
            var vkPosts3 = await VkClient.GetUserPosts(new PostDTOModel { AccountId = 55325758, Token = postModel.Token });

            var         usr       = VkClient.GetUser(postModel.Token, 35340109);
            var         usr2      = VkClient.GetUser(postModel.Token, 68038156);
            var         usr3      = VkClient.GetUser(postModel.Token, 55325758);
            List <Item> postList3 = new List <Item>();

            postList3 = postList3.Concat(vkPosts.Response.Items).ToList();
            // postList3.Concat(vkPosts2.Response.Items);
            postList3 = postList3.Concat(vkPosts3.Response.Items).ToList();
            //vkPosts.Response.Items.Add(vkPosts2.Response.Items);
            string[] arr = new string[] { };
            foreach (var pst in vkPosts.Response.Items)
            {
                postList.Add(new PostDTO
                {
                    Id        = pst.Id.ToString(),
                    FirstName = usr.FirstName,
                    LastName  = usr.LastName,
                    AvatarUrl = usr.PhotoUrl,
                    Text      = pst.Text,
                    Likes     = pst.Likes.Count,
                    Images    = arr
                });
            }
            foreach (var pst in vkPosts3.Response.Items)
            {
                postList.Add(new PostDTO
                {
                    Id        = pst.Id.ToString(),
                    FirstName = usr3.FirstName,
                    LastName  = usr3.LastName,
                    AvatarUrl = usr3.PhotoUrl,
                    Text      = pst.Text,
                    Likes     = pst.Likes.Count,
                    Images    = arr
                });
            }

            return(postList);
        }
        public List <AccountModel> Post([FromBody] SearchDTO search)
        {
            var user    = VkClient.Search(search);
            var dtoUser = new List <AccountModel>();

            dtoUser.Add(new AccountModel()
            {
                Id         = user.Id.ToString(),
                AccountUrl = user.Domain,
                FirstName  = user.FirstName,
                LastName   = user.LastName,
                PhotoUrl   = user.Photo400Orig.ToString(),
                Type       = SocialNetworkType.VK
            });
            return(dtoUser);
        }
Beispiel #17
0
        public Uri GetAutheticationUri(IDictionary <string, string> parameters, Uri callback)
        {
            var callbackUri = new UriBuilder(callback)
            {
                Query = string.Format("context={0}", parameters["wctx"])
            };

            // Pass your credentials to the service
            string appId     = _settings.VkApplicationId;
            string appSecret = _settings.VkApplicationSecret;

            var service = new VkClient(appId, appSecret);

            // Redirect to the OAuth Authorization URL
            return(service.GetAuthorizationUri(string.Empty, callbackUri.ToString()));
        }
Beispiel #18
0
        public async Task<List<InputMediaPhoto>> GetVkProfilePhotosMaxSizesAsync(VkClient vkClient)
        {
            VkNet.Utils.VkCollection<VkNet.Model.Attachments.Photo> Photos;

            Photos = await VkApisManager.GetProfilePhotosClient(vkClient);

            List<InputMediaPhoto> inputPhotos = new List<InputMediaPhoto>();

            foreach (var Photo in Photos)
            {
                var maxHeight = Photo.Sizes.Max(e => e.Height);
                var maxPhoto = Photo.Sizes.FirstOrDefault(e => e.Height == maxHeight);
                inputPhotos.Add(new InputMediaPhoto(new InputMedia(maxPhoto.Url.ToString())));
            }

            return inputPhotos;
        }
        public TokenData Get(IpData data)
        {
            // Try to validate token
            var service = new VkClient();

            service.AuthenticateWith(data.Token);

            dynamic result;

            try
            {
                result = service.Get("users.get", new
                {
                    fields = "screen_name"
                });
            }
            catch (Exception e)
            {
                throw new BadGatewayException(e);
            }

            if (result.error != null)
            {
                dynamic message = result.error.error_msg ?? string.Empty;
                throw new BadRequestException(message.ToString());
            }

            try
            {
                dynamic user = result.response[0];
                return(new TokenData
                {
                    IdentityProvider = ProviderType.Vk,
                    Name = string.Format("{0} {1}", user.first_name, user.last_name),
                    UserIdentifier = user.uid.ToString(),
                    Token = data.Token,
                    TokenSecret = data.TokenSecret
                });
            }
            catch (Exception e)
            {
                string message = string.Format("Unable to receive VK profile: {0}", e);
                throw new InternalServerErrorException(message);
            }
        }
Beispiel #20
0
        static public async Task <VkCollection <Photo> > GetProfilePhotosClient(VkClient vkClient, VkAcc vkAcc = null)
        {
            if (vkAcc == null)
            {
                vkAcc = vkClient.VkAcc;
            }
            var api    = _getApi(vkAcc);
            var Photos = await api.Photo.GetAsync(new PhotoGetParams()
            {
                OwnerId    = vkClient.ProfileVkId,
                AlbumId    = VkNet.Enums.SafetyEnums.PhotoAlbumType.Profile,
                Reversed   = true,
                Count      = 10,
                PhotoSizes = true,
            });

            return(Photos);
        }
Beispiel #21
0
 public VkClientTests()
 {
     _vkApiMethodProvider = new Mock<IVkMethodProvider>();
     _vkClient = new VkClient(_vkApiMethodProvider.Object);
 }
 public IViewComponentResult Invoke(VkClient vkClient)
 {
     return(View(vkClient));
 }
Beispiel #23
0
        internal static async Task <List <VkClient> > GetNewClients(
            VkAcc vkAcc, int Count, ModelScoutAPI api,
            ModelScoutDbContext context)
        {
            uint UpdatedCount = 0;
            uint Offset       = 0;

            List <VkClient> vkClients = new List <VkClient>();

            var vkApi = _getApi(vkAcc);

            if (!_isVkApiActive(vkApi))
            {
                return(null);
            }

            while (UpdatedCount < Count)
            {
                var clientsSearch = await vkApi.Users.SearchAsync(new UserSearchParams()
                {
                    City       = vkAcc.City,
                    Country    = vkAcc.Country,
                    AgeFrom    = (ushort)vkAcc.AgeFrom,
                    AgeTo      = (ushort)vkAcc.AgeTo,
                    Sex        = (VkNet.Enums.Sex)vkAcc.Sex,
                    BirthMonth = (ushort)vkAcc.BirthMonth,
                    BirthDay   = (ushort)vkAcc.BirthDay,
                    Online     = true,
                    HasPhoto   = true,
                    Count      = (uint)Count,
                    Offset     = Offset,
                });

                foreach (var clientSearch in clientsSearch)
                {
                    //BAD CODE
                    if (!context.VkClients.Any(e => e.ProfileVkId == clientSearch.Id) && clientSearch.IsClosed != true)
                    //BAD CODE
                    {
                        var vkClient = new VkClient()
                        {
                            ClientStatus = VkClient.Status.Unchecked,
                            VkAccId      = vkAcc.VkAccId,
                            ProfileVkId  = (int)clientSearch.Id
                        };
                        //BAD CODE
                        vkAcc.VkClients.Add(vkClient);
                        //BAD CODE
                        vkClients.Add(vkClient);
                        UpdatedCount++;
                    }
                }

                Offset += (uint)Count;

                if (clientsSearch.TotalCount < Offset)
                {
                    break;
                }
            }
            return(vkClients);
        }