Search in sources :

Example 6 with BufferedSource

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);
}
Also used : Foo(com.nytimes.android.external.store.middleware.moshi.data.Foo) BarCode(com.nytimes.android.external.store.base.impl.BarCode) BufferedSource(okio.BufferedSource) Test(org.junit.Test)

Example 7 with BufferedSource

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);
}
Also used : BufferedSource(okio.BufferedSource) Test(org.junit.Test)

Example 8 with 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);
}
Also used : BufferedSource(okio.BufferedSource) Test(org.junit.Test)

Example 9 with BufferedSource

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));
}
Also used : BufferedSource(okio.BufferedSource) Before(org.junit.Before)

Example 10 with BufferedSource

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;
}
Also used : Buffer(okio.Buffer) HttpTransaction(com.readystatesoftware.chuck.internal.data.HttpTransaction) Request(okhttp3.Request) Charset(java.nio.charset.Charset) Uri(android.net.Uri) Date(java.util.Date) IOException(java.io.IOException) EOFException(java.io.EOFException) UnsupportedCharsetException(java.nio.charset.UnsupportedCharsetException) ResponseBody(okhttp3.ResponseBody) Response(okhttp3.Response) UnsupportedCharsetException(java.nio.charset.UnsupportedCharsetException) MediaType(okhttp3.MediaType) RequestBody(okhttp3.RequestBody) BufferedSource(okio.BufferedSource)

Aggregations

BufferedSource (okio.BufferedSource)72 Test (org.junit.Test)33 Buffer (okio.Buffer)21 IOException (java.io.IOException)19 Request (okhttp3.Request)8 Response (okhttp3.Response)8 BarCode (com.nytimes.android.external.store.base.impl.BarCode)7 MockResponse (okhttp3.mockwebserver.MockResponse)7 EOFException (java.io.EOFException)6 InputStream (java.io.InputStream)6 ResponseBody (okhttp3.ResponseBody)6 Gson (com.google.gson.Gson)4 File (java.io.File)4 Charset (java.nio.charset.Charset)4 Headers (okhttp3.Headers)4 MediaType (okhttp3.MediaType)4 RecordedRequest (okhttp3.mockwebserver.RecordedRequest)4 BufferedSink (okio.BufferedSink)4 Sink (okio.Sink)4 RequestBody (okhttp3.RequestBody)3