Skip to content
Open
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
4 changes: 2 additions & 2 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Pipeline to publish core sdk
name: Publish Core SDK
# Pipeline for pull request
name: Pull request pipeline

on:
pull_request:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2023 nyris GmbH
* Copyright $YEAR nyris GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -13,10 +13,3 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.nyris.sdk.builder

import io.nyris.sdk.model.Feedback

interface FeedbackRequestBuilder {
suspend fun send(feedback: Feedback): Result<Unit>
}
87 changes: 87 additions & 0 deletions configs/signing/release-maven.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
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
wx4zevj3v3A6zNl2sO86a2osxVXd8GIhQYSs
9 changes: 9 additions & 0 deletions gradle/init.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,15 @@ rootProject {
"(^(?![\\/ ]\\*).*$)"
)
}
format("swift") {
target("**/*.swift")
targetExclude("**/build/**/*.swift")
// Look for the first line that doesn't have a block comment (assumed to be the license)
licenseHeaderFile(
rootProject.file("configs/code/spotless/copyright.swift"),
"(^(?![\\/ ]\\*).*$)"
)
}
format("xml") {
target("**/*.xml")
targetExclude("**/build/**/*.xml")
Expand Down
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ ktor_loggin = { group = "io.ktor", name = "ktor-client-logging", version.ref = "
ktor_serialization = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktor" }
ktor_okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.ref = "ktor" }
ktor_android = { group = "io.ktor", name = "ktor-client-android", version.ref = "ktor" }
ktor_ios = { group = "io.ktor", name = "ktor-client-darwin", version.ref = "ktor" }
ktor_jvm = { group = "io.ktor", name = "ktor-client-java", version.ref = "ktor" }

androidx_core = { group = "androidx.core", name = "core", version.ref = "androidxCore" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ internal class BarcodeRectFactory {
}
}

data class KRectF(
class KRectF(
val left: Float,
val top: Float,
val right: Float,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import io.nyris.sdk.camera.core.BarcodeFormat

interface Result

data class BarcodeResult(val barcodes: List<Barcode>) : Result
data class Barcode(
class BarcodeResult(val barcodes: List<Barcode>) : Result
class Barcode(
val code: String?,
@BarcodeFormat
val format: Int,
Expand Down
52 changes: 33 additions & 19 deletions sdk.core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,20 @@ kotlin {
android {
publishLibraryVariants("release")
}
jvm()
//jvm()
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
it.binaries.framework {
baseName = "nyris"
}
}

sourceSets {
val commonMain by getting {
dependencies {
implementation(libs.ktx.coroutines.core)
implementation(libs.ktor.core)
implementation(libs.ktor.json)
implementation(libs.ktor.loggin)
implementation(libs.ktor.contentnegotiation)
implementation(libs.ktor.serialization)

implementation(libs.ktx.json)

implementation(libs.ktx.date)
}
}
val commonTest by getting {
Expand All @@ -63,16 +62,31 @@ kotlin {
implementation(libs.test.mockk.core)
}
}
val jvmMain by getting {
dependencies {
implementation(libs.ktor.jvm)
}
}
val jvmTest by getting {
// val jvmMain by getting {
// dependencies {
// implementation(libs.ktor.jvm)
// }
// }
// val jvmTest by getting {
// dependencies {
// implementation(kotlin("test-junit"))
// implementation(libs.test.mockk.core)
// }
// }
// iOS build
val iosX64Main by getting
val iosArm64Main by getting
val iosSimulatorArm64Main by getting

val iosMain by creating {
dependsOn(commonMain)
dependencies {
implementation(kotlin("test-junit"))
implementation(libs.test.mockk.core)
implementation(libs.ktor.ios)
}
iosX64Main.dependsOn(this)
iosArm64Main.dependsOn(this)

iosSimulatorArm64Main.dependsOn(this)
}
}
}
23 changes: 9 additions & 14 deletions sdk.core/src/androidMain/kotlin/io/nyris/sdk/Nyris.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import io.nyris.sdk.builder.FeedbackRequestBuilder
import io.nyris.sdk.builder.ImageMatchingRequestBuilder
import io.nyris.sdk.builder.ObjectDetectingRequestBuilder
import io.nyris.sdk.builder.SkuMatchingRequestBuilder
import io.nyris.sdk.internal.NyrisImpl
import io.nyris.sdk.internal.createInstanceNyrisImpl

actual interface Nyris {
actual fun imageMatching(): ImageMatchingRequestBuilder
Expand All @@ -29,17 +29,12 @@ actual interface Nyris {
actual fun feedback(): FeedbackRequestBuilder

actual fun skuMatching(): SkuMatchingRequestBuilder

actual companion object {
@JvmStatic
actual fun createInstance(
apiKey: String,
config: NyrisConfig,
): Nyris = NyrisImpl.createInstance(
apiKey = apiKey,
config = config.copy(
platform = NyrisPlatform.Android
)
)
}
}

actual fun createInstance(
apiKey: String,
config: NyrisConfig,
): Nyris = createInstanceNyrisImpl(
apiKey = apiKey,
config = config
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package io.nyris.sdk.internal.repository.imagematching

import io.nyris.sdk.internal.util.Logger
import io.nyris.sdk.model.MatchResponse

internal actual class ImageMatchingRequestBuilderImpl actual constructor(
logger: Logger,
imageMatchingRepository: ImageMatchingRepository,
) : CommonImageMatchingRequestBuilderImpl(logger, imageMatchingRepository) {
override suspend fun match(image: DataType): Result<MatchResponse> {
logger.log("[ImageMatchingRequestBuilderImpl] match")

return imageMatchingRepository.match(
image = image,
params = createParams()
)
}
}

internal actual typealias DataType = ByteArray
44 changes: 34 additions & 10 deletions sdk.core/src/commonMain/kotlin/io/nyris/sdk/Nyris.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
*/
package io.nyris.sdk

import io.ktor.client.engine.HttpClientEngineConfig
import io.ktor.client.engine.HttpClientEngineFactory
import io.nyris.sdk.builder.FeedbackRequestBuilder
import io.nyris.sdk.builder.ImageMatchingRequestBuilder
import io.nyris.sdk.builder.ObjectDetectingRequestBuilder
Expand All @@ -30,13 +28,39 @@ expect interface Nyris {
fun feedback(): FeedbackRequestBuilder

fun skuMatching(): SkuMatchingRequestBuilder

companion object {
fun createInstance(
apiKey: String,
config: NyrisConfig = NyrisConfig(),
): Nyris
}
}

typealias HttpEngine = HttpClientEngineFactory<HttpClientEngineConfig>
expect fun createInstance(
apiKey: String,
config: NyrisConfig = NyrisConfig(),
): Nyris

class NyrisConfig(
val isDebug: Boolean = false,
val baseUrl: String = BASE_URL,
val timeout: Long = TIMEOUT,
internal val platform: NyrisPlatform = NyrisPlatform.Generic,
)

const val BASE_URL = "https://api.nyris.io/"
const val TIMEOUT = 3000L

sealed class NyrisException(message: String?) : Throwable(message)

class ResponseException(
val title: String?,
val status: Int?,
val detail: String?,
val traceId: String?,
val itemKey: String?,
) : NyrisException(detail)

class ClientException(
override val message: String?,
) : NyrisException(message)

class ServerException(
override val message: String?,
) : NyrisException(message)

enum class NyrisPlatform { Generic, Android, IOS, Jvm }
29 changes: 0 additions & 29 deletions sdk.core/src/commonMain/kotlin/io/nyris/sdk/NyrisConfig.kt

This file was deleted.

Loading