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.messages.whatsapp;
017
018import com.fasterxml.jackson.annotation.JsonAlias;
019import com.fasterxml.jackson.annotation.JsonProperty;
020import com.vonage.client.JsonableBaseObject;
021
022/**
023 * Whatsapp Location message parameters.
024 *
025 * @since 7.2.0
026 */
027public final class Location extends JsonableBaseObject {
028        private double latitude, longitude;
029        private String name, address;
030
031        Location() {}
032
033        Location(WhatsappLocationRequest.Builder builder) {
034                if (builder.latitude == null || builder.longitude == null) {
035                        throw new IllegalStateException("Both latitude and longitude are required.");
036                }
037                latitude = builder.latitude;
038                longitude = builder.longitude;
039                name = builder.name;
040                address = builder.address;
041        }
042
043        @JsonAlias("lat")
044        @JsonProperty("latitude")
045        public double getLatitude() {
046                return latitude;
047        }
048
049        @JsonAlias("long")
050        @JsonProperty("longitude")
051        public double getLongitude() {
052                return longitude;
053        }
054
055        @JsonProperty("name")
056        public String getName() {
057                return name;
058        }
059
060        @JsonProperty("address")
061        public String getAddress() {
062                return address;
063        }
064}