From 3793d3660963ef9209e9940a305251da98021af3 Mon Sep 17 00:00:00 2001
From: Thorsten Claus <thorstenclaus@web.de>
Date: Thu, 13 May 2021 08:03:34 +0200
Subject: [PATCH] Added tag handling

---
 app/models/services/tumblr.rb | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/app/models/services/tumblr.rb b/app/models/services/tumblr.rb
index c45ce3b1ef..4d0669728a 100644
--- a/app/models/services/tumblr.rb
+++ b/app/models/services/tumblr.rb
@@ -8,11 +8,14 @@ module Services
       "tumblr"
     end
 
-    def post(post, url="")
+    def post(post, url="") # rubocop:disable Metrics/AbcSize
+      return true if post.nil? # return if post is deleted while waiting in queue
+
       body = build_tumblr_post(post, url)
       user_info = JSON.parse(client.get("/v2/user/info").body)
       blogs = user_info["response"]["user"]["blogs"]
       primaryblog = blogs.find {|blog| blog["primary"] } || blogs[0]
+
       tumblr_ids = {}
 
       blogurl = URI.parse(primaryblog["url"])
@@ -35,13 +38,13 @@ module Services
     end
 
     def build_tumblr_post(post, url)
-      {type: "text", format: "markdown", body: tumblr_template(post, url)}
+      {type: "text", format: "markdown", body: tumblr_template(post, url), tags: tags(post), native_inline_images: true}
     end
 
     private
 
     def client
-      @consumer ||= OAuth::Consumer.new(consumer_key, consumer_secret, site: "http://api.tumblr.com")
+      @consumer ||= OAuth::Consumer.new(consumer_key, consumer_secret, site: "https://api.tumblr.com")
       @client ||= OAuth::AccessToken.new(@consumer, access_token, access_secret)
     end
 
@@ -51,13 +54,17 @@ module Services
       "#{photo_html}#{post.message.html(mentioned_people: [])}\n\n[original post](#{url})"
     end
 
+    def tags(post)
+      post.tags.pluck(:name).join(",").to_s
+    end
+
     def delete_from_tumblr(blog_name, service_post_id)
       client.post("/v2/blog/#{blog_name}/post/delete", "id" => service_post_id)
     end
 
     def request_to_external_blog(blogurl, body)
       resp = client.post("/v2/blog/#{blogurl.host}/post", body)
-      JSON.parse(resp.body)["response"]["id"] if resp.code == "201"
+      JSON.parse(resp.body)["response"]["id"] if resp.code == 201
     end
 
     def consumer_key
-- 
GitLab