Skip to content
This repository was archived by the owner on Jun 8, 2024. It is now read-only.

Commit 1383467

Browse files
committed
PushApi: Support HTTPS
Signed-off-by: Fung <fython@163.com>
1 parent 82fc1de commit 1383467

8 files changed

Lines changed: 34 additions & 11 deletions

File tree

mobile/src/main/kotlin/info/papdt/express/helper/api/PushApi.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ object PushApi {
2424
.readTimeout(10, TimeUnit.SECONDS)
2525
.build()
2626

27-
private val apiHost: String get() = SettingsInstance.run { "$pushApiHost:$pushApiPort" }
27+
private val apiHost: String get() = SettingsInstance.run {
28+
"http${if (enableHttps) "s" else ""}://$pushApiHost:$pushApiPort"
29+
}
2830
private val defaultToken: String get() = FirebaseInstanceId.getInstance().token ?: "null"
2931

3032
private inline fun <reified T> requestJsonObject(request: Request): T? {
@@ -46,7 +48,7 @@ object PushApi {
4648
if (apiHost.isEmpty()) return@map ResponseMessage()
4749
val request = Request.Builder()
4850
.postForm(mapOf("token" to targetToken))
49-
.url("http://$apiHost/subscribe/register")
51+
.url("$apiHost/subscribe/register")
5052
.build()
5153
return@map requestJsonObject<ResponseMessage>(request) ?: ResponseMessage()
5254
}
@@ -61,7 +63,7 @@ object PushApi {
6163
val dataString = if (strings.isEmpty()) "" else strings.reduce { acc, s -> "$acc,$s" }
6264
val request = Request.Builder()
6365
.postJson("[$dataString]")
64-
.url("http://$apiHost/subscribe/sync?token=$token")
66+
.url("$apiHost/subscribe/sync?token=$token")
6567
.build()
6668
return@map requestJsonObject<ResponseMessage>(request) ?: ResponseMessage()
6769
}
@@ -77,7 +79,7 @@ object PushApi {
7779
.postForm(mutableMapOf("token" to token, "id" to number).apply {
7880
company?.let { this["com"] = it }
7981
})
80-
.url("http://$apiHost/subscribe/add")
82+
.url("$apiHost/subscribe/add")
8183
.build()
8284
return@map requestJsonObject<ResponseMessage>(request) ?: ResponseMessage()
8385
}
@@ -91,7 +93,7 @@ object PushApi {
9193
if (apiHost.isEmpty()) return@map ResponseMessage()
9294
val request = Request.Builder()
9395
.postForm(mapOf("token" to token, "id" to id))
94-
.url("http://$apiHost/subscribe/remove")
96+
.url("$apiHost/subscribe/remove")
9597
.build()
9698
return@map requestJsonObject<ResponseMessage>(request) ?: ResponseMessage()
9799
}
@@ -104,7 +106,7 @@ object PushApi {
104106
.map {
105107
if (apiHost.isEmpty()) return@map emptyArray<String>()
106108
val request = Request.Builder()
107-
.url("http://$apiHost/subscribe/list?token=$token")
109+
.url("$apiHost/subscribe/list?token=$token")
108110
.build()
109111
return@map requestJsonObject<Array<String>>(request)
110112
}
@@ -117,7 +119,7 @@ object PushApi {
117119
.map {
118120
if (apiHost.isEmpty()) return@map ResponseMessage()
119121
val request = Request.Builder()
120-
.url("http://$apiHost/subscribe/request_push?token=$token")
122+
.url("$apiHost/subscribe/request_push?token=$token")
121123
.build()
122124
return@map requestJsonObject<ResponseMessage>(request) ?: ResponseMessage()
123125
}

mobile/src/main/kotlin/info/papdt/express/helper/support/PTSettings.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import kotlin.properties.Delegates
77
class PTSettings(context: Context): SharedPreferencesProvider(context, "settings") {
88

99
var enablePush by booleanValue(defValue = false)
10+
var enableHttps by booleanValue(defValue = false)
1011
var pushApiHost by stringValue()
1112
var pushApiPort by intValue(defValue = 3000)
1213

mobile/src/main/kotlin/info/papdt/express/helper/ui/fragment/settings/SettingsMain.kt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class SettingsMain : AbsPrefFragment(), Preference.OnPreferenceClickListener, Pr
3838
private val mPrefDontDisturb: SwitchPreference by PreferenceProperty("dont_disturb")
3939
private val mPrefIntervalTime: ListPreference by PreferenceProperty("interval")
4040
private val mPrefEnable: SwitchPreference by PreferenceProperty("enable_push")
41+
private val mPrefHttps: SwitchPreference by PreferenceProperty("enable_https")
4142
private val mPrefApiHost: EditTextPreference by PreferenceProperty("api_host")
4243
private val mPrefApiPort: EditTextPreference by PreferenceProperty("api_port")
4344
private val mPrefInstanceId: Preference by PreferenceProperty("firebase_instance_id")
@@ -108,6 +109,7 @@ class SettingsMain : AbsPrefFragment(), Preference.OnPreferenceClickListener, Pr
108109

109110
mPrefApiHost.text = SettingsInstance.pushApiHost
110111
mPrefApiPort.text = SettingsInstance.pushApiPort.toString()
112+
mPrefHttps.isChecked = SettingsInstance.enableHttps
111113

112114
mPrefFromClipboard.isChecked = settings.getBoolean(Settings.KEY_DETECT_FROM_CLIPBOARD, false)
113115

@@ -139,6 +141,7 @@ class SettingsMain : AbsPrefFragment(), Preference.OnPreferenceClickListener, Pr
139141
mPrefApiHost.onPreferenceChangeListener = this
140142
mPrefApiPort.onPreferenceChangeListener = this
141143
mPrefWhatsThis.onPreferenceClickListener = this
144+
mPrefHttps.onPreferenceChangeListener = this
142145

143146
// Auto detect
144147
mPrefFromClipboard.onPreferenceChangeListener = this
@@ -172,9 +175,11 @@ class SettingsMain : AbsPrefFragment(), Preference.OnPreferenceClickListener, Pr
172175

173176
private fun setFreeApiServer() {
174177
mPrefApiHost.text = "pt.api.rabi.coffee"
175-
mPrefApiPort.text = "3000"
178+
mPrefApiPort.text = "3001"
179+
mPrefHttps.isChecked = true
176180
SettingsInstance.pushApiHost = "pt.api.rabi.coffee"
177-
SettingsInstance.pushApiPort = 3000
181+
SettingsInstance.pushApiPort = 3001
182+
SettingsInstance.enableHttps = true
178183
}
179184

180185
override fun onPreferenceClick(pref: Preference): Boolean {
@@ -235,7 +240,7 @@ class SettingsMain : AbsPrefFragment(), Preference.OnPreferenceClickListener, Pr
235240
titleRes = R.string.fcm_push_intro_title
236241
messageRes = R.string.fcm_push_intro_msg
237242
okButton()
238-
neutralButton(R.string.fcm_push_no_server_button) { _, _ ->
243+
/*neutralButton(R.string.fcm_push_no_server_button) { _, _ ->
239244
if (SettingsInstance.clickedDonate) {
240245
setFreeApiServer()
241246
} else {
@@ -245,7 +250,7 @@ class SettingsMain : AbsPrefFragment(), Preference.OnPreferenceClickListener, Pr
245250
okButton()
246251
}.show()
247252
}
248-
}
253+
}*/
249254
}.show()
250255
true
251256
}
@@ -330,6 +335,12 @@ class SettingsMain : AbsPrefFragment(), Preference.OnPreferenceClickListener, Pr
330335
database.size()
331336
true
332337
}
338+
mPrefHttps -> {
339+
val b = o as Boolean
340+
SettingsInstance.enableHttps = b
341+
needRegister = true
342+
true
343+
}
333344
mPrefApiHost -> {
334345
SettingsInstance.pushApiHost = o as String
335346
needRegister = true

mobile/src/main/res/values-zh-rCN/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
<string name="pref_register_button">注册</string>
140140
<string name="pref_push_sync">现在同步列表</string>
141141
<string name="pref_enable_push">启用推送</string>
142+
<string name="pref_enable_https">使用 HTTPS 替代</string>
142143
<string name="pref_enable_push_summary">由 Firebase Cloud Messaging 提供</string>
143144
<string name="pref_api_host">服务器地址</string>
144145
<string name="pref_api_port">服务器端口</string>

mobile/src/main/res/values-zh-rTW/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
<string name="pref_register_button">登記</string>
140140
<string name="pref_push_sync">現在同步清單</string>
141141
<string name="pref_enable_push">啟用推送</string>
142+
<string name="pref_enable_https">使用 HTTPS 替代</string>
142143
<string name="pref_enable_push_summary">由 Firebase Cloud Messaging 提供</string>
143144
<string name="pref_api_host">伺服器地址</string>
144145
<string name="pref_api_port">伺服器端口</string>

mobile/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@
169169
<string name="pref_push_sync">Sync list now</string>
170170
<string name="pref_enable_push">Enable push</string>
171171
<string name="pref_enable_push_summary">Powered by Firebase Cloud Messaging</string>
172+
<string name="pref_enable_https">Use HTTPS instead</string>
172173
<string name="pref_api_host">Server host</string>
173174
<string name="pref_api_port">Server port</string>
174175
<string name="pref_request_push">Request push now</string>

mobile/src/main/res/xml/settings_main.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
android:title="@string/pref_firebase_instance_id"
4545
android:summary="@string/pref_firebase_instance_id_summary"/>
4646

47+
<SwitchPreference android:key="enable_https"
48+
android:title="@string/pref_enable_https"/>
49+
4750
<EditTextPreference android:key="api_host"
4851
android:title="@string/pref_api_host"
4952
android:summary="%s"

mobile/src/main/res/xml/settings_main_old.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
android:title="@string/pref_firebase_instance_id"
4545
android:summary="@string/pref_firebase_instance_id_summary"/>
4646

47+
<SwitchPreference android:key="enable_https"
48+
android:title="@string/pref_enable_https"/>
49+
4750
<EditTextPreference android:key="api_host"
4851
android:title="@string/pref_api_host"
4952
android:summary="%s"

0 commit comments

Comments
 (0)