33import com .creatubbles .api .CreatubblesAPI ;
44import com .creatubbles .api .util .HttpMethod ;
55import org .glassfish .jersey .client .JerseyWebTarget ;
6+ import org .glassfish .jersey .client .authentication .HttpAuthenticationFeature ;
67
78import javax .ws .rs .client .Entity ;
89import javax .ws .rs .client .Invocation ;
@@ -21,6 +22,7 @@ public abstract class CreatubblesRequest<T extends CreatubblesResponse> {
2122 private Response response ;
2223 private Future <Response > futureResponse ;
2324 private T responseCache ;
25+ private static final String EMPTY_RESPONSE = "{}" ;
2426
2527 public CreatubblesRequest (String endPoint , HttpMethod httpMethod ) {
2628 this (endPoint , httpMethod , null , null );
@@ -108,7 +110,7 @@ public CreatubblesRequest<T> setUrlParameter(String key, String value) {
108110
109111 public abstract Class <? extends T > getResponseClass ();
110112
111- private void resetResponse () {
113+ public void resetResponse () {
112114 if (response != null || futureResponse != null ) {
113115 response = null ;
114116 futureResponse = null ;
@@ -121,11 +123,15 @@ public boolean isDone() {
121123
122124 public boolean wasSuccessful () {
123125 if (isDone ()) {
124- return getRawResponse (). getStatus () == 200 ;
126+ return isSuccessStatus ( getRawResponse ()) ;
125127 }
126128 return false ;
127129 }
128130
131+ private boolean isSuccessStatus (Response response ) {
132+ return response .getStatus () == 200 || response .getStatus () == 204 ;
133+ }
134+
129135 public void cancelRequest () {
130136 if (futureResponse != null & !futureResponse .isDone ()) {
131137 futureResponse .cancel (true );
@@ -151,6 +157,10 @@ public T getResponse() {
151157 Response response = getRawResponse ();
152158 Class <? extends T > responseClass = getResponseClass ();
153159 if (response != null && responseClass != null ) {
160+ String json = response .readEntity (String .class );
161+ if (isSuccessStatus (response ) && json .isEmpty ()) {
162+ json = EMPTY_RESPONSE ;
163+ }
154164 T creatubblesResponse = CreatubblesAPI .GSON .fromJson (response .readEntity (String .class ), responseClass );
155165 creatubblesResponse .setOriginatingRequest (this );
156166 responseCache = creatubblesResponse ;
@@ -170,6 +180,8 @@ public CreatubblesRequest<T> execute() {
170180 webTarget = webTarget .queryParam (paramKey , paramValue );
171181 }
172182 }
183+ HttpAuthenticationFeature basicAuth = HttpAuthenticationFeature .basic ("c" , "c" );
184+ webTarget .register (basicAuth );
173185
174186 Invocation .Builder invocationBuilder = webTarget
175187 .request (MediaType .APPLICATION_JSON )
0 commit comments