예제 #1
0
 public async Task <AlbumSearchResult> AlbumSearchAsync(string artist, string album)
 {
     try {
         return(await _serviceClient.GetAsync <AlbumSearchResult>(_urlBuilder.BuildAlbumSearchUrl(artist, album)));
     }
     catch (Exception ex) {
         _logFactory.GetLogger(typeof(SearchService))
         .ErrorFormat(AlbumSearchErrorMessageFormat, artist, album, ex.Message);
         throw new SpotifyServiceException(
                   string.Format(AlbumSearchErrorMessageFormat, artist, album, ex.Message), ex);
     }
 }
예제 #2
0
        public async Task <bool> DownloadAttachment(AttachmentMold data)
        {
            try
            {
                //Тут надо убрать префикс получаемого файла
                var pref       = "attachment/";
                var attachment = await serviceClient.GetAsync(new GetAttachment { Id = data.Id.Replace(pref, string.Empty) });

                if (attachment == null)
                {
                    return(false);
                }

                var savePath     = Path.Combine(settings?.AttachmentDefaultPath, data.FileName);
                var saveFileInfo = new FileInfo(savePath);
                if (!saveFileInfo.Directory.Exists)
                {
                    saveFileInfo.Directory.Create();
                }

                if (!string.IsNullOrEmpty(savePath))
                {
                    await using (var fileStream = File.Create(savePath, (int)attachment.Length))
                    {
                        const int bufferSize = 4194304;
                        var       buffer     = new byte[bufferSize];
                        attachment.Seek(0, SeekOrigin.Begin);

                        while (attachment.Position < attachment.Length)
                        {
                            var read = await attachment.ReadAsync(buffer, 0, bufferSize);

                            await fileStream.WriteAsync(buffer, 0, read);
                        }

                        await fileStream.FlushAsync();
                    }
                }

                return(true);
            }
            catch (Exception e)
            {
                //TODO вывести ошибку в будущем
                return(false);
            }
        }
예제 #3
0
        public async Task Open(string userId)
        {
            var lastProfileId = ProfileId;

            if (lastProfileId == userId)
            {
                if (IsOpened)
                {
                    Close();
                }
            }
            else
            {
                ResetEditMode();
                UpdateProfileProps(await _serviceClient.GetAsync(new GetProfile {
                    UserId = userId
                }));

                IsOpened = true;
                IsOpenProfileEvent?.Invoke();
            }
        }
예제 #4
0
        /// <summary>
        ///     Finds users with matching usernames.
        /// </summary>
        /// <param name="username"> The username to search for. </param>
        /// <returns> Users matching the username search criteria. </returns>
		public async Task<IEnumerable<UserModel>> GetUsersWithUsername(string username)
        {
            return await _jsonClient.GetAsync<IEnumerable<UserModel>>($"/User/Search?username={username}");
        }
예제 #5
0
        public SettingsViewModel(IJsonServiceClient serviceClient)
        {
            ChatSettings = new UserChatSettings();

            LoginAuditCollection = new ObservableCollection <LoginAuditViewModel>();

            ContextMenuCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                IsContextMenu = !IsContextMenu;
                ContextMenuSettingsActiveEvent?.Invoke(IsContextMenu);
            });

            OpenSettingsCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                IsOpened = !IsOpened;
                CloseContextMenu();
                GetSettingsCommand.Execute(null);
                OpenSettingsActiveEvent?.Invoke(IsOpened);
            });

            GetSettingsCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                SetSelectedMenuItem(SelectedMenuItem.Settings);
                var settingsUser = await serviceClient.GetAsync(new GetMySettings());
                if (settingsUser.SendingMessageByEnterKey)
                {
                    TypeEnter = settingsUser.SendingMessageByEnterKey;
                    TypeEnterEvent?.Invoke(TypeEnter);
                }
            });

            SaveSettingsCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                var settingsUser = await serviceClient.PostAsync(new SetSettings {
                    SendingMessageByEnterKey = TypeEnter
                });
                ChatSettings = settingsUser;
            });

            MorePointerPressedCommand = ReactiveCommand.Create <object>(obj => { IsContextMenu = false; });

            GetHistoryLoginAuditCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                SetSelectedMenuItem(SelectedMenuItem.Audit);
                LoginAuditCollection.Clear();
                LoginHistoryCollection = await serviceClient.GetAsync(new GetLoginAudit());
                foreach (var item in LoginHistoryCollection.History.Take(100))
                {
                    LoginAuditView = new LoginAuditViewModel
                    {
                        Id                = item.Id,
                        IpAddress         = item.IpAddress,
                        OperatingSystem   = item.OperatingSystem,
                        NameVersionClient = item.NameVersionClient,
                        DateOfEntry       = item.DateOfEntry.Date == DateTime.Now.Date
                            ? $"{item.DateOfEntry:HH:mm}"
                            : $"{item.DateOfEntry:dd.MM.yyyy HH:mm}",
                        IsActive = item.SessionId == LoginHistoryCollection.UniqueSessionUser ? "Активный" : ""
                    };
                    LoginAuditCollection.Add(LoginAuditView);
                }
            });
        }