Skip to content

Commit 9fc7db9

Browse files
author
Evan Wong
committed
Merge pull request #8 from evanwong/feature/delete-update-rooms-api
Feature/delete update rooms api
2 parents 6391b36 + d004918 commit 9fc7db9

12 files changed

Lines changed: 150 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ NoContent noContent = future.get();
5353
- [x] Create room
5454
- [x] Get room
5555
- [ ] Update room
56-
- [ ] Delete room
56+
- [x] Delete room
5757
- [ ] View room history
5858
- [ ] Get room message
5959
- [ ] View recent room history

src/main/java/io/evanwong/oss/hipchat/v2/HipChatClient.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import io.evanwong.oss.hipchat.v2.emoticons.GetAllEmoticonsRequestBuilder;
44
import io.evanwong.oss.hipchat.v2.emoticons.GetEmoticonRequestBuilder;
5-
import io.evanwong.oss.hipchat.v2.rooms.CreateRoomRequestBuilder;
6-
import io.evanwong.oss.hipchat.v2.rooms.GetAllRoomsRequestBuilder;
7-
import io.evanwong.oss.hipchat.v2.rooms.GetRoomRequestBuilder;
8-
import io.evanwong.oss.hipchat.v2.rooms.SendRoomNotificationRequestBuilder;
5+
import io.evanwong.oss.hipchat.v2.rooms.*;
96
import org.apache.http.impl.client.CloseableHttpClient;
107
import org.apache.http.impl.client.HttpClients;
118
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
@@ -102,6 +99,14 @@ public GetAllEmoticonsRequestBuilder prepareGetAllEmoticonsRequestBuilder(String
10299
return new GetAllEmoticonsRequestBuilder(accessToken, httpClient, executorService);
103100
}
104101

102+
public DeleteRoomRequestBuilder prepareDeleteRoomRequestBuilder(String roomIdOrName) {
103+
return prepareDeleteRoomRequestBuilder(roomIdOrName, defaultAccessToken);
104+
}
105+
106+
public DeleteRoomRequestBuilder prepareDeleteRoomRequestBuilder(String roomIdOrName, String accessToken) {
107+
return new DeleteRoomRequestBuilder(roomIdOrName, accessToken, httpClient, executorService);
108+
}
109+
105110
public void close() {
106111
log.info("Shutting down...");
107112
try {

src/main/java/io/evanwong/oss/hipchat/v2/commons/Created.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,12 @@ public Long getId() {
1212
public void setId(Long id) {
1313
this.id = id;
1414
}
15+
16+
public Links getLinks() {
17+
return links;
18+
}
19+
20+
public void setLinks(Links links) {
21+
this.links = links;
22+
}
1523
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.evanwong.oss.hipchat.v2.commons;
2+
3+
import org.apache.http.HttpResponse;
4+
import org.apache.http.client.HttpClient;
5+
import org.apache.http.client.methods.HttpDelete;
6+
import org.apache.http.client.methods.HttpPost;
7+
import org.apache.http.client.protocol.HttpClientContext;
8+
import org.apache.http.entity.StringEntity;
9+
import org.apache.http.message.BasicHeader;
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
12+
13+
import java.io.IOException;
14+
import java.util.Map;
15+
import java.util.concurrent.ExecutorService;
16+
17+
public abstract class DeleteRequest<T> extends Request<T> {
18+
19+
private static final Logger log = LoggerFactory.getLogger(DeleteRequest.class);
20+
21+
protected DeleteRequest(String accessToken, HttpClient httpClient, ExecutorService executorService) {
22+
super(accessToken, httpClient, executorService);
23+
}
24+
25+
@Override
26+
protected HttpResponse request() throws IOException {
27+
Map<String, Object> params = toQueryMap();
28+
log.info("POST - path: {}, params: {}", getPath(), params);
29+
30+
HttpDelete httpDelete = new HttpDelete(BASE_URL + getPath());
31+
httpDelete.addHeader(new BasicHeader("Authorization", "Bearer " + accessToken));
32+
httpDelete.addHeader(new BasicHeader("Content-Type", "application/json"));
33+
return httpClient.execute(httpDelete, HttpClientContext.create());
34+
}
35+
}

src/main/java/io/evanwong/oss/hipchat/v2/commons/GetRequest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ protected HttpResponse request() throws IOException {
3232
}
3333
log.info("GET - path: {}, params: {}", getPath(), params);
3434
String query = params != null && params.size() > 0 ? "?" : "";
35-
for (String key : params.keySet()) {
36-
query += key + "=" + params.get(key) + "&";
35+
if (params != null) {
36+
for (String key : params.keySet()) {
37+
query += key + "=" + params.get(key) + "&";
38+
}
3739
}
3840

3941
HttpGet httpGet = new HttpGet(BASE_URL + getPath() + query);

src/main/java/io/evanwong/oss/hipchat/v2/commons/Links.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package io.evanwong.oss.hipchat.v2.commons;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
5+
@JsonIgnoreProperties(ignoreUnknown=true)
36
public class Links {
47

58
private String self;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.evanwong.oss.hipchat.v2.rooms;
2+
3+
import io.evanwong.oss.hipchat.v2.commons.DeleteRequest;
4+
import io.evanwong.oss.hipchat.v2.commons.NoContent;
5+
import org.apache.http.client.HttpClient;
6+
7+
import java.util.Map;
8+
import java.util.concurrent.ExecutorService;
9+
10+
public class DeleteRoomRequest extends DeleteRequest<NoContent> {
11+
12+
private final String roomIdOrName;
13+
14+
public DeleteRoomRequest(String roomIdOrName, String accessToken, HttpClient httpClient, ExecutorService executorService) {
15+
super(accessToken, httpClient, executorService);
16+
this.roomIdOrName = roomIdOrName;
17+
}
18+
19+
public String getRoomIdOrName() {
20+
return roomIdOrName;
21+
}
22+
23+
@Override
24+
protected Map<String, Object> toQueryMap() {
25+
return null;
26+
}
27+
28+
@Override
29+
protected String getPath() {
30+
return "/room/" + roomIdOrName;
31+
}
32+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.evanwong.oss.hipchat.v2.rooms;
2+
3+
import io.evanwong.oss.hipchat.v2.commons.RequestBuilder;
4+
import org.apache.http.client.HttpClient;
5+
6+
import java.util.concurrent.ExecutorService;
7+
8+
public class DeleteRoomRequestBuilder extends RequestBuilder<DeleteRoomRequest> {
9+
10+
private final String roomIdOrName;
11+
12+
public DeleteRoomRequestBuilder(String roomIdOrName, String accessToken, HttpClient httpClient, ExecutorService executorService) {
13+
super(accessToken, httpClient, executorService);
14+
this.roomIdOrName = roomIdOrName;
15+
}
16+
17+
@Override
18+
public DeleteRoomRequest build() {
19+
return new DeleteRoomRequest(roomIdOrName, accessToken, httpClient, executorService);
20+
}
21+
}

src/main/java/io/evanwong/oss/hipchat/v2/rooms/GetRoomRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ protected Map<String, Object> toQueryMap() {
2222

2323
@Override
2424
protected String getPath() {
25-
return "/" + roomIdOrName;
25+
return "/room/" + roomIdOrName;
2626
}
2727
}

src/main/java/io/evanwong/oss/hipchat/v2/rooms/Room.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package io.evanwong.oss.hipchat.v2.rooms;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonSetter;
35
import io.evanwong.oss.hipchat.v2.commons.Links;
46

57
import java.util.Date;
68

9+
@JsonIgnoreProperties(ignoreUnknown=true)
710
public class Room {
811
private String xmppJid;
912
private Links statistics;
@@ -73,6 +76,13 @@ public void setPrivacy(Privacy privacy) {
7376
this.privacy = privacy;
7477
}
7578

79+
@JsonSetter("privacy")
80+
public void setPrivacyStr(String privacyStr) {
81+
if (privacyStr != null) {
82+
this.privacy = Privacy.valueOf(privacyStr.toUpperCase());
83+
}
84+
}
85+
7686
public Boolean getIsGuestAccessible() {
7787
return isGuestAccessible;
7888
}

0 commit comments

Comments
 (0)