private void dumpRequestBody(HttpServerExchange exchange, StringBuilder sb) { try { FormData formData = exchange.getAttachment(FormDataParser.FORM_DATA); if (formData != null) { sb.append("body=\n"); for (String formField : formData) { Deque<FormData.FormValue> formValues = formData.get(formField); sb.append(formField) .append("="); for (FormData.FormValue formValue : formValues) { sb.append(formValue.isFileItem() ? "[file-content]" : formValue.getValue()); sb.append("\n"); if (formValue.getHeaders() != null) { sb.append("headers=\n"); for (HeaderValues header : formValue.getHeaders()) { sb.append("\t") .append(header.getHeaderName()).append("=").append(header.getFirst()).append("\n"); } } } } } } catch (Exception e) { throw new RuntimeException(e); } }
private void extractFormParameters(final FormData formData) { if (formData != null) { for (String key : formData) { final Deque<FormData.FormValue> formValues = formData.get(key); final Deque<String> values = formValues.stream() .filter(fv -> !fv.isFileItem()) .map(FormData.FormValue::getValue) .collect(java.util.stream.Collectors.toCollection(FastConcurrentDirectDeque::new)); exchange.getQueryParameters().put(key, values); } } }
private void dumpRequestBody(HttpServerExchange exchange, StringBuilder sb) { try { FormData formData = exchange.getAttachment(FormDataParser.FORM_DATA); if (formData != null) { sb.append("body=\n"); for (String formField : formData) { Deque<FormData.FormValue> formValues = formData.get(formField); sb.append(formField) .append("="); for (FormData.FormValue formValue : formValues) { sb.append(formValue.isFileItem() ? "[file-content]" : formValue.getValue()); sb.append("\n"); if (formValue.getHeaders() != null) { sb.append("headers=\n"); for (HeaderValues header : formValue.getHeaders()) { sb.append("\t") .append(header.getHeaderName()).append("=").append(header.getFirst()).append("\n"); } } } } } } catch (Exception e) { throw new RuntimeException(e); } }
ArrayList<String> existing = arrayMap.get(name); for (final FormData.FormValue v : val) { if(!v.isFileItem()) { existing.add(v.getValue()); final ArrayList<String> values = new ArrayList<>(); for (final FormData.FormValue v : val) { if(!v.isFileItem()) { values.add(v.getValue());
@Override public String[] getParameterValues(final String name) { if (queryParameters == null) { queryParameters = exchange.getQueryParameters(); } final List<String> ret = new ArrayList<>(); Deque<String> params = queryParameters.get(name); if (params != null) { for (String param : params) { ret.add(param); } } if (exchange.getRequestMethod().equals(Methods.POST)) { final FormData parsedFormData = parseFormData(); if (parsedFormData != null) { Deque<FormData.FormValue> res = parsedFormData.get(name); if (res != null) { for (FormData.FormValue value : res) { if(!value.isFileItem()) { ret.add(value.getValue()); } } } } } if (ret.isEmpty()) { return null; } return ret.toArray(new String[ret.size()]); }
private void dumpRequestBody(HttpServerExchange exchange, StringBuilder sb) { try { FormData formData = exchange.getAttachment(FormDataParser.FORM_DATA); if (formData != null) { sb.append("body=\n"); for (String formField : formData) { Deque<FormData.FormValue> formValues = formData.get(formField); sb.append(formField) .append("="); for (FormData.FormValue formValue : formValues) { sb.append(formValue.isFileItem() ? "[file-content]" : formValue.getValue()); sb.append("\n"); if (formValue.getHeaders() != null) { sb.append("headers=\n"); for (HeaderValues header : formValue.getHeaders()) { sb.append("\t") .append(header.getHeaderName()).append("=").append(header.getFirst()).append("\n"); } } } } } } catch (Exception e) { throw new RuntimeException(e); } }
@Override public Enumeration<String> getParameterNames() { if (queryParameters == null) { queryParameters = exchange.getQueryParameters(); } final Set<String> parameterNames = new HashSet<>(queryParameters.keySet()); if (exchange.getRequestMethod().equals(Methods.POST)) { final FormData parsedFormData = parseFormData(); if (parsedFormData != null) { Iterator<String> it = parsedFormData.iterator(); while (it.hasNext()) { String name = it.next(); for(FormData.FormValue param : parsedFormData.get(name)) { if(!param.isFileItem()) { parameterNames.add(name); break; } } } } } return new IteratorEnumeration<>(parameterNames.iterator()); }
@Override public String getParameter(final String name) { if(queryParameters == null) { queryParameters = exchange.getQueryParameters(); } Deque<String> params = queryParameters.get(name); if (params == null) { final FormData parsedFormData = parseFormData(); if (parsedFormData != null) { FormData.FormValue res = parsedFormData.getFirst(name); if (res == null || res.isFileItem()) { return null; } else { return res.getValue(); } } return null; } return params.getFirst(); }
/** * Find the name of the first file field in this request * * @param formData * @return the first file field name or null */ private static String extractFileField(final FormData formData) { String fileField = null; for (String f : formData) { if (formData.getFirst(f) != null && formData.getFirst(f).isFileItem()) { fileField = f; break; } } return fileField; }
@Override public void write(final String fileName) throws IOException { Path target = Paths.get(fileName); if(!target.isAbsolute()) { if(config.getLocation().isEmpty()) { target = servletContext.getDeployment().getDeploymentInfo().getTempPath().resolve(fileName); } else { target = Paths.get(config.getLocation(), fileName); } } if (formValue.isFileItem()) { formValue.getFileItem().write(target); } }
@Override public void delete() throws IOException { if (formValue.isFileItem()) { try { formValue.getFileItem().delete(); } catch (IOException e) { throw UndertowServletMessages.MESSAGES.deleteFailed(formValue.getPath()); } } }
@Override public InputStream getInputStream() throws IOException { if (formValue.isFileItem()) { return formValue.getFileItem().getInputStream(); } else { String requestedCharset = servletRequest.getCharacterEncoding(); String charset = requestedCharset != null ? requestedCharset : servletContext.getDeployment().getDefaultRequestCharset().name(); return new ByteArrayInputStream(formValue.getValue().getBytes(charset)); } }
@Override public long getSize() { try { if (formValue.isFileItem()) { return formValue.getFileItem().getFileSize(); } else { return formValue.getValue().length(); } } catch (IOException e) { throw new RuntimeException(e); } }