You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2017/01/27 12:56:37 UTC
[5/8] camel git commit: added support of telegram documents (general
files, uncompressed)
added support of telegram documents (general files, uncompressed)
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e4884605
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e4884605
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e4884605
Branch: refs/heads/master
Commit: e488460548f7f7a2ccacbd56dcd50bc978b64959
Parents: 4690b07
Author: Steffen Eitelmann <ma...@steffen-eitelmann.com>
Authored: Fri Jan 20 13:15:20 2017 +0100
Committer: Nicola Ferraro <ni...@gmail.com>
Committed: Fri Jan 27 13:56:19 2017 +0100
----------------------------------------------------------------------
.../component/telegram/TelegramMediaType.java | 2 +-
.../telegram/model/IncomingDocument.java | 97 ++++++++++++++++++++
.../telegram/model/IncomingMessage.java | 11 +++
.../telegram/model/OutgoingDocumentMessage.java | 68 ++++++++++++++
.../component/telegram/service/RestBotAPI.java | 5 +
.../TelegramServiceRestBotAPIAdapter.java | 16 ++++
.../telegram/util/TelegramConverter.java | 16 +++-
7 files changed, 212 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/e4884605/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramMediaType.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramMediaType.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramMediaType.java
index bab9f76..5321f2b 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramMediaType.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramMediaType.java
@@ -22,7 +22,7 @@ package org.apache.camel.component.telegram;
*/
public enum TelegramMediaType {
- TEXT("txt"), PHOTO_PNG("png"), PHOTO_JPG("jpg"), AUDIO("mp3"), VIDEO("mp4");
+ TEXT("txt"), PHOTO_PNG("png"), PHOTO_JPG("jpg"), AUDIO("mp3"), VIDEO("mp4"), DOCUMENT("-");
private String fileExtension;
http://git-wip-us.apache.org/repos/asf/camel/blob/e4884605/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingDocument.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingDocument.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingDocument.java
new file mode 100644
index 0000000..86c6743
--- /dev/null
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingDocument.java
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.telegram.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Contains information about a general file.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class IncomingDocument {
+
+ @JsonProperty("file_id")
+ private String fileId;
+
+ @JsonProperty("thumb")
+ private IncomingPhotoSize thumb;
+
+ @JsonProperty("file_name")
+ private String fileName;
+
+ @JsonProperty("mime_type")
+ private String mimeType;
+
+ @JsonProperty("file_size")
+ private Long fileSize;
+
+ public IncomingDocument() {
+ }
+
+ public String getFileId() {
+ return fileId;
+ }
+
+ public void setFileId(String fileId) {
+ this.fileId = fileId;
+ }
+
+ public IncomingPhotoSize getThumb() {
+ return thumb;
+ }
+
+ public void setThumb(IncomingPhotoSize thumb) {
+ this.thumb = thumb;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ public void setMimeType(String mimeType) {
+ this.mimeType = mimeType;
+ }
+
+ public Long getFileSize() {
+ return fileSize;
+ }
+
+ public void setFileSize(Long fileSize) {
+ this.fileSize = fileSize;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("IncomingAudio{");
+ sb.append("fileId='").append(fileId).append('\'');
+ sb.append(", thumbSize='").append(thumb).append('\'');
+ sb.append(", fileName='").append(fileName).append('\'');
+ sb.append(", mimeType='").append(mimeType).append('\'');
+ sb.append(", fileSize=").append(fileSize);
+ sb.append('}');
+ return sb.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/e4884605/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java
index 66e4d27..44d1fde 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java
@@ -50,6 +50,8 @@ public class IncomingMessage implements Serializable {
private IncomingAudio audio;
+ private IncomingDocument document;
+
public IncomingMessage() {
}
@@ -117,6 +119,14 @@ public class IncomingMessage implements Serializable {
this.audio = audio;
}
+ public IncomingDocument getDocument() {
+ return document;
+ }
+
+ public void setDocument(IncomingDocument document) {
+ this.document = document;
+ }
+
@Override
public String toString() {
@@ -129,6 +139,7 @@ public class IncomingMessage implements Serializable {
sb.append(", photo=").append(photo);
sb.append(", video=").append(video);
sb.append(", audio=").append(audio);
+ sb.append(", document=").append(document);
sb.append('}');
return sb.toString();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/e4884605/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingDocumentMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingDocumentMessage.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingDocumentMessage.java
new file mode 100644
index 0000000..eea5c5a
--- /dev/null
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingDocumentMessage.java
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.telegram.model;
+
+/**
+ * An outgoing document message.
+ */
+public class OutgoingDocumentMessage extends OutgoingMessage {
+
+ private byte[] document;
+
+ private String filenameWithExtension;
+
+ private String caption;
+
+ public OutgoingDocumentMessage() {
+ }
+
+ public byte[] getDocument() {
+ return document;
+ }
+
+ public void setDocument(byte[] document) {
+ this.document = document;
+ }
+
+ public String getFilenameWithExtension() {
+ return filenameWithExtension;
+ }
+
+ public void setFilenameWithExtension(String filenameWithExtension) {
+ this.filenameWithExtension = filenameWithExtension;
+ }
+
+ public String getCaption() {
+ return caption;
+ }
+
+ public void setCaption(String caption) {
+ this.caption = caption;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("OutgoingVideoMessage{");
+ sb.append("document(length)=").append(document != null ? document.length : null);
+ sb.append(", filenameWithExtension='").append(filenameWithExtension).append('\'');
+ sb.append(", caption='").append(caption).append('\'');
+ sb.append('}');
+ sb.append(' ');
+ sb.append(super.toString());
+ return sb.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/e4884605/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/RestBotAPI.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/RestBotAPI.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/RestBotAPI.java
index 559f3db..99f3ab3 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/RestBotAPI.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/RestBotAPI.java
@@ -80,4 +80,9 @@ public interface RestBotAPI {
@Produces(MediaType.APPLICATION_JSON)
void sendVideo(@PathParam("authorizationToken") String authorizationToken, List<Attachment> attachments);
+ @POST
+ @Path("/bot{authorizationToken}/sendDocument")
+ @Consumes(MediaType.MULTIPART_FORM_DATA)
+ @Produces(MediaType.APPLICATION_JSON)
+ void sendDocument(@PathParam("authorizationToken") String authorizationToken, List<Attachment> attachments);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/e4884605/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java
index 9d14f05..70dce2d 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java
@@ -28,6 +28,7 @@ import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import org.apache.camel.component.telegram.TelegramService;
import org.apache.camel.component.telegram.model.OutgoingAudioMessage;
import org.apache.camel.component.telegram.model.OutgoingMessage;
+import org.apache.camel.component.telegram.model.OutgoingDocumentMessage;
import org.apache.camel.component.telegram.model.OutgoingPhotoMessage;
import org.apache.camel.component.telegram.model.OutgoingTextMessage;
import org.apache.camel.component.telegram.model.OutgoingVideoMessage;
@@ -64,6 +65,8 @@ public class TelegramServiceRestBotAPIAdapter implements TelegramService {
this.sendMessage(authorizationToken, (OutgoingAudioMessage) message);
} else if (message instanceof OutgoingVideoMessage) {
this.sendMessage(authorizationToken, (OutgoingVideoMessage) message);
+ } else if(message instanceof OutgoingDocumentMessage) {
+ this.sendMessage(authorizationToken, (OutgoingDocumentMessage) message);
} else {
throw new IllegalArgumentException("Unsupported message type " + (message != null ? message.getClass().getName() : null));
}
@@ -130,6 +133,19 @@ public class TelegramServiceRestBotAPIAdapter implements TelegramService {
api.sendVideo(authorizationToken, parts);
}
+ private void sendMessage(String authorizationToken, OutgoingDocumentMessage message) {
+ List<Attachment> parts = new LinkedList<>();
+
+ fillCommonMediaParts(parts, message);
+
+ parts.add(buildMediaPart("document", message.getFilenameWithExtension(), message.getDocument()));
+ if (message.getCaption() != null) {
+ parts.add(buildTextPart("caption", message.getCaption()));
+ }
+
+ api.sendDocument(authorizationToken, parts);
+ }
+
private void fillCommonMediaParts(List<Attachment> parts, OutgoingMessage message) {
parts.add(buildTextPart("chat_id", message.getChatId()));
http://git-wip-us.apache.org/repos/asf/camel/blob/e4884605/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/util/TelegramConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/util/TelegramConverter.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/util/TelegramConverter.java
index f585a73..cf19994 100644
--- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/util/TelegramConverter.java
+++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/util/TelegramConverter.java
@@ -22,6 +22,7 @@ import org.apache.camel.component.telegram.TelegramConstants;
import org.apache.camel.component.telegram.TelegramMediaType;
import org.apache.camel.component.telegram.model.IncomingMessage;
import org.apache.camel.component.telegram.model.OutgoingAudioMessage;
+import org.apache.camel.component.telegram.model.OutgoingDocumentMessage;
import org.apache.camel.component.telegram.model.OutgoingMessage;
import org.apache.camel.component.telegram.model.OutgoingPhotoMessage;
import org.apache.camel.component.telegram.model.OutgoingTextMessage;
@@ -155,9 +156,20 @@ public final class TelegramConverter {
result = video;
break;
}
+ case DOCUMENT:
default: {
- throw new IllegalArgumentException("Unsupported conversion from byte[] to media type " + type);
- }
+ // this can be any file
+ OutgoingDocumentMessage document = new OutgoingDocumentMessage();
+ String title = (String) exchange.getIn().getHeader(TelegramConstants.TELEGRAM_MEDIA_TITLE_CAPTION);
+ String fileName = "file." + type.getFileExtension();
+
+ document.setCaption(title);
+ document.setFilenameWithExtension(fileName);
+ document.setDocument(message);
+
+ result = document;
+ break;
+ }
}
return result;