Пример #1
0
        public override async Task Post(Post post)
        {
            try {
                var vkClient = new VkApi();
                vkClient.Authorize(new ApiAuthParams {
                    ApplicationId = _appId,
                    AccessToken   = _accessToken,
                    Login         = _login,
                    Password      = _password,
                    Settings      = Settings.FromJsonString("wall,photos")
                });

                UploadServerInfo uploadServerInfo = await vkClient.Photo.GetWallUploadServerAsync();

                string uploadedFileJson = "";
                using (var client = new HttpClient()) {
                    var    requestContent = new MultipartFormDataContent();
                    byte[] data           = File.ReadAllBytes(post.PathToImageToAttach);
                    var    content        = new ByteArrayContent(data);
                    content.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
                    requestContent.Add(content, "file", $"file.{Path.GetExtension(post.PathToImageToAttach)}");

                    var response = await client.PostAsync(uploadServerInfo.UploadUrl, requestContent);

                    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);                     // https://stackoverflow.com/questions/33579661/encoding-getencoding-cant-work-in-uwp-app
                    uploadedFileJson = await response.Content.ReadAsStringAsync();
                }

                Photo[] image = vkClient.Photo.SaveWallPhoto(uploadedFileJson, (ulong)uploadServerInfo.UserId).ToArray();

                var wallPost = new WallPostParams();
                wallPost.Message = post.MultilineText
                                   + Environment.NewLine
                                   + "#"
                                   + string.Join(" #", post.Hashtags)
                                   + Environment.NewLine;
                wallPost.Attachments = image;

                vkClient.Wall.Post(wallPost);

                vkClient.Dispose();
            } catch (Exception ex) {
                Console.WriteLine($"vk> {ex.ToString()}");
                ;
            }
        }
Пример #2
0
 public void Dispose()
 {
     longPollClient?.Dispose();
     api?.Dispose();
     WebApi.Dispose();
 }
Пример #3
0
 public void Dispose()
 {
     _vkApi.Dispose();
 }
Пример #4
0
 public void Dispose()
 {
     _groupApi?.Dispose();
     _adminApi?.Dispose();
 }
Пример #5
0
 public void Dispose()
 {
     api.Dispose();
 }