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}