From 65d6191147ebfe2b51780a403a711d50311fcd8b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 23 Nov 2016 10:46:48 +0100 Subject: [PATCH] Adding sensitive marker to statuses in API --- app/controllers/api/v1/statuses_controller.rb | 2 +- app/services/post_status_service.rb | 10 ++++++---- app/views/api/v1/statuses/_show.rabl | 2 +- .../20161123093447_add_sensitive_to_statuses.rb | 5 +++++ db/schema.rb | 11 ++++++----- 5 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 db/migrate/20161123093447_add_sensitive_to_statuses.rb diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index b2b432a6b1..2e0399301d 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -50,7 +50,7 @@ class Api::V1::StatusesController < ApiController end def create - @status = PostStatusService.new.call(current_user.account, params[:status], params[:in_reply_to_id].blank? ? nil : Status.find(params[:in_reply_to_id]), params[:media_ids]) + @status = PostStatusService.new.call(current_user.account, params[:status], params[:in_reply_to_id].blank? ? nil : Status.find(params[:in_reply_to_id]), media_ids: params[:media_ids], sensitive: params[:sensitive]) render action: :show end diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index cf824ff992..76366e984d 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -5,11 +5,13 @@ class PostStatusService < BaseService # @param [Account] account Account from which to post # @param [String] text Message # @param [Status] in_reply_to Optional status to reply to - # @param [Enumerable] media_ids Optional array of media IDs to attach + # @param [Hash] options + # @option [Boolean] :sensitive + # @option [Enumerable] :media_ids Optional array of media IDs to attach # @return [Status] - def call(account, text, in_reply_to = nil, media_ids = nil) - status = account.statuses.create!(text: text, thread: in_reply_to) - attach_media(status, media_ids) + def call(account, text, in_reply_to = nil, options = {}) + status = account.statuses.create!(text: text, thread: in_reply_to, sensitive: options[:sensitive]) + attach_media(status, options[:media_ids]) process_mentions_service.call(status) process_hashtags_service.call(status) DistributionWorker.perform_async(status.id) diff --git a/app/views/api/v1/statuses/_show.rabl b/app/views/api/v1/statuses/_show.rabl index 90457eca93..579c47b26d 100644 --- a/app/views/api/v1/statuses/_show.rabl +++ b/app/views/api/v1/statuses/_show.rabl @@ -1,4 +1,4 @@ -attributes :id, :created_at, :in_reply_to_id +attributes :id, :created_at, :in_reply_to_id, :sensitive node(:uri) { |status| TagManager.instance.uri_for(status) } node(:content) { |status| Formatter.instance.format(status) } diff --git a/db/migrate/20161123093447_add_sensitive_to_statuses.rb b/db/migrate/20161123093447_add_sensitive_to_statuses.rb new file mode 100644 index 0000000000..109f761ed7 --- /dev/null +++ b/db/migrate/20161123093447_add_sensitive_to_statuses.rb @@ -0,0 +1,5 @@ +class AddSensitiveToStatuses < ActiveRecord::Migration[5.0] + def change + add_column :statuses, :sensitive, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 42e4e081c3..356badf8e6 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161122163057) do +ActiveRecord::Schema.define(version: 20161123093447) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -155,13 +155,14 @@ ActiveRecord::Schema.define(version: 20161122163057) do create_table "statuses", force: :cascade do |t| t.string "uri" - t.integer "account_id", null: false - t.text "text", default: "", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.integer "account_id", null: false + t.text "text", default: "", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.integer "in_reply_to_id" t.integer "reblog_of_id" t.string "url" + t.boolean "sensitive", default: false t.index ["account_id"], name: "index_statuses_on_account_id", using: :btree t.index ["in_reply_to_id"], name: "index_statuses_on_in_reply_to_id", using: :btree t.index ["reblog_of_id"], name: "index_statuses_on_reblog_of_id", using: :btree