diff options
Diffstat (limited to 'client.rb')
-rw-r--r-- | client.rb | 45 |
1 files changed, 31 insertions, 14 deletions
@@ -2,11 +2,19 @@ post "/outbox" do protected! request.body.rewind # in case someone already read it - body = request.body.read + #body = request.body.read date = Time.now.strftime("%Y-%m-%dT%H:%M:%S") # TODO hashtags, replys outbox_path = File.join("public/outbox", date + ".json") object_path = File.join("public/objects", date + ".json") + + #recipients = ["https://www.w3.org/ns/activitystreams#Public", params[:to]] + recipients = [params[:to]] + #recipients += Dir[File.join("public/followers", "*.json")].collect { |f| JSON.parse(File.read(f))["actor"] } + recipients.delete ACTOR + recipients.uniq! + + p params create = { "@context" => "https://www.w3.org/ns/activitystreams", "id" => File.join(SOCIAL_URL, outbox_path), @@ -16,31 +24,34 @@ post "/outbox" do "id" => File.join(SOCIAL_URL, object_path), "type" => "Note", "attributedTo" => ACTOR, + "inReplyTo" => params[:inReplyTo], "published" => date, - "content" => "", - "to" => ["https://www.w3.org/ns/activitystreams#Public"] + "content" => params[:content], + "to" => recipients }, "published" => date, - "to" => ["https://www.w3.org/ns/activitystreams#Public"] + "to" => recipients } - recipients = [] +=begin if /^@/.match body mentions, body = body.split("\n", 2) mentions.split(/, */).each do |m| recipients << actor(m.chomp) end end - create["object"]["content"] = body.lines.select { |l| !l.empty? }.join("<br>") - recipients += Dir[File.join("public/followers", "*.json")].collect { |f| JSON.parse(File.read(f))["actor"] } - recipients.delete ACTOR - recipients.uniq! - create["object"]["to"] += recipients - create["to"] += recipients +=end + #create["object"]["content"] = body#.lines.select { |l| !l.empty? }.join("<br>") + #create["object"]["to"] += recipients + #create["to"] += recipients + #p params["to"] + p create File.open(outbox_path, "w+") { |f| f.puts create.to_json } File.open(object_path, "w+") { |f| f.puts create["object"].to_json } - recipients.each { |r| send_signed create, r } + #p recipients + create["to"].each { |r| send_signed create, r } + redirect to(params['redirect']) end post "/archive" do @@ -65,8 +76,6 @@ post "/follow/*" do protected! mention = params['splat'][0] actor = actor(mention) - p mention - p actor follow = { "@context" => "https://www.w3.org/ns/activitystreams", "id" => File.join(SOCIAL_URL, "following", mention + ".json"), "type" => "Follow", @@ -115,3 +124,11 @@ end erb :index end end + +helpers do + + def protected! + redirect("/login.html") unless session['client'] + end + +end |