From 5d8398c8b8b51ee7363e7d45acc560f489783e34 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 2 Jun 2020 19:24:53 +0200 Subject: Add E2EE API (#13820) --- app/serializers/rest/encrypted_message_serializer.rb | 18 ++++++++++++++++++ app/serializers/rest/keys/claim_result_serializer.rb | 9 +++++++++ app/serializers/rest/keys/device_serializer.rb | 6 ++++++ app/serializers/rest/keys/query_result_serializer.rb | 11 +++++++++++ 4 files changed, 44 insertions(+) create mode 100644 app/serializers/rest/encrypted_message_serializer.rb create mode 100644 app/serializers/rest/keys/claim_result_serializer.rb create mode 100644 app/serializers/rest/keys/device_serializer.rb create mode 100644 app/serializers/rest/keys/query_result_serializer.rb (limited to 'app/serializers/rest') diff --git a/app/serializers/rest/encrypted_message_serializer.rb b/app/serializers/rest/encrypted_message_serializer.rb new file mode 100644 index 000000000..61ebc74fa --- /dev/null +++ b/app/serializers/rest/encrypted_message_serializer.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class REST::EncryptedMessageSerializer < ActiveModel::Serializer + attributes :id, :account_id, :device_id, + :type, :body, :digest, :message_franking + + def id + object.id.to_s + end + + def account_id + object.from_account_id.to_s + end + + def device_id + object.from_device_id + end +end diff --git a/app/serializers/rest/keys/claim_result_serializer.rb b/app/serializers/rest/keys/claim_result_serializer.rb new file mode 100644 index 000000000..145044f55 --- /dev/null +++ b/app/serializers/rest/keys/claim_result_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::Keys::ClaimResultSerializer < ActiveModel::Serializer + attributes :account_id, :device_id, :key_id, :key, :signature + + def account_id + object.account.id.to_s + end +end diff --git a/app/serializers/rest/keys/device_serializer.rb b/app/serializers/rest/keys/device_serializer.rb new file mode 100644 index 000000000..f9b821b79 --- /dev/null +++ b/app/serializers/rest/keys/device_serializer.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +class REST::Keys::DeviceSerializer < ActiveModel::Serializer + attributes :device_id, :name, :identity_key, + :fingerprint_key +end diff --git a/app/serializers/rest/keys/query_result_serializer.rb b/app/serializers/rest/keys/query_result_serializer.rb new file mode 100644 index 000000000..8f8bdde28 --- /dev/null +++ b/app/serializers/rest/keys/query_result_serializer.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class REST::Keys::QueryResultSerializer < ActiveModel::Serializer + attributes :account_id + + has_many :devices, serializer: REST::Keys::DeviceSerializer + + def account_id + object.account.id.to_s + end +end -- cgit From f669b8bcceb5043e468b3319c0bb7e834e3892d4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 3 Jun 2020 20:32:15 +0200 Subject: Fix wrong route helper in encrypted messages controller (#13952) And add `created_at` to encrypted message serializer --- app/controllers/api/v1/crypto/encrypted_messages_controller.rb | 4 ++-- app/serializers/rest/encrypted_message_serializer.rb | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'app/serializers/rest') diff --git a/app/controllers/api/v1/crypto/encrypted_messages_controller.rb b/app/controllers/api/v1/crypto/encrypted_messages_controller.rb index a67b03eb4..c764915e5 100644 --- a/app/controllers/api/v1/crypto/encrypted_messages_controller.rb +++ b/app/controllers/api/v1/crypto/encrypted_messages_controller.rb @@ -34,11 +34,11 @@ class Api::V1::Crypto::EncryptedMessagesController < Api::BaseController end def next_path - api_v1_encrypted_messages_url pagination_params(max_id: pagination_max_id) if records_continue? + api_v1_crypto_encrypted_messages_url pagination_params(max_id: pagination_max_id) if records_continue? end def prev_path - api_v1_encrypted_messages_url pagination_params(min_id: pagination_since_id) unless @encrypted_messages.empty? + api_v1_crypto_encrypted_messages_url pagination_params(min_id: pagination_since_id) unless @encrypted_messages.empty? end def pagination_max_id diff --git a/app/serializers/rest/encrypted_message_serializer.rb b/app/serializers/rest/encrypted_message_serializer.rb index 61ebc74fa..80c26d060 100644 --- a/app/serializers/rest/encrypted_message_serializer.rb +++ b/app/serializers/rest/encrypted_message_serializer.rb @@ -2,7 +2,8 @@ class REST::EncryptedMessageSerializer < ActiveModel::Serializer attributes :id, :account_id, :device_id, - :type, :body, :digest, :message_franking + :type, :body, :digest, :message_franking, + :created_at def id object.id.to_s -- cgit From 346d9b3d2eb2021b89333f1c54e8876d9a16ee24 Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 5 Jun 2020 23:10:41 +0200 Subject: Add blurhash to preview cards (#13984) Fixes #13001 --- app/models/preview_card.rb | 9 ++++++++- app/serializers/rest/preview_card_serializer.rb | 2 +- db/migrate/20200605155027_add_blurhash_to_preview_cards.rb | 5 +++++ db/schema.rb | 4 ++-- lib/paperclip/blurhash_transcoder.rb | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20200605155027_add_blurhash_to_preview_cards.rb (limited to 'app/serializers/rest') diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index 2802f4667..235928260 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -23,19 +23,25 @@ # updated_at :datetime not null # embed_url :string default(""), not null # image_storage_schema_version :integer +# blurhash :string # class PreviewCard < ApplicationRecord IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze LIMIT = 1.megabytes + BLURHASH_OPTIONS = { + x_comp: 4, + y_comp: 4, + }.freeze + self.inheritance_column = false enum type: [:link, :photo, :video, :rich] has_and_belongs_to_many :statuses - has_attached_file :image, styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' } + has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' } include Attachmentable @@ -72,6 +78,7 @@ class PreviewCard < ApplicationRecord geometry: '400x400>', file_geometry_parser: FastGeometryParser, convert_options: '-coalesce -strip', + blurhash: BLURHASH_OPTIONS, }, } diff --git a/app/serializers/rest/preview_card_serializer.rb b/app/serializers/rest/preview_card_serializer.rb index 2df9d07a7..66ff47d22 100644 --- a/app/serializers/rest/preview_card_serializer.rb +++ b/app/serializers/rest/preview_card_serializer.rb @@ -6,7 +6,7 @@ class REST::PreviewCardSerializer < ActiveModel::Serializer attributes :url, :title, :description, :type, :author_name, :author_url, :provider_name, :provider_url, :html, :width, :height, - :image, :embed_url + :image, :embed_url, :blurhash def image object.image? ? full_asset_url(object.image.url(:original)) : nil diff --git a/db/migrate/20200605155027_add_blurhash_to_preview_cards.rb b/db/migrate/20200605155027_add_blurhash_to_preview_cards.rb new file mode 100644 index 000000000..dc4b7a984 --- /dev/null +++ b/db/migrate/20200605155027_add_blurhash_to_preview_cards.rb @@ -0,0 +1,5 @@ +class AddBlurhashToPreviewCards < ActiveRecord::Migration[5.2] + def change + add_column :preview_cards, :blurhash, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index e220e13fe..beda93c01 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,8 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_06_01_222558) do - +ActiveRecord::Schema.define(version: 2020_06_05_155027) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -648,6 +647,7 @@ ActiveRecord::Schema.define(version: 2020_06_01_222558) do t.datetime "updated_at", null: false t.string "embed_url", default: "", null: false t.integer "image_storage_schema_version" + t.string "blurhash" t.index ["url"], name: "index_preview_cards_on_url", unique: true end diff --git a/lib/paperclip/blurhash_transcoder.rb b/lib/paperclip/blurhash_transcoder.rb index 5c33c98b0..1c3a6df02 100644 --- a/lib/paperclip/blurhash_transcoder.rb +++ b/lib/paperclip/blurhash_transcoder.rb @@ -3,7 +3,7 @@ module Paperclip class BlurhashTranscoder < Paperclip::Processor def make - return @file unless options[:style] == :small + return @file unless options[:style] == :small || options[:blurhash] pixels = convert(':source RGB:-', source: File.expand_path(@file.path)).unpack('C*') geometry = options.fetch(:file_geometry_parser).from_file(@file) -- cgit