Skip to content

Commit 631de43

Browse files
committed
support web
1 parent 3b27c11 commit 631de43

File tree

7 files changed

+145
-45
lines changed

7 files changed

+145
-45
lines changed

app/src/main/java/com/enixcoda/smsforward/ForwardTaskForTelegram.java

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -15,64 +15,37 @@ public class ForwardTaskForTelegram extends AsyncTask<Void, Void, Void> {
1515
String senderNumber;
1616
String message;
1717
String chatId;
18+
String token;
1819

19-
public ForwardTaskForTelegram(String senderNumber, String message, String chatId) {
20+
public ForwardTaskForTelegram(String senderNumber, String message, String chatId, String token) {
2021
this.senderNumber = senderNumber;
2122
this.message = message;
2223
this.chatId = chatId;
23-
}
24-
25-
static private void httpRequest(String endpoint, String content) throws IOException {
26-
URL url = new URL(endpoint);
27-
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
28-
connection.setRequestMethod("POST");
29-
connection.setRequestProperty("Content-Type", "application/json; utf-8");
30-
31-
connection.setDoOutput(true);
32-
33-
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
34-
out.write(content);
35-
out.flush();
36-
out.close();
37-
38-
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
39-
String line;
40-
StringBuilder response = new StringBuilder();
41-
while ((line = reader.readLine()) != null) {
42-
response.append(line);
43-
}
44-
reader.close();
45-
46-
Log.d(Forwarder.class.toString(), String.valueOf(connection.getResponseCode()));
47-
Log.d(Forwarder.class.toString(), response.toString());
48-
49-
connection.disconnect();
24+
this.token = token;
5025
}
5126

5227
@Override
5328
protected Void doInBackground(Void... voids) {
5429
try {
5530
sendViaTelegram(
5631
chatId,
57-
String.format("Message from %s:\n%s", senderNumber, message));
32+
String.format("Message from %s:\n%s", senderNumber, message),
33+
token
34+
);
5835
} catch (IOException e) {
5936
Log.d(Forwarder.class.toString(), e.toString());
6037
}
6138
return null;
6239
}
6340

64-
private void sendViaTelegram(String chatId, String message) throws IOException {
65-
String token = "";
66-
Uri.Builder builder = new Uri.Builder();
67-
Uri uri = builder
41+
private void sendViaTelegram(String chatId, String message, String token) throws IOException {
42+
TaskForWeb.httpRequest(new Uri.Builder()
6843
.scheme("https")
6944
.authority("api.telegram.org")
7045
.appendPath(String.format("bot%s", token))
7146
.appendPath("sendMessage")
7247
.appendQueryParameter("chat_id", chatId)
7348
.appendQueryParameter("text", message)
74-
.build();
75-
76-
httpRequest(uri.toString(), message);
49+
.build().toString(), message);
7750
}
7851
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.enixcoda.smsforward;
2+
3+
import android.net.Uri;
4+
import android.os.AsyncTask;
5+
import android.util.Log;
6+
7+
import org.json.JSONException;
8+
import org.json.JSONObject;
9+
10+
import java.io.IOException;
11+
12+
public class ForwardTaskForWeb extends AsyncTask<Void, Void, Void> {
13+
String senderNumber;
14+
String message;
15+
String endpoint;
16+
17+
public ForwardTaskForWeb(String senderNumber, String message, String endpoint) {
18+
this.senderNumber = senderNumber;
19+
this.message = message;
20+
this.endpoint = endpoint;
21+
}
22+
23+
@Override
24+
protected Void doInBackground(Void... voids) {
25+
try {
26+
JSONObject body = new JSONObject();
27+
body.put("from", senderNumber);
28+
body.put("message", message);
29+
TaskForWeb.httpRequest(endpoint, body.toString());
30+
} catch (IOException e) {
31+
Log.d(Forwarder.class.toString(), e.toString());
32+
} catch (JSONException e) {
33+
Log.d(Forwarder.class.toString(), e.toString());
34+
}
35+
return null;
36+
}
37+
38+
}

app/src/main/java/com/enixcoda/smsforward/Forwarder.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ public static void forwardViaSMS(String senderNumber, String forwardContent, Str
2828
}
2929
}
3030

31-
public static void forwardViaTelegram(String senderNumber, String message, String targetTelegramID) {
32-
new ForwardTaskForTelegram(senderNumber, message, targetTelegramID).execute();
31+
public static void forwardViaTelegram(String senderNumber, String message, String targetTelegramID, String telegramToken) {
32+
new ForwardTaskForTelegram(senderNumber, message, targetTelegramID, telegramToken).execute();
33+
}
34+
public static void forwardViaWeb(String senderNumber, String message, String endpoint) {
35+
new ForwardTaskForWeb(senderNumber, message, endpoint).execute();
3336
}
3437
}

app/src/main/java/com/enixcoda/smsforward/SMSReceiver.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ public void onReceive(Context context, Intent intent) {
2020
final boolean enableSMS = sharedPreferences.getBoolean(context.getString(R.string.key_enable_sms), false);
2121
final String targetNumber = sharedPreferences.getString(context.getString(R.string.key_target_sms), "");
2222

23+
final boolean enableWeb = sharedPreferences.getBoolean(context.getString(R.string.key_enable_web), false);
24+
final String targetWeb = sharedPreferences.getString(context.getString(R.string.key_target_web), "");
25+
2326
final boolean enableTelegram = sharedPreferences.getBoolean(context.getString(R.string.key_enable_telegram), false);
2427
final String targetTelegram = sharedPreferences.getString(context.getString(R.string.key_target_telegram), "");
28+
final String telegramToken = sharedPreferences.getString(context.getString(R.string.key_telegram_apikey), "");
2529

26-
if (!enableSMS && !enableTelegram) return;
30+
if (!enableSMS && !enableTelegram && !enableWeb) return;
2731

2832
final Bundle bundle = intent.getExtras();
2933
final Object[] pduObjects = (Object[]) bundle.get("pdus");
@@ -36,18 +40,20 @@ public void onReceive(Context context, Intent intent) {
3640

3741
if (senderNumber.equals(targetNumber)) {
3842
// reverse message
39-
String formatRegex = "to (\\+?\\d+?):\\n((.|\\n)*)";
43+
String formatRegex = "To (\\+?\\d+?):\\n((.|\\n)*)";
4044
if (rawMessageContent.equals(formatRegex)) {
4145
String forwardNumber = rawMessageContent.replaceFirst(formatRegex, "$1");
4246
String forwardContent = rawMessageContent.replaceFirst(formatRegex, "$2");
4347
Forwarder.sendSMS(forwardNumber, forwardContent);
4448
}
4549
} else {
4650
// normal message, forwarded
47-
if (enableSMS)
51+
if (enableSMS && !targetNumber.equals(""))
4852
Forwarder.forwardViaSMS(senderNumber, rawMessageContent, targetNumber);
49-
if (enableTelegram)
50-
Forwarder.forwardViaTelegram(senderNumber, rawMessageContent, targetTelegram);
53+
if (enableTelegram && !targetTelegram.equals("") && !telegramToken.equals(""))
54+
Forwarder.forwardViaTelegram(senderNumber, rawMessageContent, targetTelegram, telegramToken);
55+
if (enableWeb && !targetWeb.equals(""))
56+
Forwarder.forwardViaWeb(senderNumber, rawMessageContent, targetWeb);
5157
}
5258
}
5359
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.enixcoda.smsforward;
2+
3+
import android.net.Uri;
4+
import android.os.AsyncTask;
5+
import android.util.Log;
6+
7+
import java.io.BufferedReader;
8+
import java.io.IOException;
9+
import java.io.InputStreamReader;
10+
import java.io.OutputStreamWriter;
11+
import java.net.HttpURLConnection;
12+
import java.net.URL;
13+
14+
public class TaskForWeb extends AsyncTask<Void, Void, Void> {
15+
static public void httpRequest(String endpoint, String content) throws IOException {
16+
URL url = new URL(endpoint);
17+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
18+
connection.setRequestMethod("POST");
19+
connection.setRequestProperty("Content-Type", "application/json; utf-8");
20+
21+
connection.setDoOutput(true);
22+
23+
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
24+
out.write(content);
25+
out.flush();
26+
out.close();
27+
28+
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
29+
String line;
30+
StringBuilder response = new StringBuilder();
31+
while ((line = reader.readLine()) != null) {
32+
response.append(line);
33+
}
34+
reader.close();
35+
36+
Log.d(Forwarder.class.toString(), String.valueOf(connection.getResponseCode()));
37+
Log.d(Forwarder.class.toString(), response.toString());
38+
39+
connection.disconnect();
40+
}
41+
42+
@Override
43+
protected Void doInBackground(Void... voids) {
44+
return null;
45+
}
46+
}

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@
1414
<string name="header_telegram">Forward via Telegram</string>
1515
<string name="enable_telegram">Enable Telegram</string>
1616
<string name="key_target_telegram">key_target_telegram</string>
17+
<string name="key_telegram_apikey">key_telegram_apikey</string>
1718
<string name="target_title_telegram">Target Telegram ID</string>
18-
<string name="target_summary_telegram"></string>
19+
<string name="title_telegram_apikey">Telegram API KEY</string>
20+
21+
<!-- Web -->
22+
<string name="key_enable_web">key_enable_web</string>
23+
<string name="header_web">Forward via Web</string>
24+
<string name="enable_web">Enable Web</string>
25+
<string name="key_target_web">key_target_web</string>
26+
<string name="target_title_web">Target Web URL</string>
27+
<string name="target_summary_web">Example: https://site.com/api\nThis app will send POST request on receive SMS, request body example:\n{ "from": "10000", "message": "Hello" }</string>
1928
</resources>

app/src/main/res/xml/root_preferences.xml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,33 @@
3838
android:selectAllOnFocus="true"
3939
android:singleLine="true"
4040
android:title="@string/target_title_telegram"
41+
app:iconSpaceReserved="false" />
42+
<EditTextPreference
43+
android:defaultValue=""
44+
android:key="@string/key_telegram_apikey"
45+
android:selectAllOnFocus="true"
46+
android:singleLine="true"
47+
android:title="@string/title_telegram_apikey"
48+
app:iconSpaceReserved="false" />
49+
50+
</PreferenceCategory>
51+
52+
<PreferenceCategory
53+
app:title="@string/header_web"
54+
app:iconSpaceReserved="false">
55+
56+
<SwitchPreferenceCompat
4157
app:iconSpaceReserved="false"
42-
app:summary="@string/target_summary_telegram" />
58+
android:key="@string/key_enable_web"
59+
app:title="@string/enable_web" />
60+
<EditTextPreference
61+
android:defaultValue=""
62+
android:key="@string/key_target_web"
63+
android:selectAllOnFocus="true"
64+
android:singleLine="true"
65+
android:title="@string/target_title_web"
66+
android:summary="@string/target_summary_web"
67+
app:iconSpaceReserved="false" />
4368

4469
</PreferenceCategory>
4570

0 commit comments

Comments
 (0)