/* * Copyright (c) 2018-2028, DreamLu All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: DreamLu 卢春梦 (596392912@qq.com) */ package org.springblade.core.http; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import okhttp3.*; import javax.annotation.Nullable; import java.io.File; import java.io.InputStream; import java.nio.file.Path; import java.util.List; import java.util.Map; import java.util.function.Consumer; /** * 相应接口 * * @author L.cm */ public interface ResponseSpec { /** * Returns the HTTP code. * * @return code */ int code(); /** * Returns the HTTP status message. * * @return message */ String message(); /** * Returns the HTTP isSuccessful. * * @return boolean */ default boolean isOk() { return false; } /** * Returns the is Redirect. * * @return is Redirect */ boolean isRedirect(); /** * Returns the Headers. * * @return Headers */ Headers headers(); /** * Headers Consumer. * * @param consumer Consumer * @return Headers */ default ResponseSpec headers(Consumer consumer) { consumer.accept(this.headers()); return this; } /** * Returns the Cookies. * * @return Cookie List */ List cookies(); /** * 读取消费 cookie * * @param consumer Consumer * @return ResponseSpec */ default ResponseSpec cookies(Consumer> consumer) { consumer.accept(this.cookies()); return this; } /** * Returns body String. * * @return body String */ String asString(); /** * Returns body to byte arrays. * * @return byte arrays */ byte[] asBytes(); /** * Returns body to InputStream. * * @return InputStream */ InputStream asStream(); /** * Returns body to JsonNode. * * @return JsonNode */ JsonNode asJsonNode(); /** * Returns body to Object. * * @param valueType value value type * @return Object */ @Nullable T asValue(Class valueType); /** * Returns body to Object. * * @param typeReference value Type Reference * @return Object */ @Nullable T asValue(TypeReference typeReference); /** * Returns body to List. * * @param valueType value type * @return List */ List asList(Class valueType); /** * Returns body to Map. * * @param keyClass key type * @param valueType value type * @return Map */ Map asMap(Class keyClass, Class valueType); /** * Returns body to Map. * * @param valueType value 类型 * @return Map */ Map asMap(Class valueType); /** * 将 xml、heml 转成对象 * * @param valueType 对象类 * @param 泛型 * @return 对象 */ T asDomValue(Class valueType); /** * 将 xml、heml 转成对象 * * @param valueType 对象类 * @param 泛型 * @return 对象集合 */ List asDomList(Class valueType); /** * toFile. * * @param file File */ File toFile(File file); /** * toFile. * * @param path Path */ Path toFile(Path path); /** * Returns contentType. * * @return contentType */ @Nullable MediaType contentType(); /** * Returns contentLength. * * @return contentLength */ long contentLength(); /** * Returns rawRequest. * * @return Request */ Request rawRequest(); /** * rawRequest Consumer. * * @param consumer Consumer * @return ResponseSpec */ @Nullable default ResponseSpec rawRequest(Consumer consumer) { consumer.accept(this.rawRequest()); return this; } /** * Returns rawResponse. * * @return Response */ Response rawResponse(); /** * rawResponse Consumer. * * @param consumer Consumer * @return Response */ default ResponseSpec rawResponse(Consumer consumer) { consumer.accept(this.rawResponse()); return this; } /** * Returns rawBody. * * @return ResponseBody */ @Nullable ResponseBody rawBody(); /** * rawBody Consumer. * * @param consumer Consumer * @return ResponseBody */ @Nullable default ResponseSpec rawBody(Consumer consumer) { consumer.accept(this.rawBody()); return this; } }