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;