package com.lob.protocol.request;
import com.lob.id.CountryCode;
import com.lob.id.ZipCode;
import java.util.Collection;
public class VerifyAddressRequest extends AbstractAddressRequest implements HasLobParams {
public VerifyAddressRequest(
final String line1,
final String line2,
final String city,
final String state,
final ZipCode zip,
final CountryCode country) {
super(line1, line2, city, state, zip, country, null, null); // verification requests don't have metadata or descriptions
}
@Override
public Collection<LobParam> getLobParams() {
return super.beginParams().build();
}
public static Builder builder() {
return new Builder();
}
@Override
public String toString() {
return "VerifyAddressRequest{" + super.toString();
}
public static class Builder {
private String line1;
private String line2;
private String city;
private String state;
private ZipCode zip;
private CountryCode country;
private Builder() {
}
public Builder line1(final String line1) {
this.line1 = line1;
return this;
}
public Builder line2(final String line2) {
this.line2 = line2;
return this;
}
public Builder city(final String city) {
this.city = city;
return this;
}
public Builder state(final String state) {
this.state = state;
return this;
}
public Builder zip(final String zip) {
this.zip = ZipCode.parse(zip);
return this;
}
public Builder zip(final ZipCode zip) {
this.zip = zip;
return this;
}
public Builder country(final String country) {
this.country = CountryCode.parse(country);
return this;
}
public Builder country(final CountryCode country) {
this.country = country;
return this;
}
public Builder butWith() {
return new Builder()
.line1(line1)
.line2(line2)
.city(city)
.state(state)
.zip(zip)
.country(country);
}
public VerifyAddressRequest build() {
return new VerifyAddressRequest(line1, line2, city, state, zip, country);
}
}
}