use of okio.BufferedSource in project Store by NYTimes.
the class MoshiSourceParserTest method testSourceParser.
@Test
public void testSourceParser() throws Exception {
Parser<BufferedSource, Foo> parser = MoshiParserFactory.createSourceParser(Foo.class);
Store<Foo, BarCode> store = ParsingStoreBuilder.<BufferedSource, Foo>builder().persister(persister).fetcher(fetcher).parser(parser).open();
Foo result = store.get(barCode).toBlocking().first();
assertEquals(result.number, 123);
assertEquals(result.string, "abc");
assertEquals(result.bars.size(), 2);
assertEquals(result.bars.get(0).string, "def");
assertEquals(result.bars.get(1).string, "ghi");
verify(fetcher, times(1)).fetch(barCode);
}
use of okio.BufferedSource in project Store by NYTimes.
the class SourcePersisterTest method readExists.
@Test
public void readExists() throws FileNotFoundException {
when(fileSystem.exists(simple.toString())).thenReturn(true);
when(fileSystem.read(simple.toString())).thenReturn(bufferedSource);
BufferedSource returnedValue = sourcePersister.read(simple).toBlocking().single();
assertThat(returnedValue).isEqualTo(bufferedSource);
}
use of okio.BufferedSource in project Store by NYTimes.
the class StoreRefreshWhenStaleTest method diskWasNotRefreshedWhenFreshRecord.
@Test
public void diskWasNotRefreshedWhenFreshRecord() {
when(fetcher.fetch(barCode)).thenReturn(Observable.just(network1));
when(persister.read(barCode)).thenReturn(//get should return from disk
Observable.just(disk1)).thenReturn(//backfill should read from disk again
Observable.just(disk2));
when(persister.getRecordState(barCode)).thenReturn(RecordState.FRESH);
when(persister.write(barCode, network1)).thenReturn(Observable.just(true));
BufferedSource result = store.get(barCode).test().awaitTerminalEvent().getOnNextEvents().get(0);
assertThat(result).isEqualTo(disk1);
verify(fetcher, times(0)).fetch(barCode);
verify(persister, times(1)).getRecordState(barCode);
store.clear(barCode);
result = store.get(barCode).test().awaitTerminalEvent().getOnNextEvents().get(0);
assertThat(result).isEqualTo(disk2);
verify(fetcher, times(0)).fetch(barCode);
verify(persister, times(2)).getRecordState(barCode);
}
use of okio.BufferedSource in project Store by NYTimes.
the class MoshiSourceParserTest method setUp.
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
BufferedSource bufferedSource = source(sourceString);
assertNotNull(bufferedSource);
when(fetcher.fetch(barCode)).thenReturn(Observable.just(bufferedSource));
when(persister.read(barCode)).thenReturn(Observable.<BufferedSource>empty()).thenReturn(Observable.just(bufferedSource));
when(persister.write(barCode, bufferedSource)).thenReturn(Observable.just(true));
}
use of okio.BufferedSource in project chuck by jgilfelt.
the class ChuckInterceptor method intercept.
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
RequestBody requestBody = request.body();
boolean hasRequestBody = requestBody != null;
HttpTransaction transaction = new HttpTransaction();
transaction.setRequestDate(new Date());
transaction.setMethod(request.method());
transaction.setUrl(request.url().toString());
transaction.setRequestHeaders(request.headers());
if (hasRequestBody) {
if (requestBody.contentType() != null) {
transaction.setRequestContentType(requestBody.contentType().toString());
}
if (requestBody.contentLength() != -1) {
transaction.setRequestContentLength(requestBody.contentLength());
}
}
transaction.setRequestBodyIsPlainText(!bodyHasUnsupportedEncoding(request.headers()));
if (hasRequestBody && transaction.requestBodyIsPlainText()) {
BufferedSource source = getNativeSource(new Buffer(), bodyGzipped(request.headers()));
Buffer buffer = source.buffer();
requestBody.writeTo(buffer);
Charset charset = UTF8;
MediaType contentType = requestBody.contentType();
if (contentType != null) {
charset = contentType.charset(UTF8);
}
if (isPlaintext(buffer)) {
transaction.setRequestBody(readFromBuffer(buffer, charset));
} else {
transaction.setResponseBodyIsPlainText(false);
}
}
Uri transactionUri = create(transaction);
long startNs = System.nanoTime();
Response response;
try {
response = chain.proceed(request);
} catch (Exception e) {
transaction.setError(e.toString());
update(transaction, transactionUri);
throw e;
}
long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);
ResponseBody responseBody = response.body();
// includes headers added later in the chain
transaction.setRequestHeaders(response.request().headers());
transaction.setResponseDate(new Date());
transaction.setTookMs(tookMs);
transaction.setProtocol(response.protocol().toString());
transaction.setResponseCode(response.code());
transaction.setResponseMessage(response.message());
transaction.setResponseContentLength(responseBody.contentLength());
if (responseBody.contentType() != null) {
transaction.setResponseContentType(responseBody.contentType().toString());
}
transaction.setResponseHeaders(response.headers());
transaction.setResponseBodyIsPlainText(!bodyHasUnsupportedEncoding(response.headers()));
if (HttpHeaders.hasBody(response) && transaction.responseBodyIsPlainText()) {
BufferedSource source = getNativeSource(response);
source.request(Long.MAX_VALUE);
Buffer buffer = source.buffer();
Charset charset = UTF8;
MediaType contentType = responseBody.contentType();
if (contentType != null) {
try {
charset = contentType.charset(UTF8);
} catch (UnsupportedCharsetException e) {
update(transaction, transactionUri);
return response;
}
}
if (isPlaintext(buffer)) {
transaction.setResponseBody(readFromBuffer(buffer.clone(), charset));
} else {
transaction.setResponseBodyIsPlainText(false);
}
transaction.setResponseContentLength(buffer.size());
}
update(transaction, transactionUri);
return response;
}
Aggregations