public ActionResult GetViewToken(string email) { if (string.IsNullOrEmpty(email) || !email.MatchEmail()) { return(ResultData(null, false, "请输入正确的邮箱!")); } if (RedisHelper.Exists("get:" + email)) { RedisHelper.Expire("get:" + email, 120); return(ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!")); } if (!BroadcastService.Any(b => b.Email.Equals(email) && b.SubscribeType == SubscribeType.ArticleToken)) { return(ResultData(null, false, "您目前没有权限访问这个链接,请联系站长开通访问权限!")); } var token = SnowFlake.GetInstance().GetUniqueShortId(6); RedisHelper.Set("token:" + email, token, 86400); BackgroundJob.Enqueue(() => CommonHelper.SendMail(CommonHelper.SystemSettings["Domain"] + "博客访问验证码", $"{CommonHelper.SystemSettings["Domain"]}本次验证码是:<span style='color:red'>{token}</span>,有效期为24h,请按时使用!", email)); RedisHelper.Set("get:" + email, token, 120); return(ResultData(null)); }
public List <BroadcastCustomModel> Notifications(int id, string apikey) { using (BroadcastService service = new BroadcastService()) { List <BroadcastCustomModel> resp = new List <BroadcastCustomModel>(); List <Broadcast> broadcasts = service.List(new PagingModel(), new CustomSearchModel()); if (broadcasts.NullableAny()) { foreach (Broadcast b in broadcasts.OrderByDescending(o => o.CreatedOn)) { if (b.Status == Status.Inactive.GetIntValue()) { continue; } resp.Add(new BroadcastCustomModel() { Id = b.Id, Message = b.Message, CreatedOn = b.CreatedOn, Status = b.UserBroadcasts.Any(ub => ub.UserId == id) ? 1 : 0, }); } } return(resp); } }
public async Task <ActionResult> Save(Broadcast model) { model.UpdateTime = DateTime.Now; var b = await BroadcastService.AddOrUpdateSavedAsync(c => c.Id, model) > 0; return(ResultData(model, b, b ? "更新订阅成功!" : "更新订阅失败!")); }
public void Initialize_WithNullAddress() { var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); Assert.Throws <ArgumentNullException>(() => broadcastService.Initialize(null)); }
public void Initialize_WithReadyToUseIpAddress() { var calledCreateWithAddress = false; var calledCreateWithAddressAndPort = false; _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)) .Returns((IPAddress ipAddress) => Equals(ipAddress, _ipAddress)); _broadcastFactoryMock.Setup(factory => factory.Create(It.IsAny <IPAddress>())) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddress = true); _broadcastFactoryMock.Setup(factory => factory.Create(It.IsAny <IPAddress>(), It.IsAny <int>())) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddressAndPort = true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var result = broadcastService.Initialize(_ipAddress); Assert.True(result); Assert.True(broadcastService.IsReady); Assert.True(calledCreateWithAddress ^ calledCreateWithAddressAndPort); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress), Times.AtMostOnce); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress, 0), Times.AtMostOnce); }
public ActionResult Pass(int id) { Post post = PostService.GetById(id); post.Status = Status.Pended; post.ModifyDate = DateTime.Now; post.PostDate = DateTime.Now; bool b = PostService.UpdateEntitySaved(post); if (!b) { return(ResultData(null, false, "审核失败!")); } if ("false" == CommonHelper.SystemSettings["DisabledEmailBroadcast"]) { var cast = BroadcastService.LoadEntities(c => c.Status == Status.Subscribed).ToList(); string link = Request.Scheme + "://" + Request.Host + "/" + id; cast.ForEach(c => { var ts = DateTime.Now.GetTotalMilliseconds(); string content = System.IO.File.ReadAllText(_hostingEnvironment.WebRootPath + "/template/broadcast.html").Replace("{{link}}", link + "?email=" + c.Email).Replace("{{time}}", post.ModifyDate.ToString("yyyy-MM-dd HH:mm:ss")).Replace("{{title}}", post.Title).Replace("{{author}}", post.Author).Replace("{{content}}", post.Content.RemoveHtmlTag(150)).Replace("{{cancel}}", Url.Action("Subscribe", "Subscribe", new { c.Email, act = "cancel", validate = c.ValidateCode, timespan = ts, hash = (c.Email + "cancel" + c.ValidateCode + ts).AESEncrypt(AppConfig.BaiduAK) }, Request.Scheme)); BackgroundJob.Enqueue(() => CommonHelper.SendMail(CommonHelper.SystemSettings["Title"] + "博客有新文章发布了", content, c.Email)); }); } return(ResultData(null, true, "审核通过!")); }
public async Task ReceiveAsync_ReceiveData() { var bytesToReceive = RandomizeByteSequence(1024); var receivedData = new List <byte[]>(); _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); _broadcastImplMock.SetupSequence(broadcast => broadcast.ReceiveAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(bytesToReceive).ReturnsAsync(() => { Task.Delay(5000).Wait(); return(Array.Empty <byte>()); }); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.DataReceived += (_, args) => receivedData.Add(args.Data); broadcastService.Initialize(_ipAddress); var stopAfterDelay = Task.Run(() => { Task.Delay(20).Wait(); broadcastService.CancelReceive(); }); var receiving = broadcastService.StartReceiveAsync(); await Task.WhenAll(stopAfterDelay, receiving); Assert.Single(receivedData); Assert.True(bytesToReceive.SequenceEqual(receivedData.First())); }
public ActionResult UpdateNotification(BroadcastViewModel model) { using (BroadcastService bservice = new BroadcastService()) using (UserBroadcastService ubservice = new UserBroadcastService()) { Broadcast b = bservice.GetById(model.Id); if (b == null) { Notify("Sorry, the requested resource could not be found. Please try again", NotificationType.Error); return(PartialView("_AccessDenied")); } if (b.UserBroadcasts.Any(ub => ub.UserId == CurrentUser.Id)) { int ubid = b.UserBroadcasts.FirstOrDefault(ub => ub.UserId == CurrentUser.Id).Id; ubservice.Query($"DELETE FROM [dbo].[UserBroadcast] WHERE [Id]={ubid};"); } else { ubservice.Create(new UserBroadcast() { BroadcastId = b.Id, UserId = CurrentUser.Id, }); } Notify("The selected Notification was successfully updated.", NotificationType.Success); return(MyNotifications(new PagingModel(), new CustomSearchModel())); } }
public void Initialize_WithReadyToUseIpAddressTwice() { var calledCreateWithAddress = false; var calledCreateWithAddressAndPort = false; _broadcastImplMock.Setup(broadcast => broadcast.LocalEndPoint).Returns(new IPEndPoint(_ipAddress, 0)); _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); _broadcastFactoryMock.Setup(factory => factory.Create(_ipAddress)) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddress = true); _broadcastFactoryMock.Setup(factory => factory.Create(_ipAddress, It.IsAny <int>())) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddressAndPort = true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var firstInitResult = broadcastService.Initialize(_ipAddress); var secondInitResult = broadcastService.Initialize(_ipAddress); Assert.True(firstInitResult); Assert.True(secondInitResult); Assert.True(broadcastService.IsReady); Assert.True(calledCreateWithAddress ^ calledCreateWithAddressAndPort); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress), Times.AtMostOnce); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress, 0), Times.AtMostOnce); }
public ScopedProcessingService(BroadcastService broadcastService, IOptionsMonitor <ServiceOptions> optionsAccessor, IHubContext <UpdateHub, IUpdate> updateHub, ILogger <ScopedProcessingService> logger) { _broadcastService = broadcastService; _options = optionsAccessor.CurrentValue; _updateHub = updateHub; _logger = logger; _lastResult = new List <Broadcast>(); }
public void CancelReceive_ThrowOnDisposed() { var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Dispose(); Assert.Throws <ObjectDisposedException>(() => broadcastService.CancelReceive()); }
public void Initialize_AfterDispose() { var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Dispose(); Assert.Throws <ObjectDisposedException>(() => broadcastService.Initialize(IPAddress.Any)); }
public async Task GetRecipientsLogUnitTest_ShouldSucceed() { var client = BuildSenderSubstitute_ReturnsSuccessStatus(); var broadcastService = new BroadcastService(client); var logger = Substitute.For <ILogger>(); var task = broadcastService.GetRecipientsAsync(logger, FirstListName); await TestInfoLogsWithThreeArgs <string, int, int>(task, 2, logger); }
public async Task DeleteDistributionListLogUnitTest_ShouldSucceed() { var client = BuildSenderSubstitute_ReturnsSuccessStatus(); var broadcastService = new BroadcastService(client); var logger = Substitute.For <ILogger>(); var task = broadcastService.DeleteDistributionListAsync(FirstListName, CancellationToken.None, logger); await TestInfoLogsWithOneArg <string>(task, 2, logger); }
public async Task SendBroadcastLogUnitTest_ShouldSucceed() { var client = BuildSenderSubstitute_ReturnsSuccessStatus(); var broadcastService = new BroadcastService(client); var logger = Substitute.For <ILogger>(); var task = broadcastService.SendMessageAsync(FirstListName, PlainText.Parse("UnitTests"), logger); await TestInfoLogsWithTwoArgs <string, Document>(task, 2, logger); }
public async Task SendAsync_ThrowOnUninitialized() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var data = RandomizeByteSequence(1024); await Assert.ThrowsAsync <ServiceNotInitializedException>(() => broadcastService.SendAsync(data)); }
public async Task DeleteRecipientLogUnitTest_ShouldSucceed() { var identity = Identity.Parse(RecipientIdentity); var client = BuildSenderSubstitute_ReturnsSuccessStatus(); var broadcastService = new BroadcastService(client); var logger = Substitute.For <ILogger>(); var task = broadcastService.DeleteRecipientAsync(FirstListName, identity, CancellationToken.None, logger); await TestInfoLogsWithTwoArgs <Identity, string>(task, 2, logger); }
public async Task ReceiveAsync_ThrowOnNotInitialized() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); await Assert.ThrowsAsync <ServiceNotInitializedException>(() => broadcastService.StartReceiveAsync()); Assert.False(broadcastService.IsReceiving); }
internal ProjectItemServiceHandler() : base() { //TableName = "ProjectItem"; //KeyName = "Key"; Broadcaster = new BroadcastService(); materials = new ProjectItemMaterialServiceHandler(); categories = new ProjectItemsCategoryServiceHandler(); }
private void FormMain_Load(object sender, EventArgs e) { DoubleBuffered = true; _stateManager.Init(); _tempFileManager.Init(); _tcpIpFileManager.Init(); _tcpIpTcpServer = TcpServer.GetInstance(); _udpReceiver = UdpReceiver.GetInstance(); BroadcastService.GetInstance(); }
public ActionResult Change(int id) { Broadcast cast = BroadcastService.GetById(id); Status status = cast.Status; cast.UpdateTime = DateTime.Now; cast.Status = status == Status.Subscribed ? Status.Subscribing : Status.Subscribed; bool b = BroadcastService.SaveChanges() > 0; return(ResultData(null, b, status == Status.Subscribed ? "订阅成功" : "取消订阅成功!")); }
public BroadcastServiceTests() { _communityRepository = new CommunityRepository(); _communityRepositoryMock = new Mock <ICommunityRepository>(); _communityRepositoryMock.Setup(m => m.GetBroadcastHtml(It.IsAny <int>())) .Returns((int appId) => { return(Task.FromResult(Resources.ResourceManager.GetString("BroadcastsHtml" + appId))); }); _targetReal = new BroadcastService(_communityRepository); _target = new BroadcastService(_communityRepositoryMock.Object); }
public ActionResult GetPageData(int page = 1, int size = 10, string search = "") { Expression <Func <Broadcast, bool> > where = b => true; if (!string.IsNullOrEmpty(search)) { where = where.And(b => b.Email.Contains(search)); } var list = BroadcastService.GetPagesNoTracking(page, size, @where, b => b.UpdateTime, false); return(Ok(list)); }
private void FormMain_Load(object sender, EventArgs e) { DoubleBuffered = true; _stateManager.Init(); _tempFileManager.Init(); _tcpIpFileManager.Init(); _tcpIpServer = Server.GetInstance(); _tcpIpServer.StartListen(); BroadcastService.GetInstance().StartBroadcast(); }
public MainWindowViewModel(GitService gitService, BroadcastService broadcastService) { this.gitService = gitService; this.broadcastService = broadcastService; this.Repos = new BindableCollection <RepoViewModel>(); this.CurrentTab = "Browse"; this.DisplayName = "ZeroGit"; this.StatusText = "Drop Project Folder Here to Share Repository"; }
private void InitializeServiceHost() { BroadcastService serviceInstance = new BroadcastService(); _serviceHost = new ServiceHost(serviceInstance); serviceInstance.ClientConnectionNotification += new EventHandler<ServiceNotificationEventArgs>(OnClientConnectionNotification); _serviceHost.Opening += OnServiceHostOpening; _serviceHost.Opened += OnServiceHostOpened; _serviceHost.Faulted += OnServiceHostFaulted; _serviceHost.Closing += OnServiceHostClosing; _serviceHost.Closed += OnServiceHostClosed; }
private async Task Send_Broadcast_UnitTest(string listName) { var sender = Substitute.For <ISender>(); var calls = 0; sender.When(x => x.SendMessageAsync(Arg.Any <Message>(), Arg.Any <CancellationToken>())).Do(x => calls++); var broadcastService = new BroadcastService(sender); await broadcastService.SendMessageAsync(listName, PlainText.Parse("UnitTests"), _logger); calls.ShouldBeGreaterThan(0); }
public void Initialize_WithNotReadyToUseIpAddress() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(It.IsAny <IPAddress>())).Returns(false); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var result = broadcastService.Initialize(_ipAddress); Assert.False(result); Assert.False(broadcastService.IsReady); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress), Times.Never); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress, It.IsAny <int>()), Times.Never); }
public ActionResult GetPageData(int page = 1, int size = 10, string search = "") { Expression <Func <Broadcast, bool> > where = b => true; if (!string.IsNullOrEmpty(search)) { where = where.And(b => b.Email.Contains(search)); } var list = BroadcastService.GetPagesFromCache(page, size, out var total, @where, b => b.UpdateTime, false).ToList(); var pageCount = Math.Ceiling(total * 1.0 / size).ToInt32(); return(Ok(new PageDataModel(list, pageCount, total))); }
public ActionResult Subscribe(string email) { if (bool.TryParse(CommonHelper.SystemSettings["DisabledEmailBroadcast"], out var disabled) && disabled) { return(ResultData(null, false, CommonHelper.SystemSettings["DisabledEmailBroadcastTip"])); } Broadcast entity = BroadcastService.GetFirstEntity(b => b.Email.Equals(email, StringComparison.InvariantCultureIgnoreCase)); var guid = Guid.NewGuid(); if (entity != null) { if (entity.Status == Status.Subscribed) { return(ResultData(null, false, "您已经订阅过了,无需再重复订阅!")); } entity.ValidateCode = guid.ToString(); entity.UpdateTime = DateTime.Now; BroadcastService.UpdateEntity(entity); } else { BroadcastService.AddEntity(new Broadcast() { Email = email, ValidateCode = guid.ToString(), Status = Status.Subscribing, UpdateTime = DateTime.Now }); } try { var ts = DateTime.Now.GetTotalMilliseconds(); string link = Url.Action("Subscribe", "Subscribe", new { email, act = "verify", validate = guid, timespan = ts, hash = (email + "verify" + guid + ts).AESEncrypt(AppConfig.BaiduAK) }, "http"); BackgroundJob.Enqueue(() => CommonHelper.SendMail(CommonHelper.SystemSettings["Title"] + "博客订阅:" + Request.Host, System.IO.File.ReadAllText(_hostingEnvironment.WebRootPath + "/template/subscribe.html").Replace("{{link}}", link), email)); BroadcastService.SaveChanges(); return(ResultData(null, message: "订阅成功,请打开您的邮箱确认操作后便可收到订阅更新!")); } catch (Exception e) { LogManager.Error(GetType(), e); return(ResultData(null, false, "订阅失败,这可能是服务器出现了一点问题,去留言板给站长反馈吧!")); } }
public async void CancelReceive() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(It.IsAny <IPAddress>())).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Initialize(_ipAddress); var receiveTask = broadcastService.StartReceiveAsync(); broadcastService.CancelReceive(); await receiveTask; Assert.False(broadcastService.IsReceiving); }
private StreamWriter writer; // nu objekt data og ikke lokale - så de kan bruges på tværs af metoder #endregion Fields #region Constructors public ClientHandler(Server server, Socket clientSocket, BroadcastService broadcastService) { this.server = server; this.clientSocket = clientSocket; this.broadcastService = broadcastService; }