Skip to content

Commit e565cd9

Browse files
committed
feat(v3/api): Update to API version development-version
1 parent 34f8106 commit e565cd9

File tree

6 files changed

+16
-56
lines changed

6 files changed

+16
-56
lines changed

v3/api/src/main/kotlin/ru/epserv/proxycheck/v3/api/model/response/AddressResult.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ data class AddressResult(
5757
DeviceEstimate.CODEC.fieldOf("device_estimate").forGetter(AddressResult::deviceEstimate),
5858
Detections.CODEC.fieldOf("detections").forGetter(AddressResult::detections),
5959
Operator.CODEC.optionalFieldOf("operator").forNullableGetter(AddressResult::operator),
60-
Codecs.INSTANT_EPOCH_SECONDS.fieldOf("last_updated").forGetter(AddressResult::lastUpdatedAt),
60+
Codecs.INSTANT_ISO_8601.fieldOf("last_updated").forGetter(AddressResult::lastUpdatedAt),
6161
).apply(instance, ::AddressResult)
6262
}
6363

v3/api/src/main/kotlin/ru/epserv/proxycheck/v3/api/model/response/Location.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.mojang.serialization.Codec
44
import org.jetbrains.annotations.ApiStatus
55
import ru.epserv.proxycheck.v3.api.util.buildMapCodec
66
import ru.epserv.proxycheck.v3.api.util.codec.Codecs.forNullableGetter
7-
import ru.epserv.proxycheck.v3.api.util.codec.Codecs.orNullIf
87
import java.util.*
98
import kotlin.jvm.optionals.getOrNull
109

@@ -77,13 +76,13 @@ data class Location(
7776
Codec.STRING.fieldOf("continent_code").forGetter(Location::continentCode),
7877
Codec.STRING.fieldOf("country_name").forGetter(Location::countryName),
7978
Codec.STRING.fieldOf("country_code").forGetter(Location::countryCode),
80-
Codec.STRING.fieldOf("region_name").orNullIf("unknown", ignoreCase = true).forNullableGetter(Location::regionName),
81-
Codec.STRING.fieldOf("region_code").orNullIf("unknown", ignoreCase = true).forNullableGetter(Location::regionCode),
82-
Codec.STRING.fieldOf("city_name").orNullIf("unknown", ignoreCase = true).forNullableGetter(Location::cityName),
83-
Codec.STRING.optionalFieldOf("postal_code").orNullIf("unknown", ignoreCase = true).forNullableGetter(Location::postalCode),
79+
Codec.STRING.optionalFieldOf("region_name").forNullableGetter(Location::regionName),
80+
Codec.STRING.optionalFieldOf("region_code").forNullableGetter(Location::regionCode),
81+
Codec.STRING.optionalFieldOf("city_name").forNullableGetter(Location::cityName),
82+
Codec.STRING.optionalFieldOf("postal_code").forNullableGetter(Location::postalCode),
8483
Codec.DOUBLE.fieldOf("latitude").forGetter(Location::latitude),
8584
Codec.DOUBLE.fieldOf("longitude").forGetter(Location::longitude),
86-
Codec.STRING.fieldOf("timezone").orNullIf("unknown", ignoreCase = true).forNullableGetter(Location::timeZone),
85+
Codec.STRING.optionalFieldOf("timezone").forNullableGetter(Location::timeZone),
8786
Currency.CODEC.fieldOf("currency").forGetter(Location::currency),
8887
).apply(instance, ::Location)
8988
}

v3/api/src/main/kotlin/ru/epserv/proxycheck/v3/api/model/response/Network.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import ru.epserv.proxycheck.v3.api.model.common.CidrIpRange
66
import ru.epserv.proxycheck.v3.api.util.buildMapCodec
77
import ru.epserv.proxycheck.v3.api.util.codec.Codecs
88
import ru.epserv.proxycheck.v3.api.util.codec.Codecs.forNullableGetter
9-
import ru.epserv.proxycheck.v3.api.util.codec.Codecs.orNullIf
109
import java.util.*
1110
import kotlin.jvm.optionals.getOrNull
1211

@@ -51,11 +50,11 @@ data class Network(
5150
@ApiStatus.Internal
5251
internal val CODEC = buildMapCodec { instance ->
5352
instance.group(
54-
Codecs.ASN_STRING.fieldOf("asn").orNullIf("unknown", ignoreCase = true).forNullableGetter(Network::asn),
55-
CidrIpRange.STRING_CODEC.fieldOf("range").orNullIf("unknown", ignoreCase = true).forNullableGetter(Network::range),
56-
Codec.STRING.optionalFieldOf("hostname").orNullIf("unknown", ignoreCase = true).forNullableGetter(Network::hostName),
57-
Codec.STRING.fieldOf("provider").orNullIf("unknown", ignoreCase = true).forNullableGetter(Network::provider),
58-
Codec.STRING.fieldOf("organisation").orNullIf("unknown", ignoreCase = true).forNullableGetter(Network::organisation),
53+
Codecs.ASN_STRING.optionalFieldOf("asn").forNullableGetter(Network::asn),
54+
CidrIpRange.STRING_CODEC.optionalFieldOf("range").forNullableGetter(Network::range),
55+
Codec.STRING.optionalFieldOf("hostname").forNullableGetter(Network::hostName),
56+
Codec.STRING.optionalFieldOf("provider").forNullableGetter(Network::provider),
57+
Codec.STRING.optionalFieldOf("organisation").forNullableGetter(Network::organisation),
5958
Codec.STRING.fieldOf("type").forGetter(Network::type),
6059
).apply(instance, ::Network)
6160
}

v3/api/src/main/kotlin/ru/epserv/proxycheck/v3/api/model/response/Operator.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.mojang.serialization.Codec
44
import org.jetbrains.annotations.ApiStatus
55
import ru.epserv.proxycheck.v3.api.util.buildMapCodec
66
import ru.epserv.proxycheck.v3.api.util.codec.Codecs.forNullableGetter
7-
import ru.epserv.proxycheck.v3.api.util.codec.Codecs.orNullIf
87
import ru.epserv.proxycheck.v3.api.util.codec.Codecs.setOf
98
import java.util.*
109
import kotlin.jvm.optionals.getOrNull
@@ -52,8 +51,8 @@ data class Operator(
5251
instance.group(
5352
Codec.STRING.fieldOf("name").forGetter(Operator::name),
5453
Codec.STRING.fieldOf("url").forGetter(Operator::url),
55-
Codec.STRING.optionalFieldOf("anonymity").orNullIf("unknown", ignoreCase = true).forNullableGetter(Operator::anonymity),
56-
Codec.STRING.optionalFieldOf("popularity").orNullIf("unknown", ignoreCase = true).forNullableGetter(Operator::popularity),
54+
Codec.STRING.optionalFieldOf("anonymity").forNullableGetter(Operator::anonymity),
55+
Codec.STRING.optionalFieldOf("popularity").forNullableGetter(Operator::popularity),
5756
Codec.STRING.setOf().fieldOf("protocols").forGetter(Operator::protocols),
5857
OperatorPolicies.CODEC.optionalFieldOf("policies", OperatorPolicies.UNKNOWN).forGetter(Operator::policies),
5958
).apply(instance, ::Operator)

v3/api/src/main/kotlin/ru/epserv/proxycheck/v3/api/util/codec/Codecs.kt

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package ru.epserv.proxycheck.v3.api.util.codec
22

3-
import com.mojang.datafixers.util.Either
43
import com.mojang.serialization.Codec
54
import com.mojang.serialization.DataResult
65
import com.mojang.serialization.MapCodec
76
import com.mojang.serialization.codecs.RecordCodecBuilder
8-
import ru.epserv.proxycheck.v3.api.util.mapOrElse
9-
import ru.epserv.proxycheck.v3.api.util.name
107
import java.net.InetAddress
118
import java.util.*
129
import kotlin.time.ExperimentalTime
@@ -15,6 +12,7 @@ import kotlin.time.Instant
1512
@OptIn(ExperimentalTime::class)
1613
internal object Codecs {
1714
val INET_ADDRESS_STRING: Codec<InetAddress> = Codec.STRING.comapFlatMap(this::decodeInetAddress, InetAddress::getHostAddress)
15+
1816
val ASN_STRING: Codec<Int> = Codec.STRING.comapFlatMap(
1917
{ string ->
2018
try {
@@ -26,7 +24,7 @@ internal object Codecs {
2624
{ asn -> "AS$asn" },
2725
)
2826

29-
val INSTANT_EPOCH_SECONDS: Codec<Instant> = Codec.LONG.xmap(Instant::fromEpochSeconds, Instant::epochSeconds)
27+
val INSTANT_ISO_8601: Codec<Instant> = Codec.STRING.xmap(Instant::parse, Instant::toString)
3028

3129
fun <O : Any, A : Any> MapCodec<Optional<A>>.forNullableGetter(getter: (O) -> A?): RecordCodecBuilder<O, Optional<A>> {
3230
return this.forGetter { obj -> Optional.ofNullable(getter(obj)) }
@@ -38,41 +36,6 @@ internal object Codecs {
3836
return MapCodec.assumeMapUnsafe(Codec.unboundedMap(this, valueCodec))
3937
}
4038

41-
fun Codec<String>.constant(constantValue: String, ignoreCase: Boolean = false): Codec<String> {
42-
fun transform(providedValue: String): DataResult<String> {
43-
if (providedValue.equals(constantValue, ignoreCase)) {
44-
return DataResult.success(providedValue)
45-
}
46-
return DataResult.error { "Expected constant value '$constantValue' (ignoreCase = $ignoreCase), but got '$providedValue'" }
47-
}
48-
49-
return this.flatXmap(::transform, ::transform)
50-
}
51-
52-
@JvmName("orNullIfMapCodec")
53-
fun <A : Any> MapCodec<A>.orNullIf(nullValue: String, ignoreCase: Boolean = false): MapCodec<Optional<A>> {
54-
val fieldName = requireNotNull(this.name) { "MapCodec must have a name to use orNullIf" }
55-
return Codec.mapEither(
56-
Codec.STRING.constant(nullValue, ignoreCase).optionalFieldOf(fieldName),
57-
this,
58-
).xmap(
59-
{ either -> either.map({ Optional.empty() }, { value -> Optional.of(value) }) },
60-
{ optional -> optional.mapOrElse({ value -> Either.right(value) }, { Either.left(Optional.empty()) }) },
61-
)
62-
}
63-
64-
@JvmName("orNullIfMapCodecOptional")
65-
fun <A : Any> MapCodec<Optional<A>>.orNullIf(nullValue: String, ignoreCase: Boolean = false): MapCodec<Optional<A>> {
66-
val fieldName = requireNotNull(this.name) { "MapCodec must have a name to use orNullIf" }
67-
return Codec.mapEither(
68-
Codec.STRING.constant(nullValue, ignoreCase).optionalFieldOf(fieldName),
69-
this,
70-
).xmap(
71-
{ either -> either.map({ Optional.empty() }, { value -> value }) },
72-
{ optional -> optional.mapOrElse({ value -> Either.right(Optional.of(value)) }, { Either.left(Optional.empty()) }) }
73-
)
74-
}
75-
7639
fun decodeInetAddress(string: String): DataResult<InetAddress> {
7740
return this.decodeInet4Address(string).orElseGet { errorV4 ->
7841
this.decodeInet6Address(string).orElseGet { errorV6 ->

v3/impl-java/src/main/kotlin/ru/epserv/proxycheck/v3/impl/ProxyCheckApiImplConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,6 @@ data class ProxyCheckApiImplConfiguration(
105105
@ApiStatus.AvailableSince("1.0.0")
106106
data class UnsupportedConfiguration(
107107
@ApiStatus.AvailableSince("1.0.0")
108-
var apiVersion: String = "12-August-2025",
108+
var apiVersion: String = "development-version",
109109
)
110110
}

0 commit comments

Comments
 (0)