package me.tagavari.airmessage.connection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MassRetrievalParams {
	public final boolean restrictMessages;
	public final long timeSinceMessages;
	public final boolean downloadAttachments;
	public final boolean restrictAttachments;
	public final long timeSinceAttachments;
	public final boolean restrictAttachmentSizes;
	public final long attachmentSizeLimit;
	public final List<String> attachmentFilterWhitelist;
	public final List<String> attachmentFilterBlacklist;
	public final boolean attachmentFilterDLOutside;
	
	public MassRetrievalParams() {
		restrictMessages = true;
		timeSinceMessages = System.currentTimeMillis() - 4 * 7 * 24 * 60 * 60 * 1000L; //1 month
		downloadAttachments = true;
		restrictAttachments = false;
		timeSinceAttachments = -1;
		restrictAttachmentSizes = true;
		attachmentSizeLimit = 1024 * 1024; //1 MiB
		attachmentFilterWhitelist = Arrays.asList("image/*", "video/*", "audio/*");
		attachmentFilterBlacklist = new ArrayList<>();
		attachmentFilterDLOutside = false;
	}
	
	public MassRetrievalParams(boolean restrictMessages, long timeSinceMessages, boolean downloadAttachments, boolean restrictAttachments, long timeSinceAttachments, boolean restrictAttachmentSizes, long attachmentSizeLimit, List<String> attachmentFilterWhitelist, List<String> attachmentFilterBlacklist, boolean attachmentFilterDLOutside) {
		this.restrictMessages = restrictMessages;
		this.timeSinceMessages = timeSinceMessages;
		this.downloadAttachments = downloadAttachments;
		this.restrictAttachments = restrictAttachments;
		this.timeSinceAttachments = timeSinceAttachments;
		this.restrictAttachmentSizes = restrictAttachmentSizes;
		this.attachmentSizeLimit = attachmentSizeLimit;
		this.attachmentFilterWhitelist = attachmentFilterWhitelist;
		this.attachmentFilterBlacklist = attachmentFilterBlacklist;
		this.attachmentFilterDLOutside = attachmentFilterDLOutside;
	}
}
