From 079022112f708d5da734f6017cb44d469fe9a12d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96ppen?= Date: Tue, 18 Aug 2020 20:06:08 +0100 Subject: [PATCH] handle redirects --- .../java/oppen/tva/io/GeminiDatasource.kt | 2 +- .../main/java/oppen/tva/io/GeminiResponse.kt | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/oppen/tva/io/GeminiDatasource.kt b/app/src/main/java/oppen/tva/io/GeminiDatasource.kt index 19c1341..75e5c21 100644 --- a/app/src/main/java/oppen/tva/io/GeminiDatasource.kt +++ b/app/src/main/java/oppen/tva/io/GeminiDatasource.kt @@ -99,7 +99,6 @@ class GeminiDatasource: Datasource{ return } - // OUT >>>>>>>>>>>>>>>>>>>>>>>>>> val outputStreamWriter = OutputStreamWriter(socket.outputStream) val bufferedWriter = BufferedWriter(outputStreamWriter) @@ -132,6 +131,7 @@ class GeminiDatasource: Datasource{ val header = GeminiResponse.parseHeader(headerLine) when { + header.code == GeminiResponse.REDIRECT -> request(URI.create(header.meta), onUpdate) header.code != GeminiResponse.SUCCESS -> onUpdate(TvaState.ResponseError(header)) header.meta.startsWith("text/gemini") -> getGemtext(socket, uri, header, onUpdate) header.meta.startsWith("text/") -> getString(socket, uri, header, onUpdate) diff --git a/app/src/main/java/oppen/tva/io/GeminiResponse.kt b/app/src/main/java/oppen/tva/io/GeminiResponse.kt index a221fe5..f5e6d72 100644 --- a/app/src/main/java/oppen/tva/io/GeminiResponse.kt +++ b/app/src/main/java/oppen/tva/io/GeminiResponse.kt @@ -12,16 +12,19 @@ object GeminiResponse { fun parseHeader(header: String): Header{ var meta = "" - if(header.startsWith("2")){ - val segments = header.trim().split(" ") - meta = when { - segments.size > 1 -> segments[1] - else -> "text/gemini; charset=utf-8" + when { + header.startsWith("2") -> { + val segments = header.trim().split(" ") + meta = when { + segments.size > 1 -> segments[1] + else -> "text/gemini; charset=utf-8" + } } - }else{ - meta = when { - header.contains(" ") -> header.substring(meta.indexOf(" ") + 1) - else -> header + else -> { + meta = when { + header.contains(" ") -> header.substring(header.indexOf(" ") + 1) + else -> header + } } }