com.twilio.rest.messaging.v1.session.MessageUpdater 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 MessageUpdater extends Updater {
private final String pathSessionSid;
private final String pathSid;
private String author;
private String attributes;
private DateTime dateCreated;
private DateTime dateUpdated;
private String body;
/**
* Construct a new MessageUpdater.
*
* @param pathSessionSid The unique id of the Session for this message.
* @param pathSid A 34 character string that uniquely identifies this resource.
*/
public MessageUpdater(final String pathSessionSid,
final String pathSid) {
this.pathSessionSid = pathSessionSid;
this.pathSid = pathSid;
}
/**
* The [identity](https://www.twilio.com/docs/api/chat/guides/identity) of the
* message's author. Defaults to `system`..
*
* @param author The identity of the message's author.
* @return this
*/
public MessageUpdater setAuthor(final String author) {
this.author = author;
return this;
}
/**
* A string metadata field you can use to store any data you wish. The string
* value must contain structurally valid JSON if specified..
*
* @param attributes A string metadata field you can use to store any data you
* wish.
* @return this
*/
public MessageUpdater setAttributes(final String attributes) {
this.attributes = attributes;
return this;
}
/**
* The date that this resource was created..
*
* @param dateCreated The date that this resource was created.
* @return this
*/
public MessageUpdater setDateCreated(final DateTime dateCreated) {
this.dateCreated = dateCreated;
return this;
}
/**
* The date that this resource was last updated. `null` if the message has not
* been edited..
*
* @param dateUpdated The date that this resource was last updated.
* @return this
*/
public MessageUpdater setDateUpdated(final DateTime dateUpdated) {
this.dateUpdated = dateUpdated;
return this;
}
/**
* The contents of the message..
*
* @param body The contents of the message.
* @return this
*/
public MessageUpdater setBody(final String body) {
this.body = body;
return this;
}
/**
* Make the request to the Twilio API to perform the update.
*
* @param client TwilioRestClient with which to make the request
* @return Updated Message
*/
@Override
@SuppressWarnings("checkstyle:linelength")
public Message update(final TwilioRestClient client) {
Request request = new Request(
HttpMethod.POST,
Domains.MESSAGING.toString(),
"/v1/Sessions/" + this.pathSessionSid + "/Messages/" + this.pathSid + "",
client.getRegion()
);
addPostParams(request);
Response response = client.request(request);
if (response == null) {
throw new ApiConnectionException("Message 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 Message.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 (author != null) {
request.addPostParam("Author", author);
}
if (attributes != null) {
request.addPostParam("Attributes", attributes);
}
if (dateCreated != null) {
request.addPostParam("DateCreated", dateCreated.toString());
}
if (dateUpdated != null) {
request.addPostParam("DateUpdated", dateUpdated.toString());
}
if (body != null) {
request.addPostParam("Body", body);
}
}
}