MuclumbusService.java

 1package eu.siacs.conversations.http.services;
 2
 3import java.util.Collections;
 4import java.util.List;
 5import java.util.Set;
 6
 7import eu.siacs.conversations.services.AvatarService;
 8import eu.siacs.conversations.utils.UIHelper;
 9import retrofit2.Call;
10import retrofit2.http.Body;
11import retrofit2.http.GET;
12import retrofit2.http.POST;
13import retrofit2.http.Query;
14import rocks.xmpp.addr.Jid;
15
16public interface MuclumbusService {
17
18    @GET("/api/1.0/rooms/unsafe")
19    Call<Rooms> getRooms(@Query("p") int page);
20
21    @POST("/api/1.0/search")
22    Call<SearchResult> search(@Body SearchRequest searchRequest);
23
24    class Rooms {
25        int page;
26        int total;
27        int pages;
28        public List<Room> items;
29    }
30
31    class Room implements AvatarService.Avatarable {
32
33        public String address;
34        public int nusers;
35        public boolean is_open;
36        public String anonymity_mode;
37        public String name;
38        public String description;
39        public String language;
40
41        public String getName() {
42            return name;
43        }
44
45        public String getDescription() {
46            return description;
47        }
48
49        public Jid getRoom() {
50            try {
51                return Jid.of(address);
52            } catch (IllegalArgumentException e) {
53                return null;
54            }
55        }
56
57        @Override
58        public int getAvatarBackgroundColor() {
59            Jid room = getRoom();
60            return UIHelper.getColorForName(room != null ? room.asBareJid().toEscapedString() : name);
61        }
62    }
63
64    class SearchRequest {
65
66        public Set<String> keywords;
67
68        public SearchRequest(String keyword) {
69            this.keywords = Collections.singleton(keyword);
70        }
71    }
72
73    class SearchResult {
74
75        public Result result;
76
77    }
78
79    class Result {
80
81        public List<Room> items;
82
83    }
84
85}