Made some progress
This commit is contained in:
parent
9c4856bdb1
commit
709c6685a9
61 changed files with 570 additions and 37 deletions
14
app/controllers/atom_controller.rb
Normal file
14
app/controllers/atom_controller.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
class AtomController < ApplicationController
|
||||
before_filter :set_format
|
||||
|
||||
def user_stream
|
||||
@account = Account.find_by!(id: params[:id], domain: nil)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_format
|
||||
request.format = 'xml'
|
||||
response.headers['Content-Type'] = 'application/atom+xml'
|
||||
end
|
||||
end
|
4
app/controllers/home_controller.rb
Normal file
4
app/controllers/home_controller.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class HomeController < ApplicationController
|
||||
def index
|
||||
end
|
||||
end
|
4
app/controllers/profile_controller.rb
Normal file
4
app/controllers/profile_controller.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class ProfileController < ApplicationController
|
||||
def show
|
||||
end
|
||||
end
|
39
app/controllers/xrd_controller.rb
Normal file
39
app/controllers/xrd_controller.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
class XrdController < ApplicationController
|
||||
before_filter :set_format
|
||||
|
||||
def host_meta
|
||||
@webfinger_template = "#{webfinger_url}?resource={uri}"
|
||||
end
|
||||
|
||||
def webfinger
|
||||
@account = Account.find_by!(username: username_from_resource, domain: nil)
|
||||
@canonical_account_uri = "acct:#{@account.username}#{LOCAL_DOMAIN}"
|
||||
@magic_key = pem_to_magic_key(@account.keypair.public_key)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_format
|
||||
request.format = 'xml'
|
||||
response.headers['Content-Type'] = 'application/xrd+xml'
|
||||
end
|
||||
|
||||
def username_from_resource
|
||||
params[:resource].split('@').first.gsub('acct:', '')
|
||||
end
|
||||
|
||||
def pem_to_magic_key(public_key)
|
||||
modulus, exponent = [public_key.n, public_key.e].map do |component|
|
||||
result = ""
|
||||
|
||||
until component == 0 do
|
||||
result << [component % 256].pack('C')
|
||||
component >>= 8
|
||||
end
|
||||
|
||||
result.reverse!
|
||||
end
|
||||
|
||||
(["RSA"] + [modulus, exponent].map { |n| Base64.urlsafe_encode64(n) }).join('.')
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue