Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Static Api Creation #22

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ subprojects {
apply(plugin = "org.jlleitschuh.gradle.ktlint")
}

group = "com.noahkohrs"
version = "1.0-SNAPSHOT"
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
kotlin.code.style=official
kotlin.code.style=official
5 changes: 3 additions & 2 deletions riot-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ plugins {
kotlin("jvm")
}

group = "com.noahkohrs"
version = "1.0-SNAPSHOT"
group = rootProject.group
version = rootProject.version

dependencies {
implementation("io.github.openfeign:feign-moshi:13.3")
implementation("com.squareup.moshi:moshi-kotlin:1.15.1")

project(":riot-static")
testImplementation(kotlin("test"))
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.noahkohrs.riot.api

import com.noahkohrs.riot.api.manipulation.UnpredictableDtoAdapterFactory
import com.noahkohrs.riot.api.statics.StaticsRiotData
import com.noahkohrs.riot.api.values.AccountRegion
import com.noahkohrs.riot.api.values.GlobalRegion
import com.noahkohrs.riot.api.values.Platform
Expand Down Expand Up @@ -76,23 +75,6 @@ internal object GlobalRegionApiClientFactory {
}
}

/**
* Planned to be replaced by an entire new module for the project.
*
* Do not expend.
*/
internal object StaticRiotDragoonFactory {
private const val STATIC_API_URL = "https://static.developer.riotgames.com"

fun create(): StaticsRiotData.StaticDragoonApi {
val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()
return Feign.builder()
.decoder(MoshiDecoder(moshi))
.encoder(MoshiEncoder(moshi))
.target(StaticsRiotData.StaticDragoonApi::class.java, STATIC_API_URL)
}
}

internal class RiotApiErrorDecoder : ErrorDecoder {
private val defaultDecoder = ErrorDecoder.Default()

Expand Down
156 changes: 0 additions & 156 deletions riot-api/src/main/kotlin/com.noahkohrs.riot.api/statics/ObjectReps.kt

This file was deleted.

This file was deleted.

This file was deleted.

28 changes: 28 additions & 0 deletions riot-static/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode


apply(plugin = "org.jetbrains.dokka")

plugins {
kotlin("jvm")
}

group = rootProject.group
version = rootProject.version

dependencies {
implementation("io.github.openfeign:feign-moshi:13.3")
implementation("com.squareup.moshi:moshi-kotlin:1.15.1")

testImplementation(kotlin("test"))
}

tasks.test {
useJUnitPlatform()
}

kotlin {
jvmToolchain(21)
explicitApi()
explicitApi = ExplicitApiMode.Strict
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.noahkohrs.riot.staticapi

import com.noahkohrs.riot.staticapi.values.*
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import feign.Feign
import feign.moshi.MoshiDecoder
import feign.moshi.MoshiEncoder
import java.lang.reflect.Type

internal object StaticRiotApiFactory {
fun <T> createJsonClient(clazz: Class<T>, baseUrl: String): T {
val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()
return Feign.builder()
.decoder(MoshiDecoder(moshi))
.encoder(MoshiEncoder(moshi))
.target(clazz, baseUrl)
}

fun <T> createImageClient(clazz: Class<T>, baseUrl: String): T {
return Feign.builder()
.decoder(ImageDecoder())
.target(clazz, baseUrl)
}
}

internal class ImageDecoder : feign.codec.Decoder {
override fun decode(response: feign.Response, type: Type): Any {
val bytes = response.body().asInputStream().readBytes()
response.body().asInputStream().close()
return Image(
url = response.request().url(),
format = ImageFormat.parseFormat(response.request().url()),
bytes = bytes,
)
}
}
Loading