Skip to content

Commit d77fa4d

Browse files
committed
Added new methods for working with stickers: getStickerSet, uploadStickerFile, createNewStickerSet, addStickerToSet, setStickerPositionInSet, and deleteStickerFromSet
1 parent 46fdd82 commit d77fa4d

17 files changed

+251
-23
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.pengrad.telegrambot.request;
2+
3+
import com.pengrad.telegrambot.response.BaseResponse;
4+
5+
import java.io.File;
6+
7+
/**
8+
* Stas Parshin
9+
* 23 July 2017
10+
*/
11+
abstract public class AbstractUploadRequest<T extends BaseRequest, R extends BaseResponse> extends BaseRequest<T, R> {
12+
13+
private final boolean isMultipart;
14+
15+
public AbstractUploadRequest(Class<? extends R> responseClass, String paramName, Object data) {
16+
super(responseClass);
17+
if (data instanceof String) {
18+
isMultipart = false;
19+
} else if (data instanceof File) {
20+
isMultipart = true;
21+
} else if (data instanceof byte[]) {
22+
isMultipart = true;
23+
} else {
24+
throw new IllegalArgumentException("Sending data should be String, File or byte[]");
25+
}
26+
add(paramName, data);
27+
}
28+
29+
@Override
30+
public boolean isMultipart() {
31+
return isMultipart;
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.pengrad.telegrambot.request;
2+
3+
import com.pengrad.telegrambot.response.BaseResponse;
4+
5+
/**
6+
* Stas Parshin
7+
* 23 July 2017
8+
*/
9+
public class AddStickerToSet extends AbstractUploadRequest<AddStickerToSet, BaseResponse> {
10+
11+
public AddStickerToSet(Integer userId, String name, Object pngSticker, String emojis) {
12+
super(BaseResponse.class, "png_sticker", pngSticker);
13+
add("user_id", userId);
14+
add("name", name);
15+
add("emojis", emojis);
16+
}
17+
}

library/src/main/java/com/pengrad/telegrambot/request/AnswerInlineQuery.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.pengrad.telegrambot.request;
22

3-
import com.google.gson.Gson;
43
import com.pengrad.telegrambot.model.request.InlineQueryResult;
54
import com.pengrad.telegrambot.response.BaseResponse;
65

@@ -10,12 +9,9 @@
109
*/
1110
public class AnswerInlineQuery extends BaseRequest<AnswerInlineQuery, BaseResponse> {
1211

13-
// todo remove gson
14-
private static Gson gson = new Gson();
15-
1612
public AnswerInlineQuery(String inlineQueryId, InlineQueryResult... results) {
1713
super(BaseResponse.class);
18-
add("inline_query_id", inlineQueryId).add("results", gson.toJson(results));
14+
add("inline_query_id", inlineQueryId).add("results", serialize(results));
1915
}
2016

2117
public AnswerInlineQuery cacheTime(int cacheTime) {

library/src/main/java/com/pengrad/telegrambot/request/AnswerShippingQuery.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class AnswerShippingQuery extends BaseRequest<AnswerShippingQuery, BaseRe
1414

1515
public AnswerShippingQuery(String shippingQueryId, ShippingOption... shippingOptions) {
1616
super(BaseResponse.class);
17-
add("shipping_query_id", shippingQueryId).add("ok", true).add("shipping_options", gson.toJson(shippingOptions));
17+
add("shipping_query_id", shippingQueryId).add("ok", true).add("shipping_options", serialize(shippingOptions));
1818
}
1919

2020
public AnswerShippingQuery(String shippingQueryId, String errorMessage) {

library/src/main/java/com/pengrad/telegrambot/request/BaseRequest.java

+9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.pengrad.telegrambot.request;
22

3+
import com.google.gson.Gson;
34
import com.pengrad.telegrambot.response.BaseResponse;
45

56
import java.lang.reflect.Type;
@@ -12,6 +13,8 @@
1213
*/
1314
abstract public class BaseRequest<T extends BaseRequest, R extends BaseResponse> {
1415

16+
private static final Gson gson = new Gson();
17+
1518
@SuppressWarnings("unchecked")
1619
protected final T thisAsT = (T) this;
1720

@@ -56,4 +59,10 @@ public String getContentType() {
5659
public int getTimeoutSeconds() {
5760
return 0;
5861
}
62+
63+
// Serialize model objects. Basically convert to json
64+
// todo move to TelegramBotClient, let it serialize everything in request time
65+
protected String serialize(Object o) {
66+
return gson.toJson(o);
67+
}
5968
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.pengrad.telegrambot.request;
2+
3+
import com.pengrad.telegrambot.model.MaskPosition;
4+
import com.pengrad.telegrambot.response.BaseResponse;
5+
6+
/**
7+
* Stas Parshin
8+
* 23 July 2017
9+
*/
10+
public class CreateNewStickerSet extends AbstractUploadRequest<CreateNewStickerSet, BaseResponse> {
11+
12+
public CreateNewStickerSet(Integer userId, String name, String title, Object pngSticker, String emojis) {
13+
super(BaseResponse.class, "png_sticker", pngSticker);
14+
add("user_id", userId);
15+
add("name", name);
16+
add("title", title);
17+
add("emojis", emojis);
18+
}
19+
20+
public CreateNewStickerSet containsMasks(boolean containsMasks) {
21+
return add("contains_masks", containsMasks);
22+
}
23+
24+
public CreateNewStickerSet maskPosition(MaskPosition maskPosition) {
25+
return add("mask_position", serialize(maskPosition)).containsMasks(true);
26+
}
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.pengrad.telegrambot.request;
2+
3+
import com.pengrad.telegrambot.response.BaseResponse;
4+
5+
/**
6+
* Stas Parshin
7+
* 23 July 2017
8+
*/
9+
public class DeleteStickerFromSet extends BaseRequest<DeleteStickerFromSet, BaseResponse> {
10+
public DeleteStickerFromSet(String sticker) {
11+
super(BaseResponse.class);
12+
add("sticker", sticker);
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.pengrad.telegrambot.request;
2+
3+
import com.pengrad.telegrambot.response.GetStickerSetResponse;
4+
5+
/**
6+
* Stas Parshin
7+
* 23 July 2017
8+
*/
9+
public class GetStickerSet extends BaseRequest<GetStickerSet, GetStickerSetResponse> {
10+
11+
public GetStickerSet(String name) {
12+
super(GetStickerSetResponse.class);
13+
add("name", name);
14+
}
15+
}

library/src/main/java/com/pengrad/telegrambot/request/GetUpdates.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.pengrad.telegrambot.request;
22

3-
import com.google.gson.Gson;
43
import com.pengrad.telegrambot.response.GetUpdatesResponse;
54

65
/**
@@ -9,9 +8,6 @@
98
*/
109
public class GetUpdates extends BaseRequest<GetUpdates, GetUpdatesResponse> {
1110

12-
// todo remove gson
13-
private static Gson gson = new Gson();
14-
1511
private int timeout = 0;
1612
private int limit = 100;
1713

@@ -34,7 +30,7 @@ public GetUpdates timeout(int timeout) {
3430
}
3531

3632
public GetUpdates allowedUpdates(String... allowedUpdates) {
37-
return add("allowed_updates", gson.toJson(allowedUpdates));
33+
return add("allowed_updates", serialize(allowedUpdates));
3834
}
3935

4036
@Override

library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.pengrad.telegrambot.request;
22

3-
import com.google.gson.Gson;
43
import com.pengrad.telegrambot.model.request.LabeledPrice;
54

65
/**
@@ -9,14 +8,11 @@
98
*/
109
public class SendInvoice extends AbstractSendRequest<SendInvoice> {
1110

12-
// todo remove gson
13-
private static Gson gson = new Gson();
14-
1511
public SendInvoice(Integer chatId, String title, String description, String payload, String providerToken,
1612
String startParameter, String currency, LabeledPrice... prices) {
1713
super(chatId);
1814
add("title", title).add("description", description).add("payload", payload).add("provider_token", providerToken)
19-
.add("start_parameter", startParameter).add("currency", currency).add("prices", gson.toJson(prices));
15+
.add("start_parameter", startParameter).add("currency", currency).add("prices", serialize(prices));
2016
}
2117

2218
public SendInvoice photoUrl(String photoUrl) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.pengrad.telegrambot.request;
2+
3+
import com.pengrad.telegrambot.response.BaseResponse;
4+
5+
/**
6+
* Stas Parshin
7+
* 23 July 2017
8+
*/
9+
public class SetStickerPositionInSet extends BaseRequest<SetStickerPositionInSet, BaseResponse> {
10+
11+
public SetStickerPositionInSet(String sticker, int position) {
12+
super(BaseResponse.class);
13+
add("sticker", sticker).add("position", position);
14+
}
15+
}

library/src/main/java/com/pengrad/telegrambot/request/SetWebhook.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.pengrad.telegrambot.request;
22

3-
import com.google.gson.Gson;
43
import com.pengrad.telegrambot.response.BaseResponse;
54

65
import java.io.File;
@@ -11,9 +10,6 @@
1110
*/
1211
public class SetWebhook extends BaseRequest<SetWebhook, BaseResponse> {
1312

14-
// todo remove gson
15-
private static Gson gson = new Gson();
16-
1713
private boolean isMultipart = false;
1814

1915
public SetWebhook() {
@@ -39,7 +35,7 @@ public SetWebhook maxConnections(int maxConnections) {
3935
}
4036

4137
public SetWebhook allowedUpdates(String... allowedUpdates) {
42-
return add("allowed_updates", gson.toJson(allowedUpdates));
38+
return add("allowed_updates", serialize(allowedUpdates));
4339
}
4440

4541
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.pengrad.telegrambot.request;
2+
3+
import com.pengrad.telegrambot.response.GetFileResponse;
4+
5+
/**
6+
* Stas Parshin
7+
* 23 July 2017
8+
*/
9+
public class UploadStickerFile extends AbstractUploadRequest<UploadStickerFile, GetFileResponse> {
10+
11+
public UploadStickerFile(Integer userId, Object pngSticker) {
12+
super(GetFileResponse.class, "png_sticker", pngSticker);
13+
add("user_id", userId);
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.pengrad.telegrambot.response;
2+
3+
import com.pengrad.telegrambot.model.StickerSet;
4+
5+
/**
6+
* Stas Parshin
7+
* 23 July 2017
8+
*/
9+
public class GetStickerSetResponse extends BaseResponse {
10+
11+
private StickerSet result;
12+
13+
public StickerSet stickerSet() {
14+
return result;
15+
}
16+
17+
@Override
18+
public String toString() {
19+
return "GetStickerSetResponse{" +
20+
"result=" + result +
21+
'}';
22+
}
23+
}

library/src/test/java/com/pengrad/telegrambot/FileTest.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@
1111
public class FileTest {
1212

1313
public static void check(File file) {
14+
check(file, true);
15+
}
16+
17+
public static void check(File file, boolean path) {
1418
assertNotNull(file.fileId());
1519
assertNotNull(file.fileSize());
16-
assertNotNull(file.filePath());
20+
if (path) assertNotNull(file.filePath());
1721
}
1822
}

0 commit comments

Comments
 (0)