001package io.freefair.spring.okhttp; 002 003import okhttp3.Response; 004import org.springframework.http.ContentDisposition; 005import org.springframework.http.HttpHeaders; 006import org.springframework.http.HttpMessage; 007import org.springframework.lang.NonNull; 008import org.springframework.lang.Nullable; 009import org.springframework.util.StringUtils; 010 011import java.net.URI; 012import java.net.URL; 013 014public class OkHttpResponseResource extends OkHttpResponseBodyResource implements HttpMessage { 015 016 private final Response response; 017 018 public OkHttpResponseResource(Response response) { 019 super(response.body()); 020 this.response = response; 021 } 022 023 @Override 024 @NonNull 025 public String getDescription() { 026 return "OkHttpResponse [ " + response + " ]"; 027 } 028 029 @Override 030 @Nullable 031 public String getFilename() { 032 033 String contentDisposition = response.header("Content-Disposition"); 034 if (StringUtils.hasText(contentDisposition)) { 035 return ContentDisposition.parse(contentDisposition).getFilename(); 036 } 037 038 return super.getFilename(); 039 } 040 041 @Override 042 @NonNull 043 public URL getURL() { 044 return response.request().url().url(); 045 } 046 047 @Override 048 @NonNull 049 public URI getURI() { 050 return response.request().url().uri(); 051 } 052 053 @Override 054 @NonNull 055 public HttpHeaders getHeaders() { 056 return OkHttpUtils.toSpringHeaders(response.headers()); 057 } 058}