You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/05/17 06:30:45 UTC
[camel] 01/02: Polished
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 61e5de9a3a7e0a651a31132325548c5da8fc9004
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu May 16 20:19:35 2019 +0200
Polished
---
.../src/main/docs/soroush-component.adoc | 13 ++--
.../soroushbot/component/SoroushBotEndpoint.java | 84 +++++++++-------------
.../SoroushBotComponentConfiguration.java | 3 +-
3 files changed, 42 insertions(+), 58 deletions(-)
diff --git a/components/camel-soroush/src/main/docs/soroush-component.adoc b/components/camel-soroush/src/main/docs/soroush-component.adoc
index a3e4078..4fa1f18 100644
--- a/components/camel-soroush/src/main/docs/soroush-component.adoc
+++ b/components/camel-soroush/src/main/docs/soroush-component.adoc
@@ -1,7 +1,8 @@
-[[soroush-component]]
-== SoroushBot Component
+== Soroush Component
*Available as of Camel version 3.0*
+*Available as of Camel version 3.0*
+
The *Soroush* component provides access to the https://soroush-app.ir/developer.html[Soroush Bot API].
It allows a Camel-based application to send and receive messages by acting as a Bot, i.e. participating in direct conversation with normal users and send and receive message and files
@@ -51,7 +52,7 @@ and store the urls in the message (`SoroushMessage.fileUrl`, `SoroushMessage.thu
// component options: START
-The SoroushBot component supports 2 options, which are listed below.
+The Soroush component supports 2 options, which are listed below.
@@ -63,10 +64,10 @@ The SoroushBot component supports 2 options, which are listed below.
|===
// component options: END
// endpoint options: START
-The SoroushBot endpoint is configured using URI syntax:
+The Soroush endpoint is configured using URI syntax:
----
-soroush:<endpoint>[/authorizationToken][?options]
+soroush:endpoint/authorizationToken
----
with the following path and query parameters:
@@ -77,7 +78,7 @@ with the following path and query parameters:
[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
-| *endpoint* | *Required* The endpoint type. it support getMessage as consumer and sendMessage,uploadFile,downloadFile as producer | | Endpoint
+| *endpoint* | *Required* The endpoint type. Support getMessage as consumer and sendMessage,uploadFile,downloadFile as producer | | Endpoint
|===
diff --git a/components/camel-soroush/src/main/java/org/apache/camel/component/soroushbot/component/SoroushBotEndpoint.java b/components/camel-soroush/src/main/java/org/apache/camel/component/soroushbot/component/SoroushBotEndpoint.java
index 7730381..e818887 100644
--- a/components/camel-soroush/src/main/java/org/apache/camel/component/soroushbot/component/SoroushBotEndpoint.java
+++ b/components/camel-soroush/src/main/java/org/apache/camel/component/soroushbot/component/SoroushBotEndpoint.java
@@ -53,17 +53,16 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * this class represents Soroush Endpoint, it is also a bean containing the configuration of the Endpoint
+ * To integrate with the Soroush chat bot.
*/
-@UriEndpoint(firstVersion = "3.0", scheme = "soroush", title = "SoroushBot", syntax = "soroush:<endpoint>[/authorizationToken][?options]", label = "chat")
+@UriEndpoint(firstVersion = "3.0", scheme = "soroush", title = "Soroush", syntax = "soroush:endpoint/authorizationToken", label = "chat")
public class SoroushBotEndpoint extends DefaultEndpoint {
- private static Logger log = LoggerFactory.getLogger(SoroushBotEndpoint.class);
- @UriPath(name = "endpoint", enums = "Endpoint", javaType = "Endpoint",
- description = "The endpoint type. it support `getMessage` as consumer and `sendMessage`,`uploadFile`,`downloadFile` as producer")
+ private static final Logger LOG = LoggerFactory.getLogger(SoroushBotEndpoint.class);
+
+ @UriPath(name = "endpoint", description = "The endpoint type. Support `getMessage` as consumer and `sendMessage`,`uploadFile`,`downloadFile` as producer")
@Metadata(required = true)
Endpoint type;
-
@UriPath(label = "global,security", description = "The authorization token for using"
+ " the bot (ask the @mrbot) e.g. 9yDv09nqKvP9CkBGKNmKQHir1dj2qLpN-YWa8hP7Rm3LK\"\n"
+ " + \"3MqQXYdXZIA5W4e0agPiUb-3eUKX69ozUNdY9yZBMlJiwnlksslkjWjsxcARo5cYtDnKTElig0xa\"\n"
@@ -140,7 +139,6 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
super(endpointUri, component);
}
-
/**
* @return supported Soroush endpoint as string to display in error.
*/
@@ -294,8 +292,6 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
/**
* return the lazily created instance of {@link SoroushBotEndpoint#uploadFileTarget} to used for uploading file to soroush.
- *
- * @return WebTarget
*/
private WebTarget getUploadFileTarget() {
if (uploadFileTarget == null) {
@@ -310,8 +306,6 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
/**
* return the lazily created instance of {@link SoroushBotEndpoint#sendMessageTarget} to used for sending message to soroush.
- *
- * @return WebTarget
*/
WebTarget getSendMessageTarget() {
if (sendMessageTarget == null) {
@@ -462,10 +456,6 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
/**
* try to upload an inputStream to server
- *
- * @param inputStream
- * @param message
- * @param fileType
*/
private UploadFileResponse uploadToServer(InputStream inputStream, SoroushMessage message, String fileType) throws SoroushException, InterruptedException {
javax.ws.rs.core.Response response;
@@ -476,8 +466,8 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
multipart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE);
multipart.bodyPart(new StreamDataBodyPart("file", inputStream, null, MediaType.APPLICATION_OCTET_STREAM_TYPE));
try {
- if (log.isDebugEnabled()) {
- log.debug("try to upload " + fileType + " for the " + StringUtils.ordinal(count + 1) + " time for message:" + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("try to upload " + fileType + " for the " + StringUtils.ordinal(count + 1) + " time for message:" + message);
}
response = getUploadFileTarget().request(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(multipart, multipart.getMediaType()));
@@ -488,12 +478,12 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
throw new MaximumConnectionRetryReachedException("uploading " + fileType + " for message " + message + " failed. Maximum retry limit reached!"
+ " aborting upload file and send message", ex, message);
}
- if (log.isWarnEnabled()) {
- log.warn("uploading " + fileType + " for message " + message + " failed", ex);
+ if (LOG.isWarnEnabled()) {
+ LOG.warn("uploading " + fileType + " for message " + message + " failed", ex);
}
}
}
- log.error("should never reach this line of code because maxConnectionRetry is greater than -1 and at least the above for must execute single time and");
+ LOG.error("should never reach this line of code because maxConnectionRetry is greater than -1 and at least the above for must execute single time and");
//for backup
throw new MaximumConnectionRetryReachedException("uploading " + fileType + " for message " + message + " failed. Maximum retry limit reached! aborting "
+ "upload file and send message", message);
@@ -503,33 +493,32 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
* check if {@link SoroushMessage#file} or {@link SoroushMessage#thumbnail} is populated and upload them to the server.
* after that it set {@link SoroushMessage#fileUrl} and {@link SoroushMessage#thumbnailUrl} to appropriate value
*
- * @param message
* @throws SoroushException if soroush reject the file
*/
void handleFileUpload(SoroushMessage message) throws SoroushException, InterruptedException {
- if (log.isTraceEnabled()) {
- log.trace("try to upload file(s) to server if exists for message:" + message.toString());
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("try to upload file(s) to server if exists for message:" + message.toString());
}
InputStream file = message.getFile();
if (file != null && (message.getFileUrl() == null || forceUpload)) {
- if (log.isDebugEnabled()) {
- log.debug("uploading file to server for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("uploading file to server for message: " + message);
}
UploadFileResponse response = uploadToServer(file, message, "file");
message.setFileUrl(response.getFileUrl());
- if (log.isDebugEnabled()) {
- log.debug("uploaded file url is: " + response.getFileUrl() + " for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("uploaded file url is: " + response.getFileUrl() + " for message: " + message);
}
}
InputStream thumbnail = message.getThumbnail();
if (thumbnail != null && message.getThumbnailUrl() == null) {
- if (log.isDebugEnabled()) {
- log.debug("uploading thumbnail to server for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("uploading thumbnail to server for message: " + message);
}
UploadFileResponse response = uploadToServer(thumbnail, message, "thumbnail");
message.setThumbnailUrl(response.getFileUrl());
- if (log.isDebugEnabled()) {
- log.debug("uploaded thumbnail url is: " + response.getFileUrl() + " for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("uploaded thumbnail url is: " + response.getFileUrl() + " for message: " + message);
}
}
}
@@ -539,28 +528,27 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
* this function only set {@link SoroushMessage#file} to {@link InputStream} get from {@link Response#readEntity(Class)} )}
* and does not store the resource in file.
*
- * @param message
* @throws SoroushException if the file does not exists on soroush or soroush reject the request
*/
public void handleDownloadFiles(SoroushMessage message) throws SoroushException {
if (message.getFileUrl() != null && (message.getFile() == null || forceDownload)) {
- if (log.isDebugEnabled()) {
- log.debug("downloading file from server for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("downloading file from server for message: " + message);
}
InputStream inputStream = downloadFromServer(message.getFileUrl(), message, "file");
message.setFile(inputStream);
- if (log.isDebugEnabled()) {
- log.debug("file successfully downloaded for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("file successfully downloaded for message: " + message);
}
}
if (downloadThumbnail && message.getThumbnailUrl() != null && (message.getThumbnail() == null || forceDownload)) {
- if (log.isDebugEnabled()) {
- log.debug("downloading thumbnail from server for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("downloading thumbnail from server for message: " + message);
}
InputStream inputStream = downloadFromServer(message.getThumbnailUrl(), message, "thumbnail");
message.setThumbnail(inputStream);
- if (log.isDebugEnabled()) {
- log.debug("thumbnail successfully downloaded for message: " + message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("thumbnail successfully downloaded for message: " + message);
}
}
}
@@ -569,21 +557,17 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
* download the resource stored with the key {@code fileUrl} from Soroush Server.
* other parameters are used only for logging.
*
- * @param fileUrl
- * @param message
- * @param type
- * @return
* @throws SoroushException if soroush reject the request
*/
private InputStream downloadFromServer(String fileUrl, SoroushMessage message, String type) throws SoroushException {
Response response = null;
for (int i = 0; i <= maxConnectionRetry; i++) {
WebTarget target = getDownloadFileTarget(fileUrl);
- if (log.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
if (i != 0) {
- log.debug("retry downloading " + type + ": " + fileUrl + " for the " + StringUtils.ordinal(i) + " time");
+ LOG.debug("retry downloading " + type + ": " + fileUrl + " for the " + StringUtils.ordinal(i) + " time");
}
- log.debug("try to download " + type + ": " + fileUrl + " with url: " + target.getUri() + "\nfor message: " + message);
+ LOG.debug("try to download " + type + ": " + fileUrl + " with url: " + target.getUri() + "\nfor message: " + message);
}
try {
response = target.request().get();
@@ -592,13 +576,13 @@ public class SoroushBotEndpoint extends DefaultEndpoint {
if (i == maxConnectionRetry) {
throw new MaximumConnectionRetryReachedException("maximum connection retry reached for " + type + ": " + fileUrl, ex, message);
}
- if (log.isWarnEnabled()) {
- log.warn("can not download " + type + ": " + fileUrl + " from soroush. Response code is", ex);
+ if (LOG.isWarnEnabled()) {
+ LOG.warn("can not download " + type + ": " + fileUrl + " from soroush. Response code is", ex);
}
}
}
//should never reach this line
- log.error("should never reach this line. An exception should have been thrown by catch block for target.request().get");
+ LOG.error("should never reach this line. An exception should have been thrown by catch block for target.request().get");
throw new MaximumConnectionRetryReachedException("can not upload " + type + ": " + fileUrl + " response:" + ((response == null) ? null : response.getStatus()), message);
}
diff --git a/platforms/spring-boot/components-starter/camel-soroush-starter/src/main/java/org/apache/camel/component/soroushbot/component/springboot/SoroushBotComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-soroush-starter/src/main/java/org/apache/camel/component/soroushbot/component/springboot/SoroushBotComponentConfiguration.java
index e0968af..3c71c4d 100644
--- a/platforms/spring-boot/components-starter/camel-soroush-starter/src/main/java/org/apache/camel/component/soroushbot/component/springboot/SoroushBotComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-soroush-starter/src/main/java/org/apache/camel/component/soroushbot/component/springboot/SoroushBotComponentConfiguration.java
@@ -21,8 +21,7 @@ import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
- * this class represents Soroush Endpoint, it is also a bean containing the
- * configuration of the Endpoint
+ * To integrate with the Soroush chat bot.
*
* Generated by camel-package-maven-plugin - do not edit this file!
*/