aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server/configuration/XMPPConfig.java
blob: 2feef28648228165ff0699233dc7c6a74156d276 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.juick.server.configuration;

import com.juick.server.XMPPConnection;
import com.juick.server.XMPPServer;
import com.juick.server.xmpp.JidConverter;
import com.juick.server.xmpp.iq.MessageQuery;
import com.juick.server.xmpp.router.XMPPRouter;
import com.juick.server.xmpp.s2s.BasicXmppSession;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.core.convert.ConversionService;
import org.springframework.format.support.DefaultFormattingConversionService;
import rocks.xmpp.core.session.Extension;
import rocks.xmpp.core.session.XmppSessionConfiguration;
import rocks.xmpp.core.session.debug.LogbackDebugger;

import java.time.Duration;

@Configuration
@ConditionalOnProperty("xmppbot_jid")
public class XMPPConfig {
    @Value("${hostname:localhost}")
    private String hostname;
    @Bean
    public BasicXmppSession session() {
        XmppSessionConfiguration configuration = XmppSessionConfiguration.builder()
                .extensions(Extension.of(com.juick.Message.class), Extension.of(MessageQuery.class))
                .debugger(LogbackDebugger.class)
                .defaultResponseTimeout(Duration.ofMillis(120000))
                .build();
        return BasicXmppSession.create(hostname, configuration);
    }
    @Bean
    public static ConversionService conversionService() {
        DefaultFormattingConversionService cs = new DefaultFormattingConversionService();
        cs.addConverter(new JidConverter());
        return cs;
    }
    @Bean
    public XMPPServer xmppServer() {
        return new XMPPServer();
    }
    @Bean
    public XMPPRouter xmppRouter() {
        return new XMPPRouter();
    }
    @Bean
    @DependsOn("xmppRouter")
    public XMPPConnection xmppConnection() {
        return new XMPPConnection();
    }
}