/** * * @param method represent the LR "web_submit_data" function * @return the associate POST_REQUEST */ public static PostRequest buildPostFormRequest(final LoadRunnerVUVisitor visitor, final MethodCall method) { final URL mainUrl = Preconditions.checkNotNull(getUrl(visitor.getLeftBrace(), visitor.getRightBrace(), method)); final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutablePostFormRequest.Builder requestBuilder = ImmutablePostFormRequest.builder() .name(mainUrl.getPath()) .path(mainUrl.getPath()) .server(visitor.getReader().getServer(mainUrl)) .httpMethod(getMethod(visitor.getLeftBrace(), visitor.getRightBrace(), method)) .recordedFiles(recordedFiles); getContentType(snapshotProperties).ifPresent(requestBuilder::contentType); requestBuilder.addAllExtractors(visitor.getCurrentExtractors()); requestBuilder.addAllValidators(visitor.getCurrentValidators()); requestBuilder.addAllHeaders(visitor.getCurrentHeaders()); visitor.getCurrentHeaders().clear(); requestBuilder.addAllHeaders(visitor.getGlobalHeaders()); requestBuilder.addAllHeaders(recordedHeaders); MethodUtils.extractItemListAsStringList(visitor, method.getParameters(), ITEMDATA, Optional.empty()) .ifPresent(stringList -> buildPostParamsFromExtract(stringList).forEach(requestBuilder::addPostParameters)); MethodUtils.queryToParameterList(mainUrl.getQuery()).forEach(requestBuilder::addParameters); return requestBuilder.build(); }
/** * Generate an immutable request of type Submit form */ @VisibleForTesting protected static PostSubmitFormRequest buildPostSubmitFormRequest(final LoadRunnerVUVisitor visitor, final MethodCall method, final String name) { final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutablePostSubmitFormRequest.Builder requestBuilder = ImmutablePostSubmitFormRequest.builder() .name(name) .path(name) .httpMethod(Request.HttpMethod.POST) .recordedFiles(recordedFiles); getContentType(snapshotProperties).ifPresent(requestBuilder::contentType); requestBuilder.addAllExtractors(visitor.getCurrentExtractors()); requestBuilder.addAllValidators(visitor.getCurrentValidators()); requestBuilder.addAllHeaders(visitor.getCurrentHeaders()); visitor.getCurrentHeaders().clear(); requestBuilder.addAllHeaders(visitor.getGlobalHeaders()); requestBuilder.addAllHeaders(recordedHeaders); visitor.getCurrentRequest().ifPresent(requestBuilder::referer); visitor.getCurrentRequest().ifPresent(cr -> requestBuilder.server(cr.getServer())); requestBuilder.path(buildExtractorPath(snapshotProperties)); MethodUtils.extractItemListAsStringList(visitor, method.getParameters(), ITEMDATA, Optional.empty()) .ifPresent(stringList -> buildPostParamsFromExtract(stringList).forEach(requestBuilder::addPostParameters)); return requestBuilder.build(); }
/** * Generate an immutable request of type Follow link */ @VisibleForTesting protected static GetFollowLinkRequest buildGetFollowLinkRequest(final LoadRunnerVUVisitor visitor, final MethodCall method, final String name, final String textFollowLink) { final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutableGetFollowLinkRequest.Builder requestBuilder = ImmutableGetFollowLinkRequest.builder() .name(name) .path(name) .text(textFollowLink) .httpMethod(Request.HttpMethod.GET) .recordedFiles(recordedFiles); getContentType(snapshotProperties).ifPresent(requestBuilder::contentType); requestBuilder.addAllExtractors(visitor.getCurrentExtractors()); requestBuilder.addAllValidators(visitor.getCurrentValidators()); requestBuilder.addAllHeaders(visitor.getCurrentHeaders()); visitor.getCurrentHeaders().clear(); requestBuilder.addAllHeaders(visitor.getGlobalHeaders()); requestBuilder.addAllHeaders(recordedHeaders); visitor.getCurrentRequest().ifPresent(requestBuilder::referer); visitor.getCurrentRequest().ifPresent(cr -> requestBuilder.server(cr.getServer())); requestBuilder.path(buildExtractorPath(snapshotProperties)); return requestBuilder.build(); }