MuclumbusService.java

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