タンス情報カラムにTLS Handshakeを表示
This commit is contained in:
parent
365485cf91
commit
898d31c522
|
@ -18,6 +18,7 @@ import jp.juggler.subwaytooter.util.BucketList
|
|||
import jp.juggler.subwaytooter.util.ScrollPosition
|
||||
import jp.juggler.subwaytooter.util.WordTrieTree
|
||||
import jp.juggler.util.*
|
||||
import okhttp3.Handshake
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
|
@ -617,6 +618,7 @@ class Column(
|
|||
// 「インスタンス情報」カラムに表示するインスタンス情報
|
||||
// (SavedAccount中のインスタンス情報とは異なるので注意)
|
||||
internal var instance_information : TootInstance? = null
|
||||
internal var handshake : Handshake? = null
|
||||
|
||||
internal var scroll_save : ScrollPosition? = null
|
||||
private var last_viewing_item_id : EntityId? = null
|
||||
|
@ -3222,6 +3224,7 @@ class Column(
|
|||
result = getInstanceInformation(client, instance_uri)
|
||||
if(instance_tmp != null) {
|
||||
instance_information = instance_tmp
|
||||
handshake = result?.response?.handshake()
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
|
|
@ -37,6 +37,9 @@ internal class ViewHolderHeaderInstance(
|
|||
private val ivThumbnail : MyNetworkImageView
|
||||
private val btnContact : TextView
|
||||
private val tvLanguages : TextView
|
||||
private val tvHandshake : TextView
|
||||
|
||||
|
||||
private var instance : TootInstance? = null
|
||||
|
||||
init {
|
||||
|
@ -60,7 +63,7 @@ internal class ViewHolderHeaderInstance(
|
|||
ivThumbnail = viewRoot.findViewById(R.id.ivThumbnail)
|
||||
btnContact = viewRoot.findViewById(R.id.btnContact)
|
||||
tvLanguages = viewRoot.findViewById(R.id.tvLanguages)
|
||||
|
||||
tvHandshake= viewRoot.findViewById(R.id.tvHandshake)
|
||||
|
||||
btnInstance.setOnClickListener(this)
|
||||
btnEmail.setOnClickListener(this)
|
||||
|
@ -77,6 +80,7 @@ internal class ViewHolderHeaderInstance(
|
|||
override fun bindData(column : Column) {
|
||||
super.bindData(column)
|
||||
val instance = column.instance_information
|
||||
val handshake = column.handshake
|
||||
this.instance = instance
|
||||
|
||||
if(instance == null) {
|
||||
|
@ -102,7 +106,8 @@ internal class ViewHolderHeaderInstance(
|
|||
btnEmail.text = email
|
||||
btnEmail.isEnabled = email.isNotEmpty()
|
||||
|
||||
val contact_acct = instance.contact_account?.let{ who -> "@"+who.username +"@"+ who.host} ?: ""
|
||||
val contact_acct =
|
||||
instance.contact_account?.let { who -> "@" + who.username + "@" + who.host } ?: ""
|
||||
btnContact.text = contact_acct
|
||||
btnContact.isEnabled = contact_acct.isNotEmpty()
|
||||
|
||||
|
@ -159,6 +164,12 @@ internal class ViewHolderHeaderInstance(
|
|||
ivThumbnail.setImageUrl(App1.pref, 0f, thumbnail, thumbnail)
|
||||
}
|
||||
}
|
||||
|
||||
tvHandshake.text = if( handshake == null){
|
||||
""
|
||||
}else{
|
||||
"${handshake.tlsVersion()}, ${handshake.cipherSuite()}"
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v : View) {
|
||||
|
@ -170,9 +181,9 @@ internal class ViewHolderHeaderInstance(
|
|||
|
||||
R.id.btnEmail -> instance?.email?.let { email ->
|
||||
try {
|
||||
if(email.contains("://") ) {
|
||||
App1.openCustomTab(activity,email)
|
||||
}else {
|
||||
if(email.contains("://")) {
|
||||
App1.openCustomTab(activity, email)
|
||||
} else {
|
||||
val intent = Intent(Intent.ACTION_SEND)
|
||||
intent.type = "text/plain"
|
||||
intent.putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
|
||||
|
@ -190,16 +201,16 @@ internal class ViewHolderHeaderInstance(
|
|||
R.id.btnContact -> instance?.contact_account?.let { who ->
|
||||
Action_Account.timeline(
|
||||
activity
|
||||
,activity.nextPosition(column)
|
||||
,Column.TYPE_SEARCH
|
||||
,bAllowPseudo = false
|
||||
,args=arrayOf("@"+who.username +"@"+ who.host,true)
|
||||
, activity.nextPosition(column)
|
||||
, Column.TYPE_SEARCH
|
||||
, bAllowPseudo = false
|
||||
, args = arrayOf("@" + who.username + "@" + who.host, true)
|
||||
)
|
||||
}
|
||||
|
||||
R.id.ivThumbnail -> instance?.thumbnail?.mayUri()?.let { uri ->
|
||||
try {
|
||||
activity.startActivity(Intent(Intent.ACTION_VIEW,uri))
|
||||
activity.startActivity(Intent(Intent.ACTION_VIEW, uri))
|
||||
} catch(ex : Throwable) {
|
||||
log.e(ex, "startActivity failed. $uri")
|
||||
showToast(activity, true, "missing web browser")
|
||||
|
|
|
@ -50,8 +50,6 @@ class TootApiClient(
|
|||
companion object {
|
||||
private val log = LogCategory("TootApiClient")
|
||||
|
||||
val debugHandshake = true
|
||||
|
||||
private const val DEFAULT_CLIENT_NAME = "SubwayTooter"
|
||||
internal const val KEY_CLIENT_CREDENTIAL = "SubwayTooterClientCredential"
|
||||
internal const val KEY_CLIENT_SCOPE = "SubwayTooterClientScope"
|
||||
|
@ -294,13 +292,6 @@ class TootApiClient(
|
|||
val response = httpClient.getResponse(request, tmpOkhttpClient = tmpOkhttpClient)
|
||||
result.response = response
|
||||
|
||||
if(debugHandshake) {
|
||||
val handshake = response.handshake()
|
||||
if(handshake != null) {
|
||||
log.d("handshake ${handshake.tlsVersion()},${handshake.cipherSuite()} ${request.url()}")
|
||||
}
|
||||
}
|
||||
|
||||
null == result.error
|
||||
|
||||
} catch(ex : Throwable) {
|
||||
|
@ -577,19 +568,17 @@ class TootApiClient(
|
|||
|
||||
// インスタンス情報を取得する
|
||||
internal fun parseInstanceInformation(result : TootApiResult?) : TootApiResult? {
|
||||
if(result != null) {
|
||||
val json = result.jsonObject
|
||||
if(json != null) {
|
||||
val parser = TootParser(
|
||||
context,
|
||||
LinkHelper.newLinkHelper(instance, isMisskey = json.optBoolean(KEY_IS_MISSKEY))
|
||||
)
|
||||
val ti = parser.instance(json)
|
||||
if(ti != null) {
|
||||
result.data = ti
|
||||
} else {
|
||||
result.setError("can't parse data in instance information.")
|
||||
}
|
||||
val json = result?.jsonObject
|
||||
if(json != null) {
|
||||
val parser = TootParser(
|
||||
context,
|
||||
LinkHelper.newLinkHelper(instance, isMisskey = json.optBoolean(KEY_IS_MISSKEY))
|
||||
)
|
||||
val ti = parser.instance(json)
|
||||
if(ti != null) {
|
||||
result.data = ti
|
||||
} else {
|
||||
result.setError("can't parse data in instance information.")
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
|
|
@ -172,7 +172,7 @@
|
|||
|
||||
<TextView
|
||||
style="@style/setting_row_label"
|
||||
android:text="@string/thumbnail_1_6_1_later"
|
||||
android:text="@string/thumbnail"
|
||||
/>
|
||||
|
||||
<LinearLayout style="@style/setting_row_form">
|
||||
|
@ -207,4 +207,19 @@
|
|||
|
||||
<View style="@style/setting_divider"/>
|
||||
|
||||
<TextView
|
||||
style="@style/setting_row_label"
|
||||
android:text="@string/tls_handshake"
|
||||
/>
|
||||
|
||||
<LinearLayout style="@style/setting_row_form">
|
||||
|
||||
<jp.juggler.subwaytooter.view.MyTextView
|
||||
android:id="@+id/tvHandshake"
|
||||
style="@style/setting_horizontal_stretch"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
<View style="@style/setting_divider"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
<string name="account_pick">Dewis cyfrif</string>
|
||||
<string name="account_confirmed">Cyfrif wedi\'i gadarnhau.</string>
|
||||
<string name="close_column">Cau y golofn</string>
|
||||
<string name="thumbnail">Ciplun</string>
|
||||
<string name="reload">Ail-lwytho</string>
|
||||
<string name="favourites">Ffefrynnau</string>
|
||||
<string name="notifications">Hysbysiadau</string>
|
||||
|
@ -325,7 +324,7 @@
|
|||
<string name="mastodon_1_6_later">Mastodon 1.6 neu hwyrach</string>
|
||||
<string name="user_count">Nifer defnyddwyr</string>
|
||||
<string name="not_provided_mastodon_under_1_6">Ni ddarparir gan Mastodon 1.6</string>
|
||||
<string name="thumbnail_1_6_1_later">Ciplun (Mastodon 1.6.1 neu hwyrach)</string>
|
||||
<string name="thumbnail">Ciplun</string>
|
||||
<string name="emoji_category_people">Pobl</string>
|
||||
<string name="emoji_category_nature">Natur</string>
|
||||
<string name="emoji_category_foods">Bwydydd</string>
|
||||
|
|
|
@ -507,7 +507,6 @@
|
|||
<string name="mime_type_missing">Type MIME manquant.</string>
|
||||
<string name="mime_type_not_acceptable">Type MIME %1$s n\'est pas acceptable.
|
||||
\nTypes MIME pris en charge sont les suivants : image/jpeg, image/png, image/gif,/video/webm, video/mp4.</string>
|
||||
<string name="thumbnail_1_6_1_later">Miniature (Mastodon 1.6.1 ou version ultérieure)</string>
|
||||
<string name="dont_show_timeout">Ne pas afficher les notifications \"Délai d\'expiration du serveur\"</string>
|
||||
<string name="emoji_category_people">People</string>
|
||||
<string name="emoji_category_nature">Nature</string>
|
||||
|
|
|
@ -672,7 +672,6 @@
|
|||
<string name="theme_dark">暗い</string>
|
||||
<string name="theme_light">明るい</string>
|
||||
<string name="thumbnail">サムネイル</string>
|
||||
<string name="thumbnail_1_6_1_later">サムネイル(マストドン1.6.1以降)</string>
|
||||
<string name="thumbnails_arrange_vertically">サムネイルを縦に並べる (アプリ再起動が必要)</string>
|
||||
<string name="time_within_second">たった今</string>
|
||||
<string name="timeline_font">タイムラインのフォント(アプリ再起動が必要)</string>
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
<string name="reply">Svar</string>
|
||||
<string name="more">Mer</string>
|
||||
<string name="close_column">Lukk kolonnen</string>
|
||||
<string name="thumbnail">Miniatyrbilde</string>
|
||||
<string name="reload">Last inn igjen</string>
|
||||
<string name="favourites">Favoritter</string>
|
||||
<string name="notifications">Merknader</string>
|
||||
|
@ -400,7 +399,7 @@
|
|||
<string name="toot_count">Tut-antall</string>
|
||||
<string name="domain_count">Tilkoblet domeneantall</string>
|
||||
<string name="mime_type_missing">Manglende MIME-type.</string>
|
||||
<string name="thumbnail_1_6_1_later">Miniatyrbilde (Mastodon 1.6.1 eller senere)</string>
|
||||
<string name="thumbnail">Miniatyrbilde</string>
|
||||
<string name="dont_show_timeout">Ikke vis \"Tjenertidsavbrudd\"-merknad</string>
|
||||
<string name="emoji_category_people">Folk</string>
|
||||
<string name="emoji_category_nature">Natur</string>
|
||||
|
|
|
@ -507,7 +507,6 @@
|
|||
<string name="not_provided_mastodon_under_1_6">Not provided under Mastodon 1.6</string>
|
||||
<string name="mime_type_missing">Missing MIME type.</string>
|
||||
<string name="mime_type_not_acceptable">MIME type %1$s is not acceptable.\nSupported MIME types are image/jpeg, image/png, image/gif, video/webm, video/mp4 .</string>
|
||||
<string name="thumbnail_1_6_1_later">Thumbnail (Mastodon 1.6.1 or later)</string>
|
||||
<string name="dont_show_timeout">Don\'t show \"Server Timeout\" notification</string>
|
||||
<string name="emoji_category_people">People</string>
|
||||
<string name="emoji_category_nature">Nature</string>
|
||||
|
@ -821,5 +820,6 @@
|
|||
<string name="blank_cw">(blank CW)</string>
|
||||
<string name="actions_for_instance">Actions for this instance</string>
|
||||
<string name="animation">Animation</string>
|
||||
<string name="tls_handshake">TLS Handshake</string>
|
||||
|
||||
</resources>
|
||||
|
|
Loading…
Reference in New Issue