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.meetings;
017
018import com.fasterxml.jackson.annotation.JsonProperty;
019import com.vonage.client.JsonableBaseObject;
020import java.net.URI;
021
022public class CallbackUrls extends JsonableBaseObject {
023        private URI roomsCallbackUrl, sessionsCallbackUrl, recordingsCallbackUrl;
024
025        protected CallbackUrls() {
026        }
027
028        CallbackUrls(Builder builder) {
029                if (builder.roomsCallbackUrl != null) {
030                        roomsCallbackUrl = URI.create(builder.roomsCallbackUrl);
031                }
032                if (builder.sessionsCallbackUrl != null) {
033                        sessionsCallbackUrl = URI.create(builder.sessionsCallbackUrl);
034                }
035                if (builder.recordingsCallbackUrl != null) {
036                        recordingsCallbackUrl = URI.create(builder.recordingsCallbackUrl);
037                }
038        }
039
040        /**
041         * Callback url for rooms events, overrides application level rooms callback URL.
042         *
043         * @return The rooms callback URL.
044         */
045        @JsonProperty("rooms_callback_url")
046        public URI getRoomsCallbackUrl() {
047                return roomsCallbackUrl;
048        }
049
050        /**
051         * Callback url for sessions events, overrides application level sessions callback URL.
052         *
053         * @return The sessions callback URL.
054         */
055        @JsonProperty("sessions_callback_url")
056        public URI getSessionsCallbackUrl() {
057                return sessionsCallbackUrl;
058        }
059
060        /**
061         * Callback url for recordings events, overrides application level recordings callback URL.
062         *
063         * @return The recordings callback URL.
064         */
065        @JsonProperty("recordings_callback_url")
066        public URI getRecordingsCallbackUrl() {
067                return recordingsCallbackUrl;
068        }
069        
070        /**
071         * Entry point for constructing an instance of this class.
072         * 
073         * @return A new Builder.
074         */
075        public static Builder builder() {
076                return new Builder();
077        }
078        
079        public static class Builder {
080                private String roomsCallbackUrl, sessionsCallbackUrl, recordingsCallbackUrl;
081        
082                Builder() {}
083        
084                /**
085                 *
086                 * @param roomsCallbackUrl Callback url for rooms events, overrides application level rooms callback url.
087                 *
088                 * @return This builder.
089                 */
090                public Builder roomsCallbackUrl(String roomsCallbackUrl) {
091                        this.roomsCallbackUrl = roomsCallbackUrl;
092                        return this;
093                }
094
095                /**
096                 *
097                 * @param sessionsCallbackUrl Callback url for sessions events, overrides application level sessions callback url.
098                 *
099                 * @return This builder.
100                 */
101                public Builder sessionsCallbackUrl(String sessionsCallbackUrl) {
102                        this.sessionsCallbackUrl = sessionsCallbackUrl;
103                        return this;
104                }
105
106                /**
107                 *
108                 * @param recordingsCallbackUrl Callback url for recordings events, overrides application level recordings callback url.
109                 *
110                 * @return This builder.
111                 */
112                public Builder recordingsCallbackUrl(String recordingsCallbackUrl) {
113                        this.recordingsCallbackUrl = recordingsCallbackUrl;
114                        return this;
115                }
116
117        
118                /**
119                 * Builds the {@linkplain CallbackUrls}.
120                 *
121                 * @return An instance of CallbackUrls, populated with all fields from this builder.
122                 */
123                public CallbackUrls build() {
124                        return new CallbackUrls(this);
125                }
126        }
127}