public EStreamingSessionType Identify(SessionBrokerModel model) { foreach (var identifier in _userTypeIdentifiers) { var result = identifier.GetSessionType(model); if (result != EStreamingSessionType.Unkown) { return(result); } } return(EStreamingSessionType.Unkown); }
public EStreamingSessionType GetSessionType(SessionBrokerModel model) { var regToken = model.RegistrationToken; if (regToken != null) { if (regToken.StartsWith("Unicorn", StringComparison.Ordinal)) { return(EStreamingSessionType.Paid); } } return(EStreamingSessionType.Unkown); }
public StreamSession InitializeSession(SessionBrokerModel model) { var closestChunk = _chunkCollector.GetClosestChunk( new ChunksCollectorModelByTime { Channel = model.Channel, HlsListSize = model.ListSize, RequestedTime = model.RequiredTime } ); return(new StreamSession { Channel = model.Channel, HlsListSize = model.ListSize, IP = model.IP, UserAgent = model.UserAgent, DisplayContent = model.DisplayContent, MediaSeq = 0, DiscontSeq = 0, LastFilePath = closestChunk.fullPath }); }
private async Task <IActionResult> StreamInternalAsync( string channel, int listSize = 5, string timeStr = null, int timeShiftMills = 0, bool displayContent = false, string registrationToken = null) { DateTime requiredTime; if (timeStr == null) { requiredTime = DateTime.Now; } else { try { requiredTime = JsonConvert.DeserializeObject <DateTime>(timeStr); } catch (JsonReaderException) { return(View("InvalidTimeFormat")); } } if (timeShiftMills != 0) { requiredTime = requiredTime.AddMilliseconds(-timeShiftMills); } StreamSession session; var sessionBrokerModel = new SessionBrokerModel { Channel = channel, ListSize = listSize, RequiredTime = requiredTime, DisplayContent = displayContent, RegistrationToken = registrationToken, IP = HttpContext.Connection.RemoteIpAddress.ToString(), UserAgent = HttpContext.Request.Headers[HeaderNames.UserAgent] }; try { session = _sessionBroker.InitializeSession(sessionBrokerModel); } catch (ChunkCollectorException e) { return(Content(e.Message)); } var token = _tokenBroker.GenerateToken( session, _sessionCfg.TokenSALT); try { await _cache.SetObjAsync( token, session, GetSessionExpiration()); } catch (Exception) { return(View("RedisConnectionException")); } return(RedirectToAction("TokenizedStreamAsync", new { token })); }
public EStreamingSessionType GetSessionType(SessionBrokerModel model) { return(EStreamingSessionType.Guest); }