public Task <ActionResult <string> > Get(string room, [FromQuery] StreamQuery query = null) { if (query == null) { query = new StreamQuery(); } return(HandleException(async() => (await GetStreamResult(room, query)).data)); }
protected async Task <StreamResult> GetStreamResult(string room, StreamQuery query = null) { //This will throw an exception if there's no GetItem association, that should be good enough. if (query?.readonlykey == true) { room = readonlyNames.GetItem(room); } if (!IsRoomAcceptable(room)) { throw new InvalidOperationException("Room name has invalid characters! Try something simpler!"); } var s = rooms.GetStream(room); var r = readonlyNames.GetLink(room); var result = new StreamResult() { limit = rooms.Config.StreamDataLimit, used = s.Data.Length, readonlykey = r, signalled = 0 }; if (query != null) { if (query.nonblocking) { result.data = rooms.GetData(s, query.start, query.count); } else { var data = await rooms.GetDataWhenReady(s, query.start, query.count); result.data = data.Data; if (data.SignalData != null) { result.signalled = data.SignalData.ListenersBeforeSignal; } } } return(result); }
protected StreamQuery CreateDownloadQuery() { var downloadQuery = new StreamQuery(Client).Uri(Item.GetObjectUri()).Action("Download"); if (Config != null && Config.RangeRequest != null) { if (!Config.RangeRequest.End.HasValue) { downloadQuery.AddHeader("Range", string.Format("bytes={0}", Config.RangeRequest.Begin.GetValueOrDefault())); } else { downloadQuery.AddHeader("Range", string.Format("bytes={0}-{1}", Config.RangeRequest.Begin.GetValueOrDefault(), Config.RangeRequest.End.GetValueOrDefault())); } } return(downloadQuery as StreamQuery); }
protected StreamQuery CreateDownloadQuery() { var downloadQuery = new StreamQuery(Client).Uri(Item.GetObjectUri()).Action("Download"); if (Config != null && Config.RangeRequest != null) { if (!Config.RangeRequest.End.HasValue) { downloadQuery.AddHeader("Range", string.Format("bytes={0}", Config.RangeRequest.Begin.GetValueOrDefault())); } else { downloadQuery.AddHeader("Range", string.Format("bytes={0}-{1}", Config.RangeRequest.Begin.GetValueOrDefault(), Config.RangeRequest.End.GetValueOrDefault())); } } return downloadQuery as StreamQuery; }
public async Task <ActionResult <StreamResult> > GetJson(string room, [FromQuery] StreamQuery query = null) { return(await HandleException(async() => await GetStreamResult(room, query))); }