diff options
Diffstat (limited to 'activitypub.rb')
-rw-r--r-- | activitypub.rb | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/activitypub.rb b/activitypub.rb index ab42c4f..a67c9ba 100644 --- a/activitypub.rb +++ b/activitypub.rb @@ -29,7 +29,7 @@ set :session_secret, File.read(".secret").chomp set :default_content_type, 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' set :port, 9292 -before "/inbox" do +before "/" do if request.request_method == "POST" halt 400 unless verify_signature(request.env) end @@ -123,7 +123,7 @@ end post "/delete/*" do protected! FileUtils.rm params['splat'][0] - redirect to("/inbox") + redirect to("/") end post "/follow/*" do @@ -138,7 +138,7 @@ post "/follow/*" do "object" => actor } send_signed follow, actor File.open(following_path, "w+") { |f| f.puts follow.to_json } - redirect to("/inbox") + redirect to("/") end post "/unfollow/*" do @@ -154,27 +154,40 @@ post "/unfollow/*" do "object" => JSON.parse(File.read(following_path)) } send_signed undo, actor FileUtils.rm following_path - redirect to("/inbox") + redirect to("/") end end post "/login" do session["client"] = true if params["secret"] == File.read(".pwd").chomp - redirect to("/inbox") + redirect to("/") end get "/.well-known/webfinger" do if request["resource"] == "acct:#{ACCOUNT}" - send_file "./webfinger", :type => "application/jrd+json" + send_file "./public/webfinger", :type => "application/jrd+json" else halt 404 end end -get "/inbox", :provides => 'html' do +get "/", :provides => 'html' do protected! - @inbox = Dir['./inbox/*'].sort - erb :inbox + @inbox = Dir['./inbox/*'].sort.collect do |file| + item = JSON.parse(File.read(file)) + mention = mention(item['attributedTo']) + following_path = File.join('public', 'following', mention + '.json') + File.exists?(following_path) ? follow = 'unfollow' : follow = 'follow' + { :file => file, + :actor_url => item['attributedTo'], + :mention => mention, + :follow => follow, + :content => item['content'], + :attachment => item['attachment'] + } + end + p @inbox + erb :index end ["/outbox","/following","/followers"].each do |path| |