private String getRanges(final List<Range> ranges) { StringBuilder rangesString = new StringBuilder(); int counter = 0; for (Range range : ranges) { rangesString.append(range.getFrom()).append("-").append(range.getTo()); if (++counter < ranges.size()) { rangesString.append(","); } } return rangesString.toString(); } }
/** * Returns computed range length. * * @param range * @return */ public long getRangeLength(final Range range) { return range.getTo() - range.getFrom() + 1; }
/** * {@inheritDoc} */ @Override public String serialize(final RangePartHeader input) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(DASH_DASH) .append(input.getBoundary()) .append(NEW_LINE) .append(Headers.HEADER_CONTENT_TYPE) .append(": ") .append(input.getContentType()) .append(NEW_LINE) .append(Headers.HEADER_CONTENT_RANGE) .append(": bytes ") .append(input.getRange().getFrom()) .append("-") .append(input.getRange().getTo()) .append("/") .append(input.getTotalLength()) .append(NEW_LINE) .append(NEW_LINE); return stringBuilder.toString(); }
private int appendRangeSlice(byte[] input, byte[] output, int destPos, Range range) { byte[] slice = Arrays.copyOfRange(input, (int) range.getFrom(), (int) range.getTo() + 1); System.arraycopy(slice, 0, output, destPos, slice.length); return slice.length; }
partHeadersLength += NEW_LINE.length() + partHeaderWithoutDigits + Long.toString(range.getFrom()).length() + Long.toString(range.getTo()).length() + Long.toString(totalLength).length();
@Test public void shouldParseMultipleValuesSpaceSeparated() throws MalformedInputException { RangeParser rangeParser = new RangeParser(); List<Range> rageList = rangeParser.parse("bytes=1-100, 200-301"); assertThat(rageList.size(), is(2)); assertThat(rageList.get(0).getFrom(), is(1L)); assertThat(rageList.get(0).getTo(), is(100L)); assertThat(rageList.get(1).getFrom(), is(200L)); assertThat(rageList.get(1).getTo(), is(301L)); }
@Test public void shouldParseMultipleValues() throws MalformedInputException { RangeParser rangeParser = new RangeParser(); List<Range> rageList = rangeParser.parse("bytes=1-100,200-301"); assertThat(rageList.size(), is(2)); assertThat(rageList.get(0).getFrom(), is(1L)); assertThat(rageList.get(0).getTo(), is(100L)); assertThat(rageList.get(1).getFrom(), is(200L)); assertThat(rageList.get(1).getTo(), is(301L)); }
@Test public void shouldParseBasicValue() throws MalformedInputException { RangeParser rangeParser = new RangeParser(); List<Range> rageList = rangeParser.parse("bytes=1-100"); assertThat(rageList.size(), is(1)); assertThat(rageList.get(0).getFrom(), is(1L)); assertThat(rageList.get(0).getTo(), is(100L)); }