72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # 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_full: 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
 |