1111package com .owncloud .android .lib .resources .shares ;
1212
1313import android .net .Uri ;
14- import android .util .Pair ;
1514
15+ import com .google .gson .JsonObject ;
1616import com .owncloud .android .lib .common .OwnCloudClient ;
1717import com .owncloud .android .lib .common .operations .RemoteOperation ;
1818import com .owncloud .android .lib .common .operations .RemoteOperationResult ;
2525import java .net .URLEncoder ;
2626import java .text .DateFormat ;
2727import java .text .SimpleDateFormat ;
28- import java .util .ArrayList ;
2928import java .util .Calendar ;
3029import java .util .List ;
3130import java .util .Locale ;
@@ -47,7 +46,7 @@ public class UpdateShareRemoteOperation extends RemoteOperation {
4746 private static final String PARAM_HIDE_DOWNLOAD = "hideDownload" ;
4847 private static final String PARAM_LABEL = "label" ;
4948 private static final String FORMAT_EXPIRATION_DATE = "yyyy-MM-dd" ;
50- private static final String ENTITY_CONTENT_TYPE = "application/x-www-form-urlencoded " ;
49+ private static final String ENTITY_CONTENT_TYPE = "application/json " ;
5150 private static final String ENTITY_CHARSET = "UTF-8" ;
5251
5352
@@ -146,39 +145,39 @@ protected RemoteOperationResult<List<OCShare>> run(OwnCloudClient client) {
146145 RemoteOperationResult <List <OCShare >> result ;
147146
148147 /// prepare array of parameters to update
149- List < Pair < String , String >> parametersToUpdate = new ArrayList <> ();
148+ JsonObject params = new JsonObject ();
150149 if (password != null ) {
151- parametersToUpdate . add ( new Pair <>( PARAM_PASSWORD , password ) );
150+ params . addProperty ( PARAM_PASSWORD , password );
152151 }
153152
154153 if (expirationDateInMillis < 0 ) {
155154 // clear expiration date
156- parametersToUpdate . add ( new Pair <>( PARAM_EXPIRATION_DATE , "" ) );
155+ params . addProperty ( PARAM_EXPIRATION_DATE , "" );
157156 } else if (expirationDateInMillis > 0 ) {
158157 // set expiration date
159158 DateFormat dateFormat = new SimpleDateFormat (FORMAT_EXPIRATION_DATE , Locale .US );
160159 Calendar expirationDate = Calendar .getInstance ();
161160 expirationDate .setTimeInMillis (expirationDateInMillis );
162161 String formattedExpirationDate = dateFormat .format (expirationDate .getTime ());
163- parametersToUpdate . add ( new Pair <>( PARAM_EXPIRATION_DATE , formattedExpirationDate ) );
162+ params . addProperty ( PARAM_EXPIRATION_DATE , formattedExpirationDate );
164163 }
165164
166165 if (permissions > 0 ) {
167- parametersToUpdate . add ( new Pair <>( PARAM_PERMISSIONS , Integer .toString (permissions ) ));
166+ params . addProperty ( PARAM_PERMISSIONS , Integer .toString (permissions ));
168167 }
169168
170169 if (hideFileDownload != null ) {
171- parametersToUpdate . add ( new Pair <>( PARAM_HIDE_DOWNLOAD , Boolean .toString (hideFileDownload ) ));
170+ params . addProperty ( PARAM_HIDE_DOWNLOAD , Boolean .toString (hideFileDownload ));
172171 }
173172
174173 PutMethod put = null ;
175174 try {
176175 if (note != null ) {
177- parametersToUpdate . add ( new Pair <>( PARAM_NOTE , URLEncoder .encode (note , ENTITY_CHARSET ) ));
176+ params . addProperty ( PARAM_NOTE , URLEncoder .encode (note , ENTITY_CHARSET ));
178177 }
179178
180179 if (label != null ) {
181- parametersToUpdate . add ( new Pair <>( PARAM_LABEL , URLEncoder .encode (label , ENTITY_CHARSET ) ));
180+ params . addProperty ( PARAM_LABEL , URLEncoder .encode (label , ENTITY_CHARSET ));
182181 }
183182
184183 Uri requestUri = client .getBaseUri ();
@@ -187,22 +186,10 @@ protected RemoteOperationResult<List<OCShare>> run(OwnCloudClient client) {
187186 uriBuilder .appendEncodedPath (Long .toString (remoteId ));
188187 String uriString = uriBuilder .build ().toString ();
189188
190- StringBuilder bodyBuilder = new StringBuilder ();
191- for (int i = 0 ; i < parametersToUpdate .size (); i ++) {
192- Pair <String , String > param = parametersToUpdate .get (i );
193- bodyBuilder .append (param .first )
194- .append ("=" )
195- .append (param .second );
196-
197- if (i < parametersToUpdate .size () - 1 ) {
198- bodyBuilder .append ("&" );
199- }
200- }
201-
202189 put = new PutMethod (uriString );
203190 put .addRequestHeader (OCS_API_HEADER , OCS_API_HEADER_VALUE );
204191 put .setRequestEntity (new StringRequestEntity (
205- bodyBuilder .toString (),
192+ params .toString (),
206193 ENTITY_CONTENT_TYPE ,
207194 ENTITY_CHARSET
208195 ));
0 commit comments