Last active
February 14, 2017 13:10
-
-
Save snadjafi/9087546 to your computer and use it in GitHub Desktop.
[blipo] upload image using retrofit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
byte[] photoByteArray = Files.toByteArray(photo.getImageFile()); | |
BlipoApi blipoApi = setUpNetwork(); | |
blipoApi.uploadPhoto(photoByteArray); | |
private BlipoApi setUpNetwork() { | |
RequestInterceptor requestInterceptor = new RequestInterceptor() { | |
@Override | |
public void intercept(RequestFacade requestFacade) { | |
String imageId = UUID.randomUUID().toString(); | |
requestFacade.addHeader("Accept", "application/json"); | |
requestFacade.addHeader("senderPhoneID", Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID)); | |
requestFacade.addHeader("fileID", imageId); | |
requestFacade.addHeader("imageOrientation","0"); | |
requestFacade.addHeader("fileSizeType", "2"); | |
Log.d("UploadPhotoService", "image UUID is: " + imageId); | |
Log.d("UploadPhotoService", "google id is: " + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID)); | |
} | |
}; | |
RestAdapter restAdapter = new RestAdapter.Builder() | |
.setLog(new RestAdapter.Log() { | |
@Override | |
public void log(String s) { | |
Log.d("blipo", s); | |
} | |
}) | |
.setLogLevel(RestAdapter.LogLevel.FULL) | |
.setErrorHandler(getErrorHandler()) | |
.setRequestInterceptor(requestInterceptor) | |
.setServer(API_URL) | |
.build(); | |
return restAdapter.create(BlipoApi.class); | |
} | |
private ErrorHandler getErrorHandler() { | |
return new retrofit.ErrorHandler() { | |
private boolean isJsonResponse(Response response) { | |
for (retrofit.client.Header header : response.getHeaders()) | |
if ((header.getName() != null) && header.getName().contains("Content-Type")) | |
if (header.getValue().contains("json")) | |
return true; | |
return false; | |
} | |
private String getMessage(InputStreamReader reader) { | |
BufferedReader r = new BufferedReader(reader); | |
StringBuilder total = new StringBuilder(); | |
String line; | |
try { | |
while ((line = r.readLine()) != null) { | |
total.append(line); | |
} | |
} catch (IOException e) { | |
Log.w("blipo", e.getMessage()); | |
} | |
return total.toString(); | |
} | |
@Override | |
public Throwable handleError(RetrofitError retrofitError) { | |
Response response = retrofitError.getResponse(); | |
if (response != null) { | |
InputStreamReader reader = null; | |
try { | |
if (response.getBody() != null) | |
reader = new InputStreamReader(response.getBody().in()); | |
if ((reader != null) && isJsonResponse(response)) { | |
return new Gson().fromJson(reader, BlipoError.class); | |
} else { | |
BlipoError result = new BlipoError(response.getStatus()); | |
if (reader != null) | |
result.setMessage(getMessage(reader)); | |
result.setStackTrace(retrofitError.getStackTrace()); | |
return result; | |
} | |
} catch (IOException e) { | |
Log.e("blipo", e.getMessage(), e); | |
} finally { | |
if (reader != null) { | |
try { | |
reader.close(); | |
} catch (IOException e) { | |
Log.e("blipo", e.getMessage() , e); | |
} | |
} | |
} | |
return new BlipoError(response.getStatus()); | |
} else { | |
BlipoError result = new BlipoError(0); | |
result.setMessage(retrofitError.getMessage()); | |
return result; | |
} | |
} | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment