From 789afba0482382749c63677b2f632888ad0e09bb Mon Sep 17 00:00:00 2001 From: stom79 Date: Sun, 22 Apr 2018 18:02:00 +0200 Subject: Change patch header --- .../mastodon/activities/EditProfileActivity.java | 55 +--- .../asynctasks/UpdateCredentialAsyncTask.java | 6 +- .../java/fr/gouv/etalab/mastodon/client/API.java | 24 +- .../etalab/mastodon/client/HttpsConnection.java | 338 ++++++++++++++------- .../fr/gouv/etalab/mastodon/helper/Helper.java | 20 +- 5 files changed, 262 insertions(+), 181 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java index b43bcd458..6db09958d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java @@ -20,7 +20,6 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; -import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -30,6 +29,7 @@ import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; @@ -41,7 +41,6 @@ import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.Html; import android.text.TextWatcher; -import android.util.Base64; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -60,11 +59,8 @@ import com.bumptech.glide.request.transition.Transition; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.asynctasks.RetrieveAccountInfoAsyncTask; @@ -100,7 +96,8 @@ public class EditProfileActivity extends BaseActivity implements OnRetrieveAccou private CheckBox set_lock_account; private static final int PICK_IMAGE_HEADER = 4565; private static final int PICK_IMAGE_PROFILE = 6545; - private String profile_picture, header_picture, profile_username, profile_note; + private String profile_username, profile_note; + private ByteArrayInputStream profile_picture, header_picture; private API.accountPrivacy profile_privacy; private Bitmap profile_picture_bmp, profile_header_bmp; private ImageView pp_actionBar; @@ -454,8 +451,9 @@ public class EditProfileActivity extends BaseActivity implements OnRetrieveAccou Toast.makeText(getApplicationContext(),R.string.toot_select_image_error,Toast.LENGTH_LONG).show(); return; } + Uri fileUri = data.getData(); try { - InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(data.getData()); + InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(fileUri); assert inputStream != null; BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); Bitmap bmp = BitmapFactory.decodeStream(bufferedInputStream); @@ -464,31 +462,15 @@ public class EditProfileActivity extends BaseActivity implements OnRetrieveAccou } catch (FileNotFoundException e) { e.printStackTrace(); } - ByteArrayInputStream bs = Helper.compressImage(EditProfileActivity.this, data.getData(), Helper.MediaType.MEDIA); - assert bs != null; - int n = bs.available(); - byte[] bytes = new byte[n]; - //noinspection ResultOfMethodCallIgnored - bs.read(bytes, 0, n); - String s; - ContentResolver cr = getContentResolver(); - String mime = cr.getType(data.getData()); - set_header_picture.setImageBitmap(profile_header_bmp); - try { - s = new String(bytes, "UTF-8"); - header_picture = "data:"+mime+";base64, " + s; - } catch (UnsupportedEncodingException e) { - Toast.makeText(getApplicationContext(),R.string.toot_select_image_error,Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } + header_picture = Helper.compressImage(EditProfileActivity.this, fileUri, Helper.MediaType.MEDIA); }else if(requestCode == PICK_IMAGE_PROFILE && resultCode == Activity.RESULT_OK) { if (data == null || data.getData() == null) { Toast.makeText(getApplicationContext(),R.string.toot_select_image_error,Toast.LENGTH_LONG).show(); return; } - + Uri fileUri = data.getData(); try { - InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(data.getData()); + InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(fileUri); assert inputStream != null; BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); Bitmap bmp = BitmapFactory.decodeStream(bufferedInputStream); @@ -497,34 +479,19 @@ public class EditProfileActivity extends BaseActivity implements OnRetrieveAccou } catch (FileNotFoundException e) { e.printStackTrace(); } - ByteArrayInputStream bs = Helper.compressImage(EditProfileActivity.this, data.getData(), Helper.MediaType.MEDIA); - assert bs != null; - int n = bs.available(); - byte[] bytes = new byte[n]; - //noinspection ResultOfMethodCallIgnored - bs.read(bytes, 0, n); - String s; - ContentResolver cr = getContentResolver(); - String mime = cr.getType(data.getData()); - - try { - s = new String(bytes, "UTF-8"); - profile_picture = "data:"+mime+";base64, " + s; - } catch (UnsupportedEncodingException e) { - Toast.makeText(getApplicationContext(),R.string.toot_select_image_error,Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } + profile_picture = Helper.compressImage(EditProfileActivity.this, fileUri, Helper.MediaType.PROFILE); } } @Override public void onUpdateCredential(APIResponse apiResponse) { + set_profile_save.setEnabled(true); if( apiResponse.getError() != null){ Toast.makeText(getApplicationContext(), R.string.toast_error, Toast.LENGTH_LONG).show(); return; } Toast.makeText(getApplicationContext(), R.string.toast_update_credential_ok, Toast.LENGTH_LONG).show(); - set_profile_save.setEnabled(true); + Intent mStartActivity = new Intent(EditProfileActivity.this, BaseMainActivity.class); int mPendingIntentId = 45641; PendingIntent mPendingIntent = PendingIntent.getActivity(EditProfileActivity.this, mPendingIntentId, mStartActivity, diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateCredentialAsyncTask.java b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateCredentialAsyncTask.java index d39a9079a..4318c9a5c 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateCredentialAsyncTask.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateCredentialAsyncTask.java @@ -18,6 +18,7 @@ package fr.gouv.etalab.mastodon.asynctasks; import android.content.Context; import android.os.AsyncTask; +import java.io.ByteArrayInputStream; import java.lang.ref.WeakReference; import fr.gouv.etalab.mastodon.client.API; @@ -31,13 +32,14 @@ import fr.gouv.etalab.mastodon.interfaces.OnUpdateCredentialInterface; public class UpdateCredentialAsyncTask extends AsyncTask { - private String display_name, note, avatar, header; + private String display_name, note; + private ByteArrayInputStream avatar, header; private API.accountPrivacy privacy; private APIResponse apiResponse; private OnUpdateCredentialInterface listener; private WeakReference contextReference; - public UpdateCredentialAsyncTask(Context context, String display_name, String note, String avatar, String header, API.accountPrivacy privacy, OnUpdateCredentialInterface onUpdateCredentialInterface){ + public UpdateCredentialAsyncTask(Context context, String display_name, String note, ByteArrayInputStream avatar, ByteArrayInputStream header, API.accountPrivacy privacy, OnUpdateCredentialInterface onUpdateCredentialInterface){ this.contextReference = new WeakReference<>(context); this.display_name = display_name; this.note = note; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java index 60f33bc4e..a600c354f 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java @@ -16,12 +16,12 @@ package fr.gouv.etalab.mastodon.client; import android.content.Context; import android.content.SharedPreferences; -import android.util.Log; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.lang.*; import java.net.URLEncoder; @@ -137,11 +137,13 @@ public class API { return apiResponse; } + + /*** * Update credential of the authenticated user *synchronously* * @return APIResponse */ - public APIResponse updateCredential(String display_name, String note, String avatar, String header, accountPrivacy privacy) { + public APIResponse updateCredential(String display_name, String note, ByteArrayInputStream avatar, ByteArrayInputStream header, accountPrivacy privacy) { HashMap requestParams = new HashMap<>(); if( display_name != null) @@ -156,24 +158,11 @@ public class API { } catch (UnsupportedEncodingException e) { requestParams.put("note",note); } - if( avatar != null) - Log.v(Helper.TAG,"avatar" + avatar); - try { - requestParams.put("avatar",URLEncoder.encode(avatar, "UTF-8")); - } catch (UnsupportedEncodingException e) { - requestParams.put("avatar",avatar); - } - if( header != null) - try { - requestParams.put("header",URLEncoder.encode(header, "UTF-8")); - } catch (UnsupportedEncodingException e) { - requestParams.put("header",header); - } if( privacy != null) requestParams.put("locked",privacy==accountPrivacy.LOCKED?"true":"false"); try { - new HttpsConnection(context).patch(getAbsoluteUrl("/accounts/update_credentials"), 60, requestParams, prefKeyOauthTokenT); + new HttpsConnection(context).patch(getAbsoluteUrl("/accounts/update_credentials"), 60, requestParams, avatar, header, prefKeyOauthTokenT); } catch (HttpsConnection.HttpsConnectionException e) { e.printStackTrace(); setError(e.getStatusCode(), e); @@ -184,7 +173,6 @@ public class API { return apiResponse; } - /*** * Verifiy credential of the authenticated user *synchronously* * @return Account @@ -1686,7 +1674,7 @@ public class API { } status.setEmojis(emojiList); }catch (Exception e){ - status.setEmojis(new ArrayList()); + status.setEmojis(new ArrayList<>()); } //Retrieve Application diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java index 3d595453d..7669134c4 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java @@ -18,7 +18,6 @@ import android.content.SharedPreferences; import android.os.Build; import android.text.Html; import android.text.SpannableString; -import android.util.Log; import com.google.common.io.ByteStreams; @@ -33,6 +32,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.OutputStream; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.InetSocketAddress; @@ -625,6 +625,233 @@ public class HttpsConnection { } + + + @SuppressWarnings("SameParameterValue") + void patch(String urlConnection, int timeout, HashMap paramaters, InputStream avatar, InputStream header, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException { + String twoHyphens = "--"; + String boundary = "*****" + Long.toString(System.currentTimeMillis()) + "*****"; + String lineEnd = "\r\n"; + if( urlConnection.startsWith("https://")) { + URL url = new URL(urlConnection); + Map params = new LinkedHashMap<>(); + if (paramaters != null) { + Iterator it = paramaters.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry) it.next(); + params.put(pair.getKey().toString(), pair.getValue()); + it.remove(); + } + } + StringBuilder postData = new StringBuilder(); + for (Map.Entry param : params.entrySet()) { + if (postData.length() != 0) postData.append('&'); + postData.append(param.getKey()); + postData.append('='); + postData.append(String.valueOf(param.getValue())); + } + byte[] postDataBytes = postData.toString().getBytes("UTF-8"); + + int lengthSentAvatar = 0; + byte[] pixelsAvatar = new byte[0]; + if( avatar != null) { + ByteArrayOutputStream ous = null; + try { + try { + byte[] buffer = new byte[CHUNK_SIZE]; + ous = new ByteArrayOutputStream(); + int read; + while ((read = avatar.read(buffer)) != -1) { + ous.write(buffer, 0, read); + } + ous.flush(); + } finally { + if (ous != null) + ous.close(); + } + } catch (FileNotFoundException ignored) { + } catch (IOException ignored) { + } + pixelsAvatar = ous.toByteArray(); + + lengthSentAvatar = pixelsAvatar.length; + lengthSentAvatar += 2 * (twoHyphens + boundary + twoHyphens + lineEnd).getBytes().length; + lengthSentAvatar += ("Content-Disposition: form-data; name=\"avatar\";filename=\"avatar.png\"" + lineEnd).getBytes().length; + lengthSentAvatar += 2 * (lineEnd).getBytes().length; + } + + int lengthSentHeader = 0; + byte[] pixelsHeader = new byte[0]; + if( header != null) { + ByteArrayOutputStream ous = null; + try { + try { + byte[] buffer = new byte[CHUNK_SIZE]; + ous = new ByteArrayOutputStream(); + int read; + while ((read = header.read(buffer)) != -1) { + ous.write(buffer, 0, read); + } + ous.flush(); + } finally { + if (ous != null) + ous.close(); + } + } catch (FileNotFoundException ignored) { + } catch (IOException ignored) { + } + pixelsHeader = ous.toByteArray(); + + lengthSentHeader = pixelsHeader.length; + lengthSentHeader += 2 * (twoHyphens + boundary + twoHyphens + lineEnd).getBytes().length; + lengthSentHeader += ("Content-Disposition: form-data; name=\"header\";filename=\"header.png\"" + lineEnd).getBytes().length; + lengthSentHeader += 2 * (lineEnd).getBytes().length; + } + + int lengthSent = lengthSentHeader + lengthSentAvatar; + if (proxy != null) + httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy); + else + httpsURLConnection = (HttpsURLConnection) url.openConnection(); + httpsURLConnection.setRequestProperty("User-Agent", Helper.USER_AGENT); + httpsURLConnection.setConnectTimeout(timeout * 1000); + httpsURLConnection.setSSLSocketFactory(new TLSSocketFactory()); + httpsURLConnection.setDoInput(true); + httpsURLConnection.setDoOutput(true); + httpsURLConnection.setUseCaches(false); + if( Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT ){ + httpsURLConnection.setRequestMethod("PATCH"); + }else { + httpsURLConnection.setRequestProperty("X-HTTP-Method-Override", "PATCH"); + httpsURLConnection.setRequestMethod("POST"); + } + + httpsURLConnection.setRequestProperty("Connection", "Keep-Alive"); + httpsURLConnection.setRequestProperty("Cache-Control", "no-cache"); + httpsURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + httpsURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+ boundary); + + if (token != null) + httpsURLConnection.setRequestProperty("Authorization", "Bearer " + token); + + if( lengthSent > 0) + httpsURLConnection.setFixedLengthStreamingMode(lengthSent+postDataBytes.length); + + + httpsURLConnection.getOutputStream().write(postDataBytes); + + if(lengthSentAvatar > 0){ + OutputStream outPutStream = httpsURLConnection.getOutputStream(); + DataOutputStream request = new DataOutputStream(outPutStream); + int totalSize = pixelsAvatar.length; + int bytesTransferred = 0; + request.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); + request.writeBytes("Content-Disposition: form-data; name=\"avatar\";filename=\"avatar.png\"" + lineEnd); + request.writeBytes(lineEnd); + while (bytesTransferred < totalSize) { + int nextChunkSize = totalSize - bytesTransferred; + if (nextChunkSize > CHUNK_SIZE) { + nextChunkSize = CHUNK_SIZE; + } + request.write(pixelsAvatar, bytesTransferred, nextChunkSize); + bytesTransferred += nextChunkSize; + } + request.writeBytes(lineEnd); + request.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); + request.flush(); + request.close(); + } + + if(lengthSentHeader > 0){ + int totalSize = pixelsHeader.length; + int bytesTransferred = 0; + OutputStream outPutStream = httpsURLConnection.getOutputStream(); + DataOutputStream request = new DataOutputStream(outPutStream); + request.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); + request.writeBytes("Content-Disposition: form-data; name=\"header\";filename=\"header.png\"" + lineEnd); + request.writeBytes(lineEnd); + while (bytesTransferred < totalSize) { + int nextChunkSize = totalSize - bytesTransferred; + if (nextChunkSize > CHUNK_SIZE) { + nextChunkSize = CHUNK_SIZE; + } + request.write(pixelsHeader, bytesTransferred, nextChunkSize); + bytesTransferred += nextChunkSize; + } + request.writeBytes(lineEnd); + request.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); + request.flush(); + request.close(); + } + + if (httpsURLConnection.getResponseCode() >= 200 && httpsURLConnection.getResponseCode() < 400) { + new String(ByteStreams.toByteArray(httpsURLConnection.getInputStream())); + } else { + String error = null; + if( httpsURLConnection.getErrorStream() != null) + error = new String(ByteStreams.toByteArray(httpsURLConnection.getErrorStream())); + else if( httpsURLConnection.getInputStream() != null) + error = new String(ByteStreams.toByteArray(httpsURLConnection.getInputStream())); + int responseCode = httpsURLConnection.getResponseCode(); + try { + httpsURLConnection.getInputStream().close(); + }catch (Exception ignored){} + + throw new HttpsConnectionException(responseCode, error); + } + httpsURLConnection.getInputStream().close(); + }else { + URL url = new URL(urlConnection); + Map params = new LinkedHashMap<>(); + if (paramaters != null) { + Iterator it = paramaters.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry) it.next(); + params.put(pair.getKey().toString(), pair.getValue()); + it.remove(); + } + } + StringBuilder postData = new StringBuilder(); + for (Map.Entry param : params.entrySet()) { + if (postData.length() != 0) postData.append('&'); + postData.append(param.getKey()); + postData.append('='); + postData.append(String.valueOf(param.getValue())); + } + byte[] postDataBytes = postData.toString().getBytes("UTF-8"); + + if (proxy != null) + httpURLConnection = (HttpURLConnection) url.openConnection(proxy); + else + httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setRequestProperty("User-Agent", Helper.USER_AGENT); + httpURLConnection.setConnectTimeout(timeout * 1000); + httpURLConnection.setRequestMethod("PATCH"); + if (token != null) + httpURLConnection.setRequestProperty("Authorization", "Bearer " + token); + httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + httpURLConnection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length)); + httpURLConnection.setDoOutput(true); + + httpURLConnection.getOutputStream().write(postDataBytes); + if (httpURLConnection.getResponseCode() >= 200 && httpURLConnection.getResponseCode() < 400) { + new String(ByteStreams.toByteArray(httpURLConnection.getInputStream())); + } else { + String error = null; + if( httpsURLConnection.getErrorStream() != null) + error = new String(ByteStreams.toByteArray(httpsURLConnection.getErrorStream())); + else if( httpsURLConnection.getInputStream() != null) + error = new String(ByteStreams.toByteArray(httpsURLConnection.getInputStream())); + int responseCode = httpURLConnection.getResponseCode(); + httpURLConnection.getInputStream().close(); + throw new HttpsConnectionException(responseCode, error); + } + httpURLConnection.getInputStream().close(); + } + + } + + /** * Upload method - https only * @param inputStream InputStream of the file to upload @@ -1036,116 +1263,7 @@ public class HttpsConnection { - @SuppressWarnings("SameParameterValue") - void patch(String urlConnection, int timeout, HashMap paramaters, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException { - if( urlConnection.startsWith("https://")) { - URL url = new URL(urlConnection); - Map params = new LinkedHashMap<>(); - if (paramaters != null) { - Iterator it = paramaters.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pair = (Map.Entry) it.next(); - params.put(pair.getKey().toString(), pair.getValue()); - it.remove(); - } - } - StringBuilder postData = new StringBuilder(); - for (Map.Entry param : params.entrySet()) { - if (postData.length() != 0) postData.append('&'); - postData.append(param.getKey()); - postData.append('='); - postData.append(String.valueOf(param.getValue())); - } - byte[] postDataBytes = postData.toString().getBytes("UTF-8"); - - if (proxy != null) - httpsURLConnection = (HttpsURLConnection) url.openConnection(proxy); - else - httpsURLConnection = (HttpsURLConnection) url.openConnection(); - httpsURLConnection.setRequestProperty("User-Agent", Helper.USER_AGENT); - httpsURLConnection.setConnectTimeout(timeout * 1000); - httpsURLConnection.setSSLSocketFactory(new TLSSocketFactory()); - if( Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT ){ - httpsURLConnection.setRequestMethod("PATCH"); - }else { - httpsURLConnection.setRequestProperty("X-HTTP-Method-Override", "PATCH"); - httpsURLConnection.setRequestMethod("POST"); - } - - if (token != null) - httpsURLConnection.setRequestProperty("Authorization", "Bearer " + token); - httpsURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - httpsURLConnection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length)); - httpsURLConnection.setDoOutput(true); - - httpsURLConnection.getOutputStream().write(postDataBytes); - Log.v(Helper.TAG,"postDataBytes: " + postData.toString()); - if (httpsURLConnection.getResponseCode() >= 200 && httpsURLConnection.getResponseCode() < 400) { - new String(ByteStreams.toByteArray(httpsURLConnection.getInputStream())); - } else { - String error = null; - if( httpsURLConnection.getErrorStream() != null) - error = new String(ByteStreams.toByteArray(httpsURLConnection.getErrorStream())); - else if( httpsURLConnection.getInputStream() != null) - error = new String(ByteStreams.toByteArray(httpsURLConnection.getInputStream())); - int responseCode = httpsURLConnection.getResponseCode(); - try { - httpsURLConnection.getInputStream().close(); - }catch (Exception ignored){} - - throw new HttpsConnectionException(responseCode, error); - } - httpsURLConnection.getInputStream().close(); - }else { - URL url = new URL(urlConnection); - Map params = new LinkedHashMap<>(); - if (paramaters != null) { - Iterator it = paramaters.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pair = (Map.Entry) it.next(); - params.put(pair.getKey().toString(), pair.getValue()); - it.remove(); - } - } - StringBuilder postData = new StringBuilder(); - for (Map.Entry param : params.entrySet()) { - if (postData.length() != 0) postData.append('&'); - postData.append(param.getKey()); - postData.append('='); - postData.append(String.valueOf(param.getValue())); - } - byte[] postDataBytes = postData.toString().getBytes("UTF-8"); - - if (proxy != null) - httpURLConnection = (HttpURLConnection) url.openConnection(proxy); - else - httpURLConnection = (HttpURLConnection) url.openConnection(); - httpURLConnection.setRequestProperty("User-Agent", Helper.USER_AGENT); - httpURLConnection.setConnectTimeout(timeout * 1000); - httpURLConnection.setRequestMethod("PATCH"); - if (token != null) - httpURLConnection.setRequestProperty("Authorization", "Bearer " + token); - httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - httpURLConnection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length)); - httpURLConnection.setDoOutput(true); - - httpURLConnection.getOutputStream().write(postDataBytes); - if (httpURLConnection.getResponseCode() >= 200 && httpURLConnection.getResponseCode() < 400) { - new String(ByteStreams.toByteArray(httpURLConnection.getInputStream())); - } else { - String error = null; - if( httpsURLConnection.getErrorStream() != null) - error = new String(ByteStreams.toByteArray(httpsURLConnection.getErrorStream())); - else if( httpsURLConnection.getInputStream() != null) - error = new String(ByteStreams.toByteArray(httpsURLConnection.getInputStream())); - int responseCode = httpURLConnection.getResponseCode(); - httpURLConnection.getInputStream().close(); - throw new HttpsConnectionException(responseCode, error); - } - httpURLConnection.getInputStream().close(); - } - } public int delete(String urlConnection, int timeout, HashMap paramaters, String token) throws IOException, NoSuchAlgorithmException, KeyManagementException, HttpsConnectionException { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index d730ade91..2c1f6a007 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -138,7 +138,6 @@ import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.activities.HashTagActivity; import fr.gouv.etalab.mastodon.activities.LoginActivity; import fr.gouv.etalab.mastodon.activities.MainActivity; -import fr.gouv.etalab.mastodon.activities.MediaActivity; import fr.gouv.etalab.mastodon.activities.ShowAccountActivity; import fr.gouv.etalab.mastodon.activities.WebviewActivity; import fr.gouv.etalab.mastodon.asynctasks.RemoveAccountAsyncTask; @@ -164,10 +163,11 @@ import static android.content.Context.DOWNLOAD_SERVICE; * - Reusable methods are implemented in this section */ +@SuppressWarnings("WeakerAccess") public class Helper { - @SuppressWarnings("unused") + @SuppressWarnings({"unused", "WeakerAccess"}) public static final String TAG = "mastodon_etalab"; public static final String CLIENT_NAME_VALUE = "Mastalab"; public static final String OAUTH_SCOPES = "read write follow"; @@ -2038,7 +2038,7 @@ public class Helper { SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); int resizeSet = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_1MO); if( mediaType == MediaType.PROFILE) - resizeSet = Helper.S_2MO; + resizeSet = Helper.S_1MO; double resizeby = size; if( resizeSet == Helper.S_512KO){ resizeby = 4194304; @@ -2047,10 +2047,7 @@ public class Helper { }else if(resizeSet == Helper.S_2MO){ resizeby = 16777216; } - Log.v(Helper.TAG,"resizeby: " + resizeby); - double resize = ((double)size)/resizeby; - Log.v(Helper.TAG,"resize: " + resize); if( resize > 1 ){ ContentResolver cr = context.getContentResolver(); String mime = cr.getType(uriFile); @@ -2062,7 +2059,6 @@ public class Helper { else adjustedBitmap = newBitmap; ByteArrayOutputStream bos = new ByteArrayOutputStream(); - Log.v(Helper.TAG,"mime: " + mime); if( mime !=null && (mime.contains("png") || mime.contains(".PNG"))) adjustedBitmap.compress(Bitmap.CompressFormat.PNG, 0, bos); else @@ -2107,4 +2103,14 @@ public class Helper { } return bs; } + + @SuppressWarnings("WeakerAccess") + public static void largeLog(String content) { + if (content.length() > 4000) { + Log.v(Helper.TAG, content.substring(0, 4000)); + largeLog(content.substring(4000)); + } else { + Log.v(Helper.TAG, content); + } + } } -- cgit v1.2.3