use of org.springframework.cloud.contract.spec.internal.Multipart in project spring-cloud-contract by spring-cloud.
the class ContractsToYaml method mapRequestMultipart.
private void mapRequestMultipart(YamlContract.Request yamlContractRequest, Request request) {
Multipart multipart = request.getMultipart();
if (multipart != null) {
yamlContractRequest.multipart = new YamlContract.Multipart();
Map<String, Object> map = (Map<String, Object>) MapConverter.getTestSideValues(multipart);
map.forEach((key, value) -> {
if (value instanceof NamedProperty) {
Object fileName = Optional.ofNullable(((NamedProperty) value).getName()).map(DslProperty::getServerValue).orElse(null);
Object contentType = Optional.ofNullable(((NamedProperty) value).getContentType()).map(DslProperty::getServerValue).orElse(null);
Object fileContent = Optional.ofNullable(((NamedProperty) value).getValue()).map(DslProperty::getServerValue).orElse(null);
YamlContract.Named named = new YamlContract.Named();
named.paramName = key;
named.fileName = fileName instanceof String ? Optional.ofNullable(((NamedProperty) value).getName()).map(DslProperty::getServerValue).map(Object::toString).orElse(null) : null;
named.fileContent = (String) Optional.ofNullable(fileContent).filter(f -> f instanceof String).orElse(null);
named.fileContentAsBytes = fileContent instanceof FromFileProperty ? new String(((FromFileProperty) fileContent).asBytes()) : null;
named.fileContentFromFileAsBytes = resolveFileNameAsBytes(fileContent);
named.contentType = (String) Optional.ofNullable(contentType).filter(f -> f instanceof String).orElse(null);
named.fileNameCommand = fileName instanceof ExecutionProperty ? fileName.toString() : null;
named.fileContentCommand = fileContent instanceof ExecutionProperty ? fileContent.toString() : null;
named.contentTypeCommand = contentType instanceof ExecutionProperty ? contentType.toString() : null;
yamlContractRequest.multipart.named.add(named);
} else {
yamlContractRequest.multipart.params.put(key, value != null ? value.toString() : null);
}
});
}
}
use of org.springframework.cloud.contract.spec.internal.Multipart in project spring-cloud-contract by spring-cloud.
the class ContractsToYaml method mapRequestMatchersMultipart.
private void mapRequestMatchersMultipart(YamlContract.Request yamlContractRequest, Request request) {
Multipart multipart = request.getMultipart();
if (multipart != null) {
yamlContractRequest.matchers.multipart = new YamlContract.MultipartStubMatcher();
Map<String, Object> map = (Map<String, Object>) MapConverter.getStubSideValues(multipart);
map.forEach((key, value) -> {
if (value instanceof NamedProperty) {
Object fileName = Optional.ofNullable(((NamedProperty) value).getName()).map(DslProperty::getClientValue).orElse(null);
Object fileContent = Optional.ofNullable(((NamedProperty) value).getValue()).map(DslProperty::getClientValue).orElse(null);
Object contentType = Optional.ofNullable(((NamedProperty) value).getContentType()).map(DslProperty::getClientValue).orElse(null);
if (fileName instanceof RegexProperty || fileContent instanceof RegexProperty || contentType instanceof RegexProperty) {
YamlContract.MultipartNamedStubMatcher multipartNamedStubMatcher = new YamlContract.MultipartNamedStubMatcher();
multipartNamedStubMatcher.paramName = key;
multipartNamedStubMatcher.fileName = valueMatcher(fileName);
multipartNamedStubMatcher.fileContent = valueMatcher(fileContent);
multipartNamedStubMatcher.contentType = valueMatcher(contentType);
yamlContractRequest.matchers.multipart.named.add(multipartNamedStubMatcher);
}
} else if (value instanceof RegexProperty || value instanceof Pattern) {
RegexProperty property = new RegexProperty(value);
YamlContract.KeyValueMatcher keyValueMatcher = new YamlContract.KeyValueMatcher();
keyValueMatcher.key = key;
keyValueMatcher.regex = property.pattern();
keyValueMatcher.regexType = regexType(property.clazz());
yamlContractRequest.matchers.multipart.params.add(keyValueMatcher);
}
});
}
}
Aggregations