fix: support authenticated video citation playback
This commit is contained in:
+3
-1
@@ -56,7 +56,9 @@ public class AihrKnowledgeResourceDownloadService {
|
||||
}
|
||||
response.setHeader("Cache-Control", "no-store");
|
||||
response.setHeader("Referrer-Policy", "no-referrer");
|
||||
ossService.download(ossId, response);
|
||||
// Browsers may probe media without a Range header first. Keep that response
|
||||
// inline and preserve the source MIME type so the video element can decode it.
|
||||
ossService.downloadRange(ossId, null, response);
|
||||
}
|
||||
|
||||
public void download(Long attachmentId, String ticket, String range, HttpServletResponse response) throws IOException {
|
||||
|
||||
+19
@@ -10,12 +10,31 @@ import org.redisson.api.RBucket;
|
||||
import org.redisson.api.RedissonClient;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@Tag("dev")
|
||||
class AihrKnowledgeResourceRangeTest {
|
||||
@Test
|
||||
void streamsInitialMediaRequestInlineWithDetectedMimeType() throws Exception {
|
||||
AihrKnowledgeQueryService query = mock(AihrKnowledgeQueryService.class);
|
||||
ISysOssService oss = mock(ISysOssService.class);
|
||||
RedissonClient redisson = mock(RedissonClient.class);
|
||||
@SuppressWarnings("unchecked") RBucket<Long> bucket = mock(RBucket.class);
|
||||
HttpServletResponse response = mock(HttpServletResponse.class);
|
||||
when(redisson.<Long>getBucket(anyString())).thenReturn(bucket);
|
||||
when(bucket.get()).thenReturn(777L);
|
||||
String ticket = "a".repeat(43);
|
||||
|
||||
new AihrKnowledgeResourceDownloadService(query, oss, redisson)
|
||||
.download(321L, ticket, response);
|
||||
|
||||
verify(oss).downloadRange(777L, null, response);
|
||||
verify(oss, never()).download(777L, response);
|
||||
}
|
||||
|
||||
@Test
|
||||
void forwardsAuthorizedRangeWithoutBufferingWholeObject() throws Exception {
|
||||
AihrKnowledgeQueryService query = mock(AihrKnowledgeQueryService.class);
|
||||
|
||||
Reference in New Issue
Block a user