public User(IEventStream stream, IEventPublisher publisher, IDeezerApi deezerApi, ISongRepository songRepository, IPlaylistRepository playlistRepository, int songByPlaylist) { _publisher = publisher; _decision = new Decision(stream); _deezerApi = deezerApi; _songRepository = songRepository; _playlistRepository = playlistRepository; _songByPlaylist = songByPlaylist; Playlist = Playlist.Empty; Restore(stream); }
public static User Create(IEventStream stream, IEventPublisher publisher, IDeezerApi deezerApi, ISongRepository songRepository, IPlaylistRepository playlistRepository, string email, string nickname, string userId, string accessToken, int songSize = 1) { var identity = Identity.Parse(email, nickname, userId, accessToken); var user = new User(stream, publisher, deezerApi, songRepository, playlistRepository, songSize) { Identity = identity }; publisher.Publish(new UserCreated(identity)); return(user); }
public DatabaseSong(IProvider provider, IDeezerApi deezerApi) { _provider = provider; _deezerApi = deezerApi; }
public HomeModule(IDeezerApi deezerApi, ISongRepository songRepository, IPlaylistRepository playlistRepository, Environment environment, IMetric metric) { _deezerApi = deezerApi; _songRepository = songRepository; _playlistRepository = playlistRepository; _environment = environment; _metric = metric; var eventStream = new MemoryEventStream(); var eventPublisher = new EventBus(eventStream); eventPublisher.Subscribe(new PlaylistHandler(playlistRepository)); Get["/"] = _ => { using (var timer = _metric.Timer("home")) { var model = new { appid = _environment.AppId, channel = _environment.Channel }; return(View["index", model]); } }; Get["/channel"] = _ => { using (var timer = _metric.Timer("channel")) { var cacheExpire = 60 * 60 * 24 * 365; return(View["channel"] .WithHeader("Pragma", "public") .WithHeader("Cache-Control", $"maxage={cacheExpire}") .WithHeader("Expires", DateTime.Now.AddMinutes(cacheExpire).ToString("F"))); } }; Post["/login"] = _ => { using (var timer = _metric.Timer("createplaylist")) { var model = this.Bind <LoginViewModel>(); var user = User.Create(eventStream, eventPublisher, _deezerApi, _songRepository, _playlistRepository, model.Email, model.Nickname, model.UserId, model.AccessToken, _environment.Size); user.AddPlaylist(model.PlaylistName); Console.WriteLine(user.Playlist.PlaylistId.Value); return(Response.AsJson(new { playlistCreated = !user.Playlist.PlaylistId.IsEmpty })); } }; Get["/canCreatePlaylist/{userId}"] = parameters => { using (var timer = _metric.Timer("hasplaylist")) { var userId = UserId.Parse((string)parameters.userId); var canCreatePlaylist = _playlistRepository .CanCreatePlaylist(userId, DateTime.UtcNow.AddDays(-1)); return(Response.AsJson(new { canCreatePlaylist })); } }; }
public AdminModule(IAdminRepository adminRepository, IHmacProvider hmacProvider, IRequest request, DatabaseSong dbsong, DatabaseDomain dbDomain, IDeezerApi deezerApi, IRadioSongRepository radioSongRepository) : base("admin") { this.RequiresAuthentication(); Get["/"] = _ => View["index"]; Get["/AddUser"] = _ => View["addUser"]; Post["/addUser"] = parameter => { var model = this.Bind <AddUserViewModel>(); if (!adminRepository.Exists(model.Login)) { adminRepository .Add( model.Login, hmacProvider.GenerateHmac(model.Password)); } return(Response.AsRedirect("/admin")); }; Get["/GetCoordinate"] = _ => { var hackManager = new HackManager(request); var flattenAsDateIp = File.ReadAllLines("/var/log/auth.log").Select(x => { var dateIp = DateIpParsor.Line(x); return(dateIp); }) .Where(x => !x.IsEmpty) .GroupBy(x => new { x.Date, x.Ip }) .Select(x => DateIp.Create(x.Key.Date, x.Key.Ip)) .ToList(); var localizations = hackManager.GetLocalization(flattenAsDateIp); return(Response.AsJson(localizations)); }; Get["GenerateSong"] = _ => { dbsong.Create(); var playlistIds = deezerApi .GetPlaylistIdsByUserId( "frKtbRGI9G18kljXooH4oQ0XbmntBD7oXeKBVBcVKIyjMMSDle0", UserId.Parse("4934039"), s => s.ToLower().Contains("djam")); foreach (var playlistId in playlistIds) { var songs = deezerApi.GetSongsByPlaylistId("frKtbRGI9G18kljXooH4oQ0XbmntBD7oXeKBVBcVKIyjMMSDle0", playlistId); foreach (var deezerSong in songs) { if (!radioSongRepository.SongExists(deezerSong.Id)) { Console.WriteLine(deezerSong.Id); radioSongRepository.Add(deezerSong.Id, "NUSED", deezerSong.Title, deezerSong.Artist); } } } return("ok"); }; Get["GenerateDomain"] = _ => { dbDomain.Create(); dbsong.Create(); return("ok"); }; }
public RadioSongHandler(IRadioSongRepository radioSongRepository, IDeezerApi deezerApi) { _radioSongRepository = radioSongRepository; _deezerApi = deezerApi; }