¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * 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 okhttp3.Headers; |
| | | import okhttp3.MultipartBody; |
| | | import okhttp3.RequestBody; |
| | | |
| | | import javax.annotation.Nullable; |
| | | import java.io.File; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 表åæé å¨ |
| | | * |
| | | * @author L.cm |
| | | */ |
| | | public class MultipartFormBuilder { |
| | | private final HttpRequest request; |
| | | private final MultipartBody.Builder formBuilder; |
| | | |
| | | MultipartFormBuilder(HttpRequest request) { |
| | | this.request = request; |
| | | this.formBuilder = new MultipartBody.Builder(); |
| | | } |
| | | |
| | | public MultipartFormBuilder add(String name, @Nullable Object value) { |
| | | this.formBuilder.addFormDataPart(name, HttpRequest.handleValue(value)); |
| | | return this; |
| | | } |
| | | |
| | | public MultipartFormBuilder addMap(@Nullable Map<String, Object> formMap) { |
| | | if (formMap != null && !formMap.isEmpty()) { |
| | | formMap.forEach(this::add); |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | public MultipartFormBuilder add(String name, File file) { |
| | | String fileName = file.getName(); |
| | | return add(name, fileName, file); |
| | | } |
| | | |
| | | public MultipartFormBuilder add(String name, @Nullable String filename, File file) { |
| | | RequestBody fileBody = RequestBody.create(null, file); |
| | | return add(name, filename, fileBody); |
| | | } |
| | | |
| | | public MultipartFormBuilder add(String name, @Nullable String filename, RequestBody fileBody) { |
| | | this.formBuilder.addFormDataPart(name, filename, fileBody); |
| | | return this; |
| | | } |
| | | |
| | | public MultipartFormBuilder add(RequestBody body) { |
| | | this.formBuilder.addPart(body); |
| | | return this; |
| | | } |
| | | |
| | | public MultipartFormBuilder add(@Nullable Headers headers, RequestBody body) { |
| | | this.formBuilder.addPart(headers, body); |
| | | return this; |
| | | } |
| | | |
| | | public MultipartFormBuilder add(MultipartBody.Part part) { |
| | | this.formBuilder.addPart(part); |
| | | return this; |
| | | } |
| | | |
| | | public HttpRequest build() { |
| | | formBuilder.setType(MultipartBody.FORM); |
| | | MultipartBody formBody = formBuilder.build(); |
| | | this.request.multipartForm(formBody); |
| | | return this.request; |
| | | } |
| | | |
| | | public Exchange execute() { |
| | | return this.build().execute(); |
| | | } |
| | | |
| | | public AsyncCall async() { |
| | | return this.build().async(); |
| | | } |
| | | } |