about summary refs log tree commit diff
path: root/app/lib/proof_provider/keybase/config_serializer.rb
blob: fbce7aeee8c65147c437f775b989d026b3fa4ce5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# frozen_string_literal: true

class ProofProvider::Keybase::ConfigSerializer < ActiveModel::Serializer
  include RoutingHelper
  include ActionView::Helpers::TextHelper

  attributes :version, :domain, :display_name, :username,
             :brand_color, :logo, :description, :prefill_url,
             :profile_url, :check_url, :check_path, :avatar_path,
             :contact

  def version
    1
  end

  def domain
    ProofProvider::Keybase::DOMAIN
  end

  def display_name
    Setting.site_title
  end

  def logo
    {
      svg_black: full_asset_url(asset_pack_path('media/images/logo_transparent_black.svg')),
      svg_white: full_asset_url(asset_pack_path('media/images/logo_transparent_white.svg')),
      svg_full: full_asset_url(asset_pack_path('media/images/logo.svg')),
      svg_full_darkmode: full_asset_url(asset_pack_path('media/images/logo.svg')),
    }
  end

  def brand_color
    '#282c37'
  end

  def description
    strip_tags(Setting.site_short_description.presence || I18n.t('about.about_mastodon_html'))
  end

  def username
    { min: 1, max: 30, re: '[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?' }
  end

  def prefill_url
    params = {
      provider: 'keybase',
      token: '%{sig_hash}',
      provider_username: '%{kb_username}',
      username: '%{username}',
      user_agent: '%{kb_ua}',
    }

    CGI.unescape(new_settings_identity_proof_url(params))
  end

  def profile_url
    CGI.unescape(short_account_url('%{username}')) # rubocop:disable Style/FormatStringToken
  end

  def check_url
    CGI.unescape(api_proofs_url(username: '%{username}', provider: 'keybase'))
  end

  def check_path
    ['signatures']
  end

  def avatar_path
    ['avatar']
  end

  def contact
    [Setting.site_contact_email.presence || 'unknown'].compact
  end
end