25300c04创建于 2024年11月4日历史提交
/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2022-2024. All rights reserved.
 */

/**
 * @file
 * The file declares the FormBody class.
 */

package httpclient4cj

/**
 * The class is FormBody
 * @author luoyukai4
 * @since 0.33.3
 */
public class FormBody <: RequestBody {
    private static let CONTENT_TYPE: MediaType = MediaType.get("application/x-www-form-urlencoded")
    private let form: Form

    init(form: Form) {
        this.form = form
    }

    public func contentType(): Option<MediaType> {
        return CONTENT_TYPE
    }

    public func getContentLength(): Int64 {
        return form.toEncodeString().size
    }

    public func writeTo(sink: Sink): Unit {
        sink.write(form.toEncodeString().toUtf8Array())
    }

    public static func builder(): FormBodyBuilder {
        return FormBodyBuilder()
    }

    public func get(): InputStream {
        let arr = ByteBuffer()
        arr.write(form.toEncodeString().toUtf8Array())
        return arr
    }
}

public class FormBodyBuilder <: Builder<FormBody> {
    private let form: Form = Form()

    init() {}

    public func build(): FormBody {
        return FormBody(form)
    }

    public func add(name: String, value: String): FormBodyBuilder {
        form.add(name, value)
        return this
    }
}