Refine search
@Override public List<String> params(final String name) { Builder<String> builder = ImmutableList.builder(); // query params Deque<String> query = exchange.getQueryParameters().get(name); if (query != null) { query.forEach(builder::add); } // form params Optional.ofNullable(parseForm().get(name)).ifPresent(values -> values.forEach(value -> { if (!value.isFile()) { builder.add(value.getValue()); } })); return builder.build(); }
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 File file() throws IOException { return value.getPath().toFile(); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { ObjectMapper mapper = Config.getInstance().getMapper(); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); Map<String, Object> formMap = new HashMap<>(); FormData data = parser.parseBlocking(); for (String fd : data) { for (FormData.FormValue val : data.get(fd)) { formMap.put(fd, val.getValue()); String grantType = (String)formMap.remove("grant_type"); if("client_credentials".equals(grantType)) { exchange.getResponseSender().send(mapper.writeValueAsString(handleClientCredentials(exchange, formMap))); } else if("authorization_code".equals(grantType)) { exchange.getResponseSender().send(mapper.writeValueAsString(handleAuthorizationCode(exchange, formMap))); } else if("password".equals(grantType)) { exchange.getResponseSender().send(mapper.writeValueAsString(handlePassword(exchange, formMap)));
@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()); }
FormData formData = httpExchange.getAttachment(FormDataParser.FORM_DATA); if (formData != null) { Map<String, Object> body = new HashMap<>(); formData.forEach(key -> { formData.get(key).forEach(value -> { if (value.isFile()) { DefaultAttachment attachment = new DefaultAttachment(new FilePartDataSource(value)); result.addAttachmentObject(key, attachment); body.put(key, attachment.getDataHandler()); } else if (headerFilterStrategy != null && !headerFilterStrategy.applyFilterToExternalHeaders(key, value.getValue(), exchange)) { UndertowHelper.appendHeader(result.getHeaders(), key, value.getValue()); UndertowHelper.appendHeader(body, key, value.getValue()); if (Methods.POST.equals(httpExchange.getRequestMethod()) || Methods.PUT.equals(httpExchange.getRequestMethod()) || Methods.PATCH.equals(httpExchange.getRequestMethod())) { result.setBody(readFromChannel(httpExchange.getRequestChannel())); } else {
@Override public String getRequestParameter(final String name) { Deque<String> param = exchange.getQueryParameters().get(name); if (param != null) { return param.peek(); } else { FormData data = exchange.getAttachment(FormDataParser.FORM_DATA); if (data != null && data.get(name) != null) { return data.get(name).peek().getValue(); } } return null; }
HeaderMap headers = exchange.getRequestHeaders(); if (!headers.contains(Headers.ORIGIN) && !headers.contains(CLIENT_NAME)) { ROOT_LOGGER.debug("HTTP Origin or X-Management-Client-Name header is required for all multipart form data posts."); final FormData.FormValue op = data.getFirst(OPERATION); final ModelNode operation; try { String type = op.getHeaders().getFirst(Headers.CONTENT_TYPE); if (Common.APPLICATION_DMR_ENCODED.equals(type)) { try (InputStream stream = convertToStream(op)) { final Iterator<String> i = data.iterator(); while (i.hasNext()) { final String name = i.next(); final Deque<FormData.FormValue> contents = data.get(name); if (contents != null && !contents.isEmpty()) { for (final FormData.FormValue value : contents) { if (value.isFile()) { builder.addFileAsAttachment(value.getPath().toFile());
@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()]); }
final FormData.FormValue jUsername = data.getFirst("j_username"); final FormData.FormValue jPassword = data.getFirst("j_password"); if (jUsername == null || jPassword == null) { UndertowLogger.SECURITY_LOGGER.debugf("Could not authenticate as username or password was not present in the posted result for %s", exchange); return AuthenticationMechanismOutcome.NOT_AUTHENTICATED; final String userName = jUsername.getValue(); final String password = jPassword.getValue(); AuthenticationMechanismOutcome outcome = null; PasswordCredential credential = new PasswordCredential(password.toCharArray()); if (outcome == AuthenticationMechanismOutcome.AUTHENTICATED) { handleRedirectBack(exchange); exchange.endExchange();
private void getForm(HttpServerExchange exchange) throws IOException { this.form = this.injector.getInstance(Form.class); if (exchange.getRequestMethod().equals(Methods.POST) || exchange.getRequestMethod().equals(Methods.PUT)) { final FormDataParser formDataParser = FormParserFactory.builder().build().createParser(exchange); if (formDataParser != null) { exchange.startBlocking(); FormData formData = formDataParser.parseBlocking(); for (String data : formData) { for (FormData.FormValue formValue : formData.get(data)) { if (formValue.isFile()) { form.addFile(formValue.getFile()); } else { form.add(new HttpString(data).toString(), formValue.getValue()); } } } this.form.setSubmitted(true); } } }
@Override public List<String> paramNames() { ImmutableList.Builder<String> builder = ImmutableList.builder(); builder.addAll(exchange.getQueryParameters().keySet()); FormData formdata = parseForm(); formdata.forEach(v -> { // excludes upload from param names. if (!formdata.getFirst(v).isFile()) { builder.add(v); } }); return builder.build(); }
@Override public String getParameter(String name) { // Returns the value of a request parameter as a String, or null if the // parameter does not exist. Request parameters are extra information sent // with the request. For ninja (following servlet rule), parameters are contained in the // query string or posted form data. Deque<String> queryParameterValues = exchange.getQueryParameters().get(name); if (queryParameterValues != null && !queryParameterValues.isEmpty()) { return queryParameterValues.getFirst(); } else { // fallback to form data if (this.formData != null) { FormData.FormValue value = this.formData.getFirst(name); if (value != null) { return value.getValue(); } } } return null; }
@Override public Credential readCredential(HttpServerExchange exchange) throws IOException { if ( !exchange.isBlocking() ) exchange.startBlocking(); Credential credential = null; final FormDataParser parser = formParserFactory.createParser(exchange); final FormData data = parser.parseBlocking(); final FormData.FormValue jUsername = data.getFirst("j_username"); final FormData.FormValue jPassword = data.getFirst("j_password"); if (jUsername != null && jPassword != null) { final String userName = jUsername.getValue(); final String password = jPassword.getValue(); credential = new UsernameAndPasswordCredential(userName, password); } return credential; }
@Override public List<NativeUpload> files(final String name) { Builder<NativeUpload> builder = ImmutableList.builder(); Deque<FormValue> values = parseForm().get(name); if (values != null) { values.forEach(value -> { if (value.isFile()) { builder.add(new UndertowUpload(value)); } }); } return builder.build(); }
/** * 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; }
void add(final HttpString name, final FormData.FormValue value) { Deque<String> values = this.values.get(name); if (values == null) { this.values.put(name, values = new ArrayDeque<>(1)); } String stringVal = value.getValue(); checkStringForSuspiciousCharacters(stringVal); values.add(stringVal); }
@Override public List<String> headers(final String name) { HeaderValues values = value.getHeaders().get(name); return values == null ? Collections.emptyList() : values; }
@Override public String name() { return value.getFileName(); }
void add(final HttpString name, final FormData.FormValue value) { Deque<String> values = this.values.get(name); if (values == null) { this.values.put(name, values = new ArrayDeque<>(1)); } String stringVal = value.getValue(); checkStringForSuspiciousCharacters(stringVal); values.add(stringVal); }