Skip to content

Commit

Permalink
Merge pull request #7 from ChromasIV/bugfix/null-on-empty-search
Browse files Browse the repository at this point in the history
Size check against search results
  • Loading branch information
ChromasIV authored Feb 15, 2022
2 parents b288691 + 3727f32 commit 6e41ac7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 5 deletions.
16 changes: 12 additions & 4 deletions src/main/kotlin/com/chromasgaming/ktweet/tweets/SearchTweets.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ import io.ktor.http.UrlEncodingOption
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonObject


class SearchTweets {
Expand All @@ -23,7 +25,7 @@ class SearchTweets {
}

suspend fun search(paramMap: LinkedHashMap<String, String>, authorizationHeaderString: String): List<TweetObject> {
val listTweetObject: List<TweetObject>
var listTweetObject: List<TweetObject> = listOf()
runBlocking {
val client = ClientConfig()
val builder = HttpRequestBuilder()
Expand All @@ -38,9 +40,15 @@ class SearchTweets {
builder.headers.append(HttpHeaders.ContentType, "application/json")

val response = client.get(builder)
val jsonString = json.decodeFromString<JsonObject>(response.receive())["data"]

listTweetObject = json.decodeFromString(jsonString.toString())
var jsonString: JsonElement? = null
val resultCount = json.decodeFromString<JsonObject>(response.receive())["meta"]

if (resultCount != null) {
if (resultCount.jsonObject["result_count"].toString() > "0") {
jsonString = json.decodeFromString<JsonObject>(response.receive())["data"]
listTweetObject = json.decodeFromString(jsonString.toString())
}
}
client.close()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,38 @@ internal class SearchTweetsTest {
"$VERSION/tweets/search/recent",
paramMap
)

val tweetObject: List<TweetObject> = searchTweets.search(paramMap, authorizationHeaderString)
tweetObject.forEach {
println(json.encodeToString(it))
}
}

@Test
fun searchTweets_NoResults(): Unit = runBlocking {
val paramMap = LinkedHashMap<String, String>()
paramMap["query"] = "from:test"
paramMap["tweet.fields"] =
"author_id"

val signatureBuilder = SignatureBuilder.Builder()
.oauthConsumerKey(System.getProperty("consumerKey"))
.oauthConsumerSecret(System.getProperty("consumerSecret"))
.accessToken(System.getProperty("accessToken"))
.accessTokenSecret(System.getProperty("accessTokenSecret"))
.build()

val authorizationHeaderString = buildSignature(
"GET",
signatureBuilder,
"$VERSION/tweets/search/recent",
paramMap
)

val tweetObject: List<TweetObject> = searchTweets.search(paramMap, authorizationHeaderString)
assert(tweetObject.isEmpty())
}

@Test
fun searchTweets_hasMedia(): Unit = runBlocking {
val paramMap = LinkedHashMap<String, String>()
Expand Down

0 comments on commit 6e41ac7

Please sign in to comment.