package com.alibaba.otter.canal.parse.inbound.mysql.rds.request;

import java.util.Date;

import com.alibaba.fastjson2.JSON;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson2.TypeReference;
import com.alibaba.otter.canal.parse.inbound.mysql.rds.data.DescribeBinlogFileResult;

/**
 * @author chengjin.lyf on 2018/8/7 下午3:41
 * @since 1.0.25
 */
public class DescribeBinlogFilesRequest extends AbstractRequest<DescribeBinlogFileResult> {

    public DescribeBinlogFilesRequest(){
        setVersion("2014-08-15");
        putQueryString("Action", "DescribeBinlogFiles");
    }

    public void setRdsInstanceId(String rdsInstanceId) {
        putQueryString("DBInstanceId", rdsInstanceId);
    }

    public void setPageSize(int pageSize) {
        putQueryString("PageSize", String.valueOf(pageSize));
    }

    public void setPageNumber(int pageNumber) {
        putQueryString("PageNumber", String.valueOf(pageNumber));
    }

    public void setStartDate(Date startDate) {
        putQueryString("StartTime", formatUTCTZ(startDate));
    }

    public void setEndDate(Date endDate) {
        putQueryString("EndTime", formatUTCTZ(endDate));
    }

    public void setResourceOwnerId(Long resourceOwnerId) {
        putQueryString("ResourceOwnerId", String.valueOf(resourceOwnerId));
    }

    @Override
    protected DescribeBinlogFileResult processResult(HttpResponse response) throws Exception {
        String result = EntityUtils.toString(response.getEntity());
        DescribeBinlogFileResult describeBinlogFileResult = JSON.parseObject(result,
            new TypeReference<DescribeBinlogFileResult>() {
            });
        return describeBinlogFileResult;
    }
}
