handon.clubなど、API応答にリンクヘッダが複数ある場合に追加読み込みができなかった

This commit is contained in:
tateisu 2023-01-27 00:38:16 +09:00
parent 63a9a666e9
commit a5ce2e75c5
1 changed files with 19 additions and 12 deletions

View File

@ -88,19 +88,26 @@ open class TootApiResult(
log.d("array size=${array.size}")
val sv = response.header("Link")
if (sv == null) {
// https://handon.club/@highemerly/109755355021758238
// https://mastodon.juggler.jp/@tateisu/109756228563804507
// リンクヘッダが複数ある場合がある
val linkHeaders = response.headers("Link")
if( linkHeaders.isEmpty()){
log.d("missing Link header")
} else {
// Link: <https://mastodon.juggler.jp/api/v1/timelines/home?limit=XX&max_id=405228>; rel="next",
// <https://mastodon.juggler.jp/api/v1/timelines/home?limit=XX&since_id=436946>; rel="prev"
val m = reLinkURL.matcher(sv)
while (m.find()) {
val url = m.groupEx(1)
val rel = m.groupEx(2)
// warning.d("Link %s,%s",rel,url);
if ("next" == rel) linkOlder = url
if ("prev" == rel) linkNewer = url
}else{
for( sv in linkHeaders){
// Link: <https://mastodon.juggler.jp/api/v1/timelines/home?limit=XX&max_id=405228>; rel="next",
// <https://mastodon.juggler.jp/api/v1/timelines/home?limit=XX&since_id=436946>; rel="prev"
val m = reLinkURL.matcher(sv)
while (m.find()) {
val url = m.groupEx(1)
val rel = m.groupEx(2)
// warning.d("Link %s,%s",rel,url);
when (rel) {
"next" -> linkOlder = url
"prev" -> linkNewer = url
}
}
}
}
}