Skip to content

Commit 7add727

Browse files
committed
endpoint object
1 parent 9375226 commit 7add727

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/notifications/NotificationPollingService.kt

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import kotlinx.coroutines.Dispatchers
1818
import kotlinx.coroutines.cancel
1919
import kotlinx.coroutines.delay
2020
import kotlinx.coroutines.launch
21+
import org.jetbrains.annotations.VisibleForTesting
2122
import software.aws.toolkits.core.utils.RemoteResolveParser
2223
import software.aws.toolkits.core.utils.RemoteResource
2324
import software.aws.toolkits.core.utils.error
@@ -31,7 +32,6 @@ import java.io.InputStream
3132
import java.time.Duration
3233
import java.util.concurrent.atomic.AtomicBoolean
3334

34-
private const val NOTIFICATION_ENDPOINT = "" // TODO: Replace with actual endpoint
3535
private const val MAX_RETRIES = 3
3636
private const val RETRY_DELAY_MS = 1000L
3737

@@ -45,6 +45,26 @@ object NotificationFileValidator : RemoteResolveParser {
4545
}
4646
}
4747

48+
object NotificationEndpoint {
49+
private var overriddenEndpoint: String? = null
50+
51+
fun getEndpoint(): String {
52+
return overriddenEndpoint ?: DEFAULT_ENDPOINT
53+
}
54+
55+
@VisibleForTesting
56+
fun setTestEndpoint(endpoint: String) {
57+
overriddenEndpoint = endpoint
58+
}
59+
60+
@VisibleForTesting
61+
fun resetEndpoint() {
62+
overriddenEndpoint = null
63+
}
64+
65+
private const val DEFAULT_ENDPOINT = "" // TODO: Replace with actual endpoint
66+
}
67+
4868
@State(name = "notificationEtag", storages = [Storage("aws.xml")])
4969
class NotificationEtagState : PersistentStateComponent<NotificationEtagConfiguration> {
5070
private var state = NotificationEtagConfiguration()
@@ -81,7 +101,7 @@ internal final class NotificationPollingService : Disposable {
81101
private val resourceResolver: RemoteResourceResolverProvider = DefaultRemoteResourceResolverProvider()
82102
private val notificationsResource = object : RemoteResource {
83103
override val name: String = "notifications.json"
84-
override val urls: List<String> = listOf(NOTIFICATION_ENDPOINT)
104+
override val urls: List<String> = listOf(NotificationEndpoint.getEndpoint())
85105
override val remoteResolveParser: RemoteResolveParser = NotificationFileValidator
86106
}
87107

@@ -138,7 +158,7 @@ internal final class NotificationPollingService : Disposable {
138158

139159
private fun getNotificationETag(): String =
140160
try {
141-
HttpRequests.request(NOTIFICATION_ENDPOINT)
161+
HttpRequests.request(NotificationEndpoint.getEndpoint())
142162
.userAgent("AWS Toolkit for JetBrains")
143163
.connect { request ->
144164
request.connection.headerFields["ETag"]?.firstOrNull().orEmpty()

0 commit comments

Comments
 (0)