Skip to content

Commit e953367

Browse files
author
Evan Wong
committed
Merge branch 'release/0.3.0'
* release/0.3.0: Bumped version to 0.3. Updated markdown. Checked if the ossrhUsername and ossrhPassword exist before apply sonatype.gradle. #16 Moved sfl4j simple logger to testRuntime. Added add room member unit test. Added client method for add room member. Added add room member request and builder. Added put request. Added a simple test for RemoveRoomMember. Added client methods for RemoveRoomMember. Added RemoveRoomMember request and request builder. Bumped version to 0.2.0. Conflicts: README.md build.gradle
2 parents 3397ef8 + 7cf6269 commit e953367

9 files changed

Lines changed: 206 additions & 7 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ To add this client into your project:
1616
<dependency>
1717
<groupId>io.evanwong.oss</groupId>
1818
<artifactId>hipchat-java</artifactId>
19-
<version>0.2.0</version>
19+
<version>0.3.0</version>
2020
</dependency>
2121
```
2222
* gradle
2323
```gradle
24-
compile 'io.evanwong.oss:hipchat-java:0.2.0'
24+
compile 'io.evanwong.oss:hipchat-java:0.3.0'
2525
```
2626

2727
To send a notification
@@ -58,8 +58,8 @@ NoContent noContent = future.get();
5858
- [ ] Get room message
5959
- [ ] View recent room history
6060
- [ ] Invite user
61-
- [ ] Add member
62-
- [ ] Remove member
61+
- [x] Add member
62+
- [x] Remove member
6363
- [ ] Get all members
6464
- [ ] Send room notification redirect
6565
- [x] Send room notification

build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ repositories {
1010
sourceCompatibility = 1.8
1111

1212
group = 'io.evanwong.oss'
13-
version = "0.2.0"
13+
version = "0.3.0"
1414

1515
dependencies {
1616
compile 'org.apache.httpcomponents:httpclient:4.3.5'
1717
compile 'org.slf4j:slf4j-api:1.7.7'
1818
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.2'
1919
testCompile "org.codehaus.groovy:groovy-all:2.3.7"
2020
testCompile "org.spockframework:spock-core:1.0-groovy-2.3-SNAPSHOT"
21-
runtime 'org.slf4j:slf4j-simple:1.7.7'
21+
testRuntime 'org.slf4j:slf4j-simple:1.7.7'
2222
}
2323

2424
test {
@@ -39,7 +39,9 @@ artifacts {
3939
archives javadocJar, sourcesJar
4040
}
4141

42-
apply from: 'sonatype.gradle'
42+
if (hasProperty('ossrhUsername') && hasProperty('ossrhPassword')) {
43+
apply from: 'sonatype.gradle'
44+
}
4345

4446
task wrapper(type: Wrapper) {
4547
gradleVersion = '2.2.1'

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,22 @@ public DeleteRoomRequestBuilder prepareDeleteRoomRequestBuilder(String roomIdOrN
107107
return new DeleteRoomRequestBuilder(roomIdOrName, accessToken, httpClient, executorService);
108108
}
109109

110+
public RemoveRoomMemberRequestBuilder prepareRemoveRoomMemberRequestBuilder(String userIdOrEmail, String roomIdOrName) {
111+
return prepareRemoveRoomMemberRequestBuilder(userIdOrEmail, roomIdOrName, defaultAccessToken);
112+
}
113+
114+
public RemoveRoomMemberRequestBuilder prepareRemoveRoomMemberRequestBuilder(String userIdOrEmail, String roomIdOrName, String accessToken) {
115+
return new RemoveRoomMemberRequestBuilder(userIdOrEmail, roomIdOrName, accessToken, httpClient, executorService);
116+
}
117+
118+
public AddRoomMemberRequestBuilder prepareAddRoomMemberRequestBuilder(String userIdOrEmail, String roomIdOrName) {
119+
return prepareAddRoomMemberRequestBuilder(userIdOrEmail, roomIdOrName, defaultAccessToken);
120+
}
121+
122+
public AddRoomMemberRequestBuilder prepareAddRoomMemberRequestBuilder(String userIdOrEmail, String roomIdOrName, String accessToken) {
123+
return new AddRoomMemberRequestBuilder(userIdOrEmail, roomIdOrName, accessToken, httpClient, executorService);
124+
}
125+
110126
public void close() {
111127
log.info("Shutting down...");
112128
try {
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.HttpPut;
6+
import org.apache.http.client.protocol.HttpClientContext;
7+
import org.apache.http.entity.StringEntity;
8+
import org.apache.http.message.BasicHeader;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
11+
12+
import java.io.IOException;
13+
import java.util.Map;
14+
import java.util.concurrent.ExecutorService;
15+
16+
public abstract class PutRequest<T> extends Request<T> {
17+
18+
private static final Logger log = LoggerFactory.getLogger(PutRequest.class);
19+
20+
protected PutRequest(String accessToken, HttpClient httpClient, ExecutorService executorService) {
21+
super(accessToken, httpClient, executorService);
22+
}
23+
24+
@Override
25+
protected HttpResponse request() throws IOException {
26+
Map<String, Object> params = toQueryMap();
27+
log.info("PUT - path: {}, params: {}", getPath(), params);
28+
29+
HttpPut httpPut = new HttpPut(BASE_URL + getPath());
30+
httpPut.addHeader(new BasicHeader("Authorization", "Bearer " + accessToken));
31+
httpPut.addHeader(new BasicHeader("Content-Type", "application/json"));
32+
httpPut.setEntity(new StringEntity(objectWriter.writeValueAsString(params)));
33+
return httpClient.execute(httpPut, HttpClientContext.create());
34+
}
35+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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 AddRoomMemberRequest extends DeleteRequest<NoContent> {
11+
12+
private final String roomIdOrName;
13+
private final String userIdOrEmail;
14+
15+
public AddRoomMemberRequest(String userIdOrEmail, String roomIdOrName, String accessToken, HttpClient httpClient, ExecutorService executorService) {
16+
super(accessToken, httpClient, executorService);
17+
this.roomIdOrName = roomIdOrName;
18+
this.userIdOrEmail = userIdOrEmail;
19+
}
20+
21+
public String getRoomIdOrName() {
22+
return roomIdOrName;
23+
}
24+
25+
public String getUserIdOrEmail() {
26+
return userIdOrEmail;
27+
}
28+
29+
@Override
30+
protected Map<String, Object> toQueryMap() {
31+
return null;
32+
}
33+
34+
@Override
35+
protected String getPath() {
36+
return "/room/" + roomIdOrName + "/member/" + userIdOrEmail;
37+
}
38+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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 AddRoomMemberRequestBuilder extends RequestBuilder<AddRoomMemberRequest> {
9+
10+
private final String roomIdOrName;
11+
private final String userIdOrEmail;
12+
13+
public AddRoomMemberRequestBuilder(String userIdOrEmail, String roomIdOrName, String accessToken, HttpClient httpClient, ExecutorService executorService) {
14+
super(accessToken, httpClient, executorService);
15+
this.roomIdOrName = roomIdOrName;
16+
this.userIdOrEmail = userIdOrEmail;
17+
}
18+
19+
@Override
20+
public AddRoomMemberRequest build() {
21+
return new AddRoomMemberRequest(userIdOrEmail, roomIdOrName, accessToken, httpClient, executorService);
22+
}
23+
24+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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 RemoveRoomMemberRequest extends DeleteRequest<NoContent> {
11+
12+
private final String roomIdOrName;
13+
private final String userIdOrEmail;
14+
15+
public RemoveRoomMemberRequest(String userIdOrEmail, String roomIdOrName, String accessToken, HttpClient httpClient, ExecutorService executorService) {
16+
super(accessToken, httpClient, executorService);
17+
this.roomIdOrName = roomIdOrName;
18+
this.userIdOrEmail = userIdOrEmail;
19+
}
20+
21+
public String getRoomIdOrName() {
22+
return roomIdOrName;
23+
}
24+
25+
public String getUserIdOrEmail() {
26+
return userIdOrEmail;
27+
}
28+
29+
@Override
30+
protected Map<String, Object> toQueryMap() {
31+
return null;
32+
}
33+
34+
@Override
35+
protected String getPath() {
36+
return "/room/" + roomIdOrName + "/member/" + userIdOrEmail;
37+
}
38+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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 RemoveRoomMemberRequestBuilder extends RequestBuilder<RemoveRoomMemberRequest> {
9+
10+
private final String roomIdOrName;
11+
private final String userIdOrEmail;
12+
13+
public RemoveRoomMemberRequestBuilder(String userIdOrEmail, String roomIdOrName, String accessToken, HttpClient httpClient, ExecutorService executorService) {
14+
super(accessToken, httpClient, executorService);
15+
this.roomIdOrName = roomIdOrName;
16+
this.userIdOrEmail = userIdOrEmail;
17+
}
18+
19+
@Override
20+
public RemoveRoomMemberRequest build() {
21+
return new RemoveRoomMemberRequest(userIdOrEmail, roomIdOrName, accessToken, httpClient, executorService);
22+
}
23+
24+
}

src/test/groovy/io/evanwong/oss/hipchat/v2/HipChatClientSpec.groovy

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,4 +164,26 @@ class HipChatClientSpec extends Specification {
164164
expect:
165165
builder.build().roomIdOrName == roomIdOrName
166166
}
167+
168+
def "prepareRemoveRoomMemberRequestBuilder should create a RemoveRoomMemberRequest properly"() {
169+
setup:
170+
def roomIdOrName = "testdelete"
171+
def userIdOrEmail = "testdeletemail"
172+
def builder = client.prepareRemoveRoomMemberRequestBuilder(userIdOrEmail, roomIdOrName)
173+
174+
expect:
175+
builder.build().roomIdOrName == roomIdOrName
176+
builder.build().userIdOrEmail == userIdOrEmail
177+
}
178+
179+
def "prepareAddRoomMemberRequestBuilder should create a AddRoomMemberRequest properly"() {
180+
setup:
181+
def roomIdOrName = "testadd"
182+
def userIdOrEmail = "testaddemail"
183+
def builder = client.prepareAddRoomMemberRequestBuilder(userIdOrEmail, roomIdOrName)
184+
185+
expect:
186+
builder.build().roomIdOrName == roomIdOrName
187+
builder.build().userIdOrEmail == userIdOrEmail
188+
}
167189
}

0 commit comments

Comments
 (0)