All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.ipokerface.weixin.request.http.message.AbstractMessageConverter Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
package cn.ipokerface.weixin.request.http.message;

import cn.ipokerface.weixin.Constant;
import cn.ipokerface.weixin.request.http.HttpResponse;
import cn.ipokerface.weixin.request.http.MimeType;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Created by       PokerFace
 * Create Date      2019-12-27.
 * Email:           [email protected]
 * Version          1.0.0
 * 

* Description: */ public abstract class AbstractMessageConverter implements MessageConverter { protected Charset charset = Constant.UTF_8; private List supportedMimeTypes; protected AbstractMessageConverter() { this.supportedMimeTypes = Collections.emptyList(); } protected AbstractMessageConverter(MimeType supportedMimeType) { setSupportedMediaTypes(Collections.singletonList(supportedMimeType)); } protected AbstractMessageConverter(MimeType... supportedMimeTypes) { setSupportedMediaTypes(Arrays.asList(supportedMimeTypes)); } public void setSupportedMediaTypes(List supportedMimeTypes) { this.supportedMimeTypes = new ArrayList(supportedMimeTypes); } public Charset getCharset() { return charset; } public void setCharset(Charset charset) { this.charset = charset; } @Override public List supportedMimeTypes() { return Collections.unmodifiableList(this.supportedMimeTypes); } @Override public boolean canConvert(Class clazz, HttpResponse response) { MimeType mimeType = MimeType.valueOf(response.getHeaders().getContentType()); byte[] content = response.getContent(); return supports(clazz, mimeType) || supports(clazz, content); } /** * 满足其中一个supports * * @param clazz * 转换类型 * @param mimeType * 媒体类型 * @return 支持标识 */ protected boolean supports(Class clazz, MimeType mimeType) { if (mimeType == null) { return true; } for (MimeType supportedMediaType : supportedMimeTypes()) { if (supportedMediaType.includes(mimeType)) { return true; } } return false; } /** * 满足其中一个supports * * @param clazz * 转换类型 * @param content * 内容数据 * @return 支持标识 */ protected abstract boolean supports(Class clazz, byte[] content); @Override public T convert(Class clazz, HttpResponse response) throws IOException { return convertInternal(clazz, response.getBody()); } protected abstract T convertInternal(Class clazz, InputStream body) throws IOException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy