Skip to content

Commit 03ef06e

Browse files
committed
requires GET and Streaming on SSE adapters
1 parent 22f07cd commit 03ef06e

3 files changed

Lines changed: 15 additions & 0 deletions

File tree

retrofit-adapters/sse/core/src/main/java/retrofit2/adapter/sse/EventSourceCallAdapterFactory.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import java.lang.reflect.Type
2020
import retrofit2.CallAdapter
2121
import retrofit2.Retrofit
2222
import retrofit2.adapter.sse.internal.EventSourceCallAdapter
23+
import retrofit2.http.GET
2324
import retrofit2.http.Streaming
2425

2526
object EventSourceCallAdapterFactory : CallAdapter.Factory() {
@@ -44,6 +45,10 @@ object EventSourceCallAdapterFactory : CallAdapter.Factory() {
4445
error("SSE endpoint must be annotated with @Streaming")
4546
}
4647

48+
if (annotations.none { it is GET }) {
49+
error("SSE endpoint must use @GET method")
50+
}
51+
4752
val idType = getParameterUpperBound(0, returnType)
4853
val typeType = getParameterUpperBound(1, returnType)
4954
val dataType = getParameterUpperBound(2, returnType)

retrofit-adapters/sse/juc-flow/src/main/java/retrofit2/adapter/sse/java9/SseJucFlowCallAdapterFactory.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import java.util.concurrent.Flow
2222
import retrofit2.CallAdapter
2323
import retrofit2.Retrofit
2424
import retrofit2.adapter.sse.ServerSentEvent
25+
import retrofit2.http.GET
2526
import retrofit2.http.Streaming
2627

2728
class SseJucFlowCallAdapterFactory private constructor(
@@ -68,6 +69,10 @@ class SseJucFlowCallAdapterFactory private constructor(
6869
error("SSE endpoint must be annotated with @Streaming")
6970
}
7071

72+
if (annotations.none { it is GET }) {
73+
error("SSE endpoint must use @GET method")
74+
}
75+
7176
val idType = getParameterUpperBound(0, innerType)
7277
val typeType = getParameterUpperBound(1, innerType)
7378
val dataType = getParameterUpperBound(2, innerType)

retrofit-adapters/sse/ktx-flow/src/main/java/retrofit2/adapter/sse/kotlinx/SseKtxFlowCallAdapterFactory.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import kotlinx.coroutines.flow.Flow
2121
import retrofit2.CallAdapter
2222
import retrofit2.Retrofit
2323
import retrofit2.adapter.sse.ServerSentEvent
24+
import retrofit2.http.GET
2425
import retrofit2.http.Streaming
2526

2627
object SseKtxFlowCallAdapterFactory : CallAdapter.Factory() {
@@ -57,6 +58,10 @@ object SseKtxFlowCallAdapterFactory : CallAdapter.Factory() {
5758
error("SSE endpoint must be annotated with @Streaming")
5859
}
5960

61+
if (annotations.none { it is GET }) {
62+
error("SSE endpoint must use @GET method")
63+
}
64+
6065
val idType = getParameterUpperBound(0, innerType)
6166
val typeType = getParameterUpperBound(1, innerType)
6267
val dataType = getParameterUpperBound(2, innerType)

0 commit comments

Comments
 (0)