1111import java .io .IOException ;
1212import java .nio .file .Path ;
1313import java .nio .file .Paths ;
14+ import java .util .ArrayList ;
1415import java .util .Arrays ;
16+ import java .util .HashMap ;
1517import java .util .List ;
1618import java .util .concurrent .CompletableFuture ;
1719import java .util .concurrent .ExecutionException ;
@@ -22,7 +24,7 @@ public class ConvertApi {
2224 private static final List <String > IGNORE_PARAMS = Arrays .asList ( "storefile" , "async" , "jobid" , "timeout" );
2325
2426 @ SuppressWarnings ("unused" )
25- public static CompletableFuture <ConversionResult > convert (String fromFormat , String toFormat , Param [] params ) {
27+ public static CompletableFuture <ConversionResult > convert (String fromFormat , String toFormat , Param ... params ) {
2628 return convert (fromFormat , toFormat , params , Config .defaults ());
2729 }
2830
@@ -38,18 +40,17 @@ public static CompletableFuture<ConversionResult> convert(String fromFormat, Str
3840 .build ();
3941
4042 MultipartBody .Builder multipartBuilder = new MultipartBody .Builder ();
41- for (Param param : params ) {
42- if (!IGNORE_PARAMS .contains (param .getName ())) {
43- try {
44- if (param .getValue ().size () == 1 ) {
45- multipartBuilder .addFormDataPart (param .getName (), param .getValue ().get (0 ));
46- } else {
47- for (int i = 0 ; i < param .getValue ().size (); i ++) {
48- multipartBuilder .addFormDataPart (param .getName () + "[" + i + "]" , param .getValue ().get (i ));
49- }
43+ HashMap <String , List <String >> paramValues = getParamValues (params );
44+
45+ for (String name : paramValues .keySet ()) {
46+ if (!IGNORE_PARAMS .contains (name )) {
47+ List <String > values = paramValues .get (name );
48+ if (paramValues .get (name ).size () == 1 ) {
49+ multipartBuilder .addFormDataPart (name , values .get (0 ));
50+ } else {
51+ for (int i = 0 ; i < values .size (); i ++) {
52+ multipartBuilder .addFormDataPart (name + "[" + i + "]" , values .get (i ));
5053 }
51- } catch (ExecutionException | InterruptedException e ) {
52- throw new RuntimeException (e );
5354 }
5455 }
5556 }
@@ -133,4 +134,19 @@ private static String getFileExtension(Path path) {
133134 String name = path .getFileName ().toString ();
134135 return name .substring (name .lastIndexOf ("." ) + 1 );
135136 }
137+
138+ private static HashMap <String , List <String >> getParamValues (Param [] params ) {
139+ HashMap <String , List <String >> result = new HashMap <>();
140+
141+ try {
142+ for (Param param : params ) {
143+ List <String > values = result .computeIfAbsent (param .getName (), (v ) -> new ArrayList <>());
144+ values .addAll (param .getValue ());
145+ }
146+ } catch (InterruptedException | ExecutionException e ) {
147+ throw new RuntimeException (e );
148+ }
149+
150+ return result ;
151+ }
136152}
0 commit comments