android {
compileOptions {
// This library uses Java 8 features, this is required
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
def libVersion = '0.0.1-alpha'
// The core base
implementation "com.github.haliksar.mokcept:mokcept-core:$libVersion"
// The core multimodule
implementation "com.github.haliksar.mokcept:mokcept-multimodule-core:$libVersion"
// Optional
implementation "com.github.haliksar.mokcept:mokcept-android-ext:$libVersion"
}
OkHttpClient.Builder()
.addInterceptor(
Mokcept(
protocol = Protocol.HTTP_2, // default HTTP_2
handlers = listOf( // impls MethodHandler
GetMethodHandler(androidContext()),
PostMethodHandler(androidContext())
)
)
)
.build()
class GetMethodHandler(private val context: Context) : MethodHandler(Method.GET) {
init {
request("/api/v1/simple") { uri ->
response {
code = 200
message = "Take SimpleSet"
body = context json R.raw.simple_data
}
}
request("/api/v1/simpleQuery") { uri ->
withQuery(key = uri.query) {
response("number=1") {
code = 200
message = "first page"
body = context json R.raw.simple_data_first
}
response("number=2") {
code = 200
message = "second page"
body = context json R.raw.simple_data_second
}
default {
code = 200
message = "last page"
body = context json R.raw.simple_data_last
}
}
}
}
}
OkHttpClient.Builder()
.addInterceptor(
Mokcept(protocol = Protocol.HTTP_2, // default HTTP_2)
.build()
internal val MokceptComponent.simpleQuery: (Context) -> Unit
get() = { context ->
addMock("simpleQuery") {
requestWithQuery(
method = Method.GET,
link = "/api/v1/simpleQuery",
key = { it.query }
) { uri ->
response("number=1") {
code = 200
message = "first page"
body = context json R.raw.simple_data_first
}
response("number=2") {
code = 200
message = "second page"
body = context json R.raw.simple_data_second
}
default {
code = 200
message = "last page"
body = context json R.raw.simple_data_last
}
}
}
}
internal val MokceptComponent.simple: (Context) -> Unit
get() = { context ->
addMock("simple") {
request(
method = Method.GET,
link = "/api/v1/simple"
) { uri ->
response {
code = 200
message = "Take SimpleSet"
body = context json R.raw.simple_data
}
}
}
}
class DataSourceMultiModuleImpl(
private val api: TestApi,
context: Context
) : DataSource {
init {
MokceptComponent.simple(context)
MokceptComponent.simpleQuery(context)
}
override suspend fun simple(): SimpleSet =
withContext(Dispatchers.IO) {
api.simple()
}
override suspend fun simpleQuery(number: Int): List<SimpleSet> =
withContext(Dispatchers.IO) {
api.simpleQuery(number)
}
}
MokceptComponent.clear()
MokceptComponent.removeMock("simple")