OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 177 | Rev 182 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 177 Rev 180
Line 182... Line 182...
182
        }
182
        }
183
 
183
 
184
        return content;
184
        return content;
185
    }
185
    }
186
 
186
 
-
 
187
    /**
-
 
188
     * Encode for POST message application/x-www-form-urlencoded
-
 
189
     */
187
    static public final String urlEncode(final String... kv) {
190
    static public final String urlEncode(final String... kv) {
188
        final int size = kv.length;
191
        final int size = kv.length;
189
        if (size % 2 != 0)
192
        if (size % 2 != 0)
190
            throw new IllegalArgumentException("Odd number of items : " + size);
193
            throw new IllegalArgumentException("Odd number of items : " + size);
191
        final LinkedHashMap<String, Object> map = new LinkedHashMap<>(size / 2, 1);
194
        final LinkedHashMap<String, Object> map = new LinkedHashMap<>(size / 2, 1);
Line 193... Line 196...
193
            map.put(kv[i], kv[i + 1]);
196
            map.put(kv[i], kv[i + 1]);
194
        }
197
        }
195
        return urlEncode(map);
198
        return urlEncode(map);
196
    }
199
    }
197
 
200
 
-
 
201
    /**
-
 
202
     * Encode for POST message application/x-www-form-urlencoded
-
 
203
     */
198
    static public final String urlEncode(final Map<String, ?> map) {
204
    static public final String urlEncode(final Map<String, ?> map) {
199
        if (map.isEmpty())
205
        if (map.isEmpty())
200
            return "";
206
            return "";
201
        final String charset = StandardCharsets.UTF_8.name();
207
        final String charset = StandardCharsets.UTF_8.name();
202
        final StringBuilder sb = new StringBuilder(256);
208
        final StringBuilder sb = new StringBuilder(256);
203
        for (final Entry<String, ?> e : map.entrySet()) {
209
        for (final Entry<String, ?> e : map.entrySet()) {
204
            final Object value = e.getValue();
210
            final Object value = e.getValue();
205
            // Avoid null and "null" confusion.
211
            // Avoid null and "null" confusion.
206
            if (value != null) {
212
            if (value != null) {
207
                try {
213
                try {
208
                    sb.append(URLEncoder.encode(e.getKey(), charset));
214
                    sb.append(URLEncoder.encode(e.getKey(), charset).replace("+", "%20"));
209
                    sb.append('=');
215
                    sb.append('=');
210
                    sb.append(URLEncoder.encode(String.valueOf(value), charset));
216
                    sb.append(URLEncoder.encode(String.valueOf(value), charset).replace("+", "%20"));
211
                    sb.append('&');
217
                    sb.append('&');
212
                } catch (UnsupportedEncodingException exn) {
218
                } catch (UnsupportedEncodingException exn) {
213
                    throw new IllegalStateException("UTF-8 should be standard", exn);
219
                    throw new IllegalStateException("UTF-8 should be standard", exn);
214
                }
220
                }
215
            }
221
            }