A sample project which demostrates simple ways to prototype android apps without backend api's
Medium post related to this repo
Provides quick explanation on using Json-server for prototyping android,and also addresses some gotchas.
Using OkHttp to intercept network requets and reply with the json response available in local file.
public Response intercept(Chain chain) throws IOException {
final String url = chain.request().url().toString();
switch (url) {
case "http://10.42.0.1:3000/contacts": {
final ResponseBody responseBody = ResponseBody
.create(MediaType.parse("application/json"), readFromFile("contacts_response.json"));
final Response response = new Response
.Builder()
.body(responseBody)
.request(chain.request()).message("OK")
.protocol(Protocol.HTTP_1_1)
.code(200)
.build();
return response;
}
}
return chain.proceed(chain.request());
}
Providing MockRetrofit
@Provides
public MockRetrofit provideMockRetrofit(Retrofit retrofit){
final NetworkBehavior behavior = NetworkBehavior.create();
behavior.setErrorPercent(50);
behavior.setDelay(4, TimeUnit.SECONDS);
behavior.setVariancePercent(10);
final ExecutorService executor = Executors.newSingleThreadExecutor();
final MockRetrofit mockRetrofit = new MockRetrofit.Builder(retrofit).backgroundExecutor(executor).networkBehavior(behavior).build();
return mockRetrofit;
}
Providing Network service wrapped with behaviour delegate.
@Provides
public static ContactListService provideContactListService(MockRetrofit retrofit, Context context){
final BehaviorDelegate<ContactListService> mockContactsServiceBehaviorDelegate = retrofit.create(ContactListService.class);
return new MockContactService(context,mockContactsServiceBehaviorDelegate);
}