001/* 002 * Copyright 2024 Vonage 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package com.vonage.client.insight; 017 018import com.vonage.client.QueryParamsRequest; 019import java.util.LinkedHashMap; 020import java.util.Map; 021 022public abstract class BaseInsightRequest implements QueryParamsRequest { 023 protected final String number, country; 024 Boolean cnam; 025 026 protected BaseInsightRequest(String number, String country) { 027 if ((this.number = number) == null || number.length() < 2) { 028 throw new IllegalStateException("Must provide a number for insight."); 029 } 030 if ((this.country = country) != null && country.length() != 2) { 031 throw new IllegalArgumentException("Country code must be 2 letters long."); 032 } 033 } 034 035 public String getNumber() { 036 return number; 037 } 038 039 public String getCountry() { 040 return country; 041 } 042 043 @Override 044 public Map<String, String> makeParams() { 045 Map<String, String> params = new LinkedHashMap<>(8); 046 params.put("number", number); 047 if (country != null) { 048 params.put("country", country); 049 } 050 if (cnam != null) { 051 params.put("cnam", cnam.toString()); 052 } 053 return params; 054 } 055}