Binary mapper for http headers
Signed-off-by: Fabio José <fabiojose@gmail.com>
This commit is contained in:
parent
87d63b2ccd
commit
3a2ee97847
|
@ -0,0 +1,53 @@
|
|||
package io.cloudevents.v02.http;
|
||||
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.AbstractMap.SimpleEntry;
|
||||
import java.util.Locale;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import io.cloudevents.fun.BinaryFormatAttributeMapper;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fabiojose
|
||||
*
|
||||
*/
|
||||
public class BinaryFormatAttributeMapperImpl implements BinaryFormatAttributeMapper {
|
||||
|
||||
public static final String HEADER_PREFIX = "ce-";
|
||||
|
||||
@Override
|
||||
public Map<String, String> map(final Map<String, Object> headers) {
|
||||
Objects.requireNonNull(headers);
|
||||
|
||||
headers.keySet()
|
||||
.stream()
|
||||
.map(header -> header.toLowerCase(Locale.US))
|
||||
.filter(header -> header.startsWith(HEADER_PREFIX))
|
||||
.map(header -> header.substring(HEADER_PREFIX.length()));
|
||||
|
||||
final AtomicReference<Entry<String, Object>> ct = new AtomicReference<>();
|
||||
Map<String, String> result = headers.entrySet()
|
||||
.stream()
|
||||
.map(header -> new SimpleEntry<>(header.getKey().toLowerCase(Locale.US),
|
||||
header.getValue()))
|
||||
.peek(header -> {
|
||||
if("content-type".equals(header.getKey())) {
|
||||
ct.set(header);
|
||||
}
|
||||
})
|
||||
.filter(header -> header.getKey().startsWith(HEADER_PREFIX))
|
||||
.map(header -> new SimpleEntry<>(header.getKey().substring(HEADER_PREFIX.length()), header.getValue()))
|
||||
.map(header -> new SimpleEntry<>(header.getKey(), header.getValue().toString()))
|
||||
.collect(toMap(Entry::getKey, Entry::getValue));
|
||||
|
||||
result.put("contenttype", ct.get().getValue().toString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package io.cloudevents.v03.http;
|
||||
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.AbstractMap.SimpleEntry;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import io.cloudevents.fun.BinaryFormatAttributeMapper;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fabiojose
|
||||
*
|
||||
*/
|
||||
public class BinaryFormatAttributeMapperImpl implements BinaryFormatAttributeMapper {
|
||||
|
||||
public static final String HEADER_PREFIX = "ce-";
|
||||
|
||||
@Override
|
||||
public Map<String, String> map(final Map<String, Object> headers) {
|
||||
Objects.requireNonNull(headers);
|
||||
|
||||
headers.keySet()
|
||||
.stream()
|
||||
.map(header -> header.toLowerCase(Locale.US))
|
||||
.filter(header -> header.startsWith(HEADER_PREFIX))
|
||||
.map(header -> header.substring(HEADER_PREFIX.length()));
|
||||
|
||||
final AtomicReference<Entry<String, Object>> ct = new AtomicReference<>();
|
||||
Map<String, String> result = headers.entrySet()
|
||||
.stream()
|
||||
.map(header -> new SimpleEntry<>(header.getKey().toLowerCase(Locale.US),
|
||||
header.getValue()))
|
||||
.peek(header -> {
|
||||
if("content-type".equals(header.getKey())) {
|
||||
ct.set(header);
|
||||
}
|
||||
})
|
||||
.filter(header -> header.getKey().startsWith(HEADER_PREFIX))
|
||||
.map(header -> new SimpleEntry<>(header.getKey().substring(HEADER_PREFIX.length()), header.getValue()))
|
||||
.map(header -> new SimpleEntry<>(header.getKey(), header.getValue().toString()))
|
||||
.collect(toMap(Entry::getKey, Entry::getValue));
|
||||
|
||||
result.put("datacontenttype", ct.get().getValue().toString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue