Skip to content

Commit 713fdea

Browse files
Добавил новые классы для работы с геокодированием, обновил конфигурацию и улучшил обработку состояний в регистрации
1 parent 601b97f commit 713fdea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1499
-283
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ build/
3535
.vscode/
3636

3737
### Mac OS ###
38-
.DS_Store
38+
.DS_Store
39+
40+
dev.env

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,14 @@
8383
<dependency>
8484
<groupId>org.mongodb</groupId>
8585
<artifactId>mongodb-driver-sync</artifactId>
86-
<version>3.9.1</version>
86+
<version>4.11.2</version>
8787
</dependency>
8888
<dependency>
8989
<groupId>dev.morphia.morphia</groupId>
9090
<artifactId>morphia-core</artifactId>
91-
<version>2.4.14</version>
91+
<version>2.5.0</version>
9292
</dependency>
9393
</dependencies>
9494

9595

96-
</project>
96+
</project>

src/main/java/ru/untitled_devs/bot/Main.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,44 @@
11
package ru.untitled_devs.bot;
22

33

4+
import com.mongodb.client.MongoClient;
5+
import com.mongodb.client.MongoClients;
6+
import dev.morphia.Datastore;
7+
import dev.morphia.Morphia;
48
import org.apache.logging.log4j.LogManager;
59
import org.apache.logging.log4j.Logger;
610
import org.telegram.telegrambots.meta.TelegramBotsApi;
711
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
812
import ru.untitled_devs.bot.config.Config;
13+
import ru.untitled_devs.bot.features.registration.RegistrationRouter;
14+
import ru.untitled_devs.bot.features.registration.middlewares.LoginMiddleware;
915
import ru.untitled_devs.bot.features.start.StartRouter;
10-
import ru.untitled_devs.core.client.Bot;
16+
import ru.untitled_devs.bot.shared.geocoder.Geocoder;
17+
import ru.untitled_devs.bot.shared.geocoder.yandex.YandexGeocoder;
18+
import ru.untitled_devs.core.client.PollingClient;
1119
import ru.untitled_devs.core.fsm.storage.InMemoryStorage;
1220

1321
public class Main {
14-
static Config config = new Config();
1522
static InMemoryStorage storage = new InMemoryStorage();
1623
protected static final Logger logger = LogManager.getLogger();
24+
private static final Geocoder geocoder =
25+
new YandexGeocoder(Config.getGeocodingConfig().getApiUrl(),
26+
Config.getGeocodingConfig().getApiKey());
1727

1828

1929
public static void main(String[] args) {
2030
try {
31+
MongoClient client = MongoClients.create(Config.getMongoConfig().getMongoString());
32+
Datastore datastore = Morphia.createDatastore(client, Config.getMongoConfig().getMongoDBName());
33+
2134
TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
22-
Bot bot = new Bot(config.getBotToken(), config.getBotName(), storage,logger);
35+
PollingClient bot = new PollingClient(Config.getBotConfig().getBotToken(),
36+
Config.getBotConfig().getBotName(), storage,logger);
37+
38+
bot.addMiddleware(new LoginMiddleware());
2339

2440
bot.addRouter(new StartRouter(bot));
41+
bot.addRouter(new RegistrationRouter(bot, datastore, geocoder));
2542

2643
botsApi.registerBot(bot);
2744
} catch (Exception e) {
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package ru.untitled_devs.bot.config;
2+
3+
public final class BotConfig {
4+
private String botToken;
5+
private String botName;
6+
7+
public BotConfig (){loadVariables();}
8+
9+
private void loadVariables() {
10+
botToken = System.getenv("BOT_TOKEN");
11+
botName = System.getenv("BOT_NAME");
12+
}
13+
14+
public String getBotToken() {
15+
return botToken;
16+
}
17+
18+
public String getBotName() {
19+
return botName;
20+
}
21+
}
Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
package ru.untitled_devs.bot.config;
22

3-
public final class Config {
4-
private String botToken;
5-
private String botName;
3+
import java.util.Objects;
64

7-
public Config() {
8-
loadVariables();
9-
}
5+
public final class Config {
6+
private static BotConfig botConfig = new BotConfig();
7+
private static MongoConfig mongoConfig = new MongoConfig();
8+
private static GeocodingConfig geocodingConfig = new GeocodingConfig();
109

11-
private void loadVariables() {
12-
this.botToken = System.getenv("BOT_TOKEN");
13-
this.botName = System.getenv("BOT_NAME");
14-
}
10+
public static BotConfig getBotConfig() {
11+
return botConfig;
12+
}
1513

16-
public String getBotToken() {
17-
return this.botToken;
18-
}
14+
public static MongoConfig getMongoConfig() {
15+
return mongoConfig;
16+
}
1917

20-
public String getBotName() {
21-
return this.botName;
22-
}
18+
public static GeocodingConfig getGeocodingConfig() {
19+
return geocodingConfig;
20+
}
2321
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package ru.untitled_devs.bot.config;
2+
3+
public final class GeocodingConfig {
4+
private String apiUrl;
5+
private String apiKey;
6+
7+
public GeocodingConfig() {
8+
loadVariables();
9+
}
10+
11+
private void loadVariables() {
12+
apiUrl = System.getenv("YANDEX_API_URL");
13+
apiKey = System.getenv("YANDEX_API_KEY");
14+
}
15+
16+
public String getApiUrl() {
17+
return apiUrl;
18+
}
19+
20+
public String getApiKey() {
21+
return apiKey;
22+
}
23+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package ru.untitled_devs.bot.config;
2+
3+
import java.util.Objects;
4+
5+
public final class MongoConfig {
6+
private String mongoHost;
7+
private int mongoPort;
8+
private String mongoUser;
9+
private String mongoPass;
10+
private String mongoDBName;
11+
private boolean mongoDirectConnection;
12+
13+
public MongoConfig() {
14+
loadVariables();
15+
}
16+
17+
private void loadVariables() {
18+
mongoHost = System.getenv("MONGO_HOST");
19+
mongoPort = Integer.parseInt(System.getenv("MONGO_PORT"));
20+
mongoUser = System.getenv("MONGO_USER");
21+
mongoPass = System.getenv("MONGO_PASS");
22+
mongoDBName = System.getenv("MONGO_DBNAME");
23+
mongoDirectConnection = Objects.equals(System.getenv("MONGO_DIRECT_CONNECTION"), "true");
24+
}
25+
26+
public String getMongoHost() {
27+
return mongoHost;
28+
}
29+
30+
public int getMongoPort() {
31+
return mongoPort;
32+
}
33+
34+
public String getMongoUser() {
35+
return mongoUser;
36+
}
37+
38+
public String getMongoPass() {
39+
return mongoPass;
40+
}
41+
42+
public String getMongoDBName() {
43+
return mongoDBName;
44+
}
45+
46+
public String getMongoString() {
47+
return String.format("mongodb://%s:%s@%s:%d/?directConnection=%s",
48+
mongoUser, mongoPass, mongoHost, mongoPort, mongoDirectConnection ? "true" : "false");
49+
}
50+
}

src/main/java/ru/untitled_devs/bot/features/registration/RegistraitonRouter.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)