Skip to content

Commit

Permalink
Merge pull request #412 from pengrad/request_extension
Browse files Browse the repository at this point in the history
Add API method-specific extension functions
  • Loading branch information
pengrad authored Jan 26, 2025
2 parents 935af7b + c9c33c1 commit 0a73c2c
Show file tree
Hide file tree
Showing 59 changed files with 902 additions and 555 deletions.
1 change: 1 addition & 0 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ dependencies {
testImplementation 'junit:junit:4.13.1'
testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.1.13'
testImplementation 'org.reflections:reflections:0.9.12'
testImplementation 'org.jetbrains.kotlin:kotlin-reflect'
}

jar {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.pengrad.telegrambot

import com.pengrad.telegrambot.request.BaseRequest
import com.pengrad.telegrambot.response.BaseResponse

@get:JvmName("getEmptyRequestPreprocessor")
val EMPTY_REQUEST_PREPROCESSOR: RequestPreprocessor = object : RequestPreprocessor {
override fun <REQ : BaseRequest<REQ, RES>, RES : BaseResponse> process(request: BaseRequest<REQ, RES>) {
// do nothing
}
}

interface RequestPreprocessor {

fun <REQ : BaseRequest<REQ, RES>, RES : BaseResponse> process(request: BaseRequest<REQ, RES>)

}
10 changes: 10 additions & 0 deletions library/src/main/java/com/pengrad/telegrambot/TelegramAware.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.pengrad.telegrambot

import com.pengrad.telegrambot.request.BaseRequest
import com.pengrad.telegrambot.response.BaseResponse

interface TelegramAware {

fun <REQ : BaseRequest<REQ, RES>, RES : BaseResponse> execute(request: BaseRequest<REQ, RES>): RES

}
19 changes: 17 additions & 2 deletions library/src/main/java/com/pengrad/telegrambot/TelegramBot.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,27 @@
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import org.jetbrains.annotations.NotNull;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.TimeUnit;

import static com.pengrad.telegrambot.RequestPreprocessorKt.getEmptyRequestPreprocessor;

/**
* Stas Parshin
* 16 October 2015
*/
public class TelegramBot {
public class TelegramBot implements TelegramAware {

private final String token;
private final TelegramBotClient api;
private final FileApi fileApi;
private final UpdatesHandler updatesHandler;
private final RequestPreprocessor requestPreprocessor;

public TelegramBot(String botToken) {
this(new Builder(botToken));
Expand All @@ -39,13 +43,17 @@ public TelegramBot(String botToken) {
this.api = builder.api;
this.fileApi = builder.fileApi;
this.updatesHandler = builder.updatesHandler;
this.requestPreprocessor = builder.requestPreprocessor;
}

public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequest<T, R> request) {
@NotNull
public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(@NotNull BaseRequest<T, R> request) {
requestPreprocessor.process(request);
return api.send(request);
}

public <T extends BaseRequest<T, R>, R extends BaseResponse> Cancellable execute(T request, Callback<T, R> callback) {
requestPreprocessor.process(request);
return api.send(request, callback);
}

Expand Down Expand Up @@ -98,6 +106,7 @@ public static final class Builder {
private FileApi fileApi;
private TelegramBotClient api;
private UpdatesHandler updatesHandler;
private RequestPreprocessor requestPreprocessor;

private OkHttpClient okHttpClient;
private String apiUrl;
Expand All @@ -109,6 +118,7 @@ public Builder(String botToken) {
api = new TelegramBotClient(client(null), gson(), apiUrl(API_URL, botToken, useTestServer));
fileApi = new FileApi(botToken);
updatesHandler = new UpdatesHandler(100);
requestPreprocessor = getEmptyRequestPreprocessor();
}

public Builder debug() {
Expand Down Expand Up @@ -141,6 +151,11 @@ public Builder useTestServer(boolean useTestServer) {
return this;
}

public Builder requestPreprocessor(RequestPreprocessor requestPreprocessor) {
this.requestPreprocessor = requestPreprocessor;
return this;
}

public TelegramBot build() {
if (okHttpClient != null || apiUrl != null) {
OkHttpClient client = okHttpClient != null ? okHttpClient : client(null);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.pengrad.telegrambot.model

data class PreparedInlineMessage(
@get:JvmName("id") val id: String,
@get:JvmName("expirationDate") val expirationDate: Int
)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.pengrad.telegrambot.model

data class SuccessfulPayment(
@get:JvmName("currency") val currency: String,
@get:JvmName("totalAmount") val totalAmount: Int,
@get:JvmName("invoicePayload") val invoicePayload: String,
@get:JvmName("subscriptionExpirationDate") val subscriptionExpirationDate: Int? = null,
@get:JvmName("isRecurring") val isRecurring: Boolean? = null,
@get:JvmName("isFirstRecurring") val isFirstRecurring: Boolean? = null,
@get:JvmName("shippingOptionId") val shippingOptionId: String? = null,
@get:JvmName("orderInfo") val orderInfo: OrderInfo? = null,
@get:JvmName("telegramPaymentChargeId") val telegramPaymentChargeId: String,
@get:JvmName("providerPaymentChargeId") val providerPaymentChargeId: String
)
11 changes: 11 additions & 0 deletions library/src/main/java/com/pengrad/telegrambot/model/gift/Gift.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pengrad.telegrambot.model.gift

import com.pengrad.telegrambot.model.Sticker

data class Gift(
@get:JvmName("id") val id: String,
@get:JvmName("sticker") val sticker: Sticker,
@get:JvmName("starCount") val starCount: Int,
@get:JvmName("totalCount") val totalCount: Int,
@get:JvmName("remainingCount") val remainingCount: Int
)
18 changes: 18 additions & 0 deletions library/src/main/java/com/pengrad/telegrambot/model/gift/Gifts.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.pengrad.telegrambot.model.gift

data class Gifts(
@get:JvmName("gifts") val gifts: Array<Gift>
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is Gifts) return false

if (!gifts.contentEquals(other.gifts)) return false

return true
}

override fun hashCode(): Int {
return gifts.contentHashCode()
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.pengrad.telegrambot.model.stars

import com.pengrad.telegrambot.model.stars.partner.TransactionPartner

data class StarTransaction(
@get:JvmName("id") val id: String,
@get:JvmName("amount") val amount: Int,
@get:JvmName("nanostarAmount") val nanostarAmount: Int? = null,
@get:JvmName("date") val date: Int,
@get:JvmName("source") val source: TransactionPartner? = null,
@get:JvmName("receiver") val receiver: TransactionPartner? = null
)

This file was deleted.

Loading

0 comments on commit 0a73c2c

Please sign in to comment.