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}