com.twilio.rest.messaging.v1.session.ParticipantUpdater Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of twilio Show documentation
Show all versions of twilio Show documentation
Twilio Java Helper Library
/**
* This code was generated by
* \ / _ _ _| _ _
* | (_)\/(_)(_|\/| |(/_ v1.0.0
* / /
*/
package com.twilio.rest.messaging.v1.session;
import com.twilio.base.Updater;
import com.twilio.converter.DateConverter;
import com.twilio.exception.ApiConnectionException;
import com.twilio.exception.ApiException;
import com.twilio.exception.RestException;
import com.twilio.http.HttpMethod;
import com.twilio.http.Request;
import com.twilio.http.Response;
import com.twilio.http.TwilioRestClient;
import com.twilio.rest.Domains;
import org.joda.time.DateTime;
/**
* PLEASE NOTE that this class contains preview products that are subject to
* change. Use them with caution. If you currently do not have developer preview
* access, please contact [email protected].
*/
public class ParticipantUpdater extends Updater {
private final String pathSessionSid;
private final String pathSid;
private String attributes;
private DateTime dateCreated;
private DateTime dateUpdated;
/**
* Construct a new ParticipantUpdater.
*
* @param pathSessionSid The SID of the Session with the participant to update
* @param pathSid The SID that identifies the resource to update
*/
public ParticipantUpdater(final String pathSessionSid,
final String pathSid) {
this.pathSessionSid = pathSessionSid;
this.pathSid = pathSid;
}
/**
* A JSON string that stores application-specific data..
*
* @param attributes A JSON string that stores application-specific data
* @return this
*/
public ParticipantUpdater setAttributes(final String attributes) {
this.attributes = attributes;
return this;
}
/**
* The date, specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
* format, to assign to the resource as the date it was created. This is used
* when importing messages from another system, as the provided value will be
* trusted and displayed on SDK clients..
*
* @param dateCreated The ISO 8601 date and time in GMT when the resource was
* created
* @return this
*/
public ParticipantUpdater setDateCreated(final DateTime dateCreated) {
this.dateCreated = dateCreated;
return this;
}
/**
* The date, specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
* format, to assign to the resource as the date it was last updated..
*
* @param dateUpdated The ISO 8601 date and time in GMT when the resource was
* updated
* @return this
*/
public ParticipantUpdater setDateUpdated(final DateTime dateUpdated) {
this.dateUpdated = dateUpdated;
return this;
}
/**
* Make the request to the Twilio API to perform the update.
*
* @param client TwilioRestClient with which to make the request
* @return Updated Participant
*/
@Override
@SuppressWarnings("checkstyle:linelength")
public Participant update(final TwilioRestClient client) {
Request request = new Request(
HttpMethod.POST,
Domains.MESSAGING.toString(),
"/v1/Sessions/" + this.pathSessionSid + "/Participants/" + this.pathSid + "",
client.getRegion()
);
addPostParams(request);
Response response = client.request(request);
if (response == null) {
throw new ApiConnectionException("Participant update failed: Unable to connect to server");
} else if (!TwilioRestClient.SUCCESS.apply(response.getStatusCode())) {
RestException restException = RestException.fromJson(response.getStream(), client.getObjectMapper());
if (restException == null) {
throw new ApiException("Server Error, no content");
}
throw new ApiException(
restException.getMessage(),
restException.getCode(),
restException.getMoreInfo(),
restException.getStatus(),
null
);
}
return Participant.fromJson(response.getStream(), client.getObjectMapper());
}
/**
* Add the requested post parameters to the Request.
*
* @param request Request to add post params to
*/
private void addPostParams(final Request request) {
if (attributes != null) {
request.addPostParam("Attributes", attributes);
}
if (dateCreated != null) {
request.addPostParam("DateCreated", dateCreated.toString());
}
if (dateUpdated != null) {
request.addPostParam("DateUpdated", dateUpdated.toString());
}
}
}