diff options
author | Roger Braun <roger@rogerbraun.net> | 2017-04-20 10:16:06 +0200 |
---|---|---|
committer | Roger Braun <roger@rogerbraun.net> | 2017-04-20 10:16:06 +0200 |
commit | cc330421fd789f002d14e19692c4fbe75c0df4f2 (patch) | |
tree | fe926f688664f1a6b29388577883a89955eed5e9 /lib | |
parent | d23f3e3cf3c9a0051532493c60dbd9a7557bae81 (diff) | |
download | pleroma-cc330421fd789f002d14e19692c4fbe75c0df4f2.tar.gz |
Better activities in ostatus.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/ostatus/activity_representer.ex | 20 | ||||
-rw-r--r-- | lib/pleroma/web/ostatus/feed_representer.ex | 10 | ||||
-rw-r--r-- | lib/pleroma/web/ostatus/ostatus_controller.ex | 4 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 5 | ||||
-rw-r--r-- | lib/pleroma/web/websub/websub_server_subscription.ex | 11 |
5 files changed, 44 insertions, 6 deletions
diff --git a/lib/pleroma/web/ostatus/activity_representer.ex b/lib/pleroma/web/ostatus/activity_representer.ex new file mode 100644 index 000000000..558c85df4 --- /dev/null +++ b/lib/pleroma/web/ostatus/activity_representer.ex @@ -0,0 +1,20 @@ +defmodule Pleroma.Web.OStatus.ActivityRepresenter do + def to_simple_form(activity, user) do + h = fn(str) -> [to_charlist(str)] end + + updated_at = activity.updated_at + |> NaiveDateTime.to_iso8601 + inserted_at = activity.inserted_at + |> NaiveDateTime.to_iso8601 + + [ + {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/note']}, + {:"activity:verb", ['http://activitystrea.ms/schema/1.0/post']}, + {:id, h.(activity.data["id"])}, + {:title, ['New note by #{user.nickname}']}, + {:content, [type: 'html'], h.(activity.data["object"]["content"])}, + {:published, h.(inserted_at)}, + {:updated, h.(updated_at)} + ] + end +end diff --git a/lib/pleroma/web/ostatus/feed_representer.ex b/lib/pleroma/web/ostatus/feed_representer.ex index cb76022fe..def684405 100644 --- a/lib/pleroma/web/ostatus/feed_representer.ex +++ b/lib/pleroma/web/ostatus/feed_representer.ex @@ -1,6 +1,6 @@ defmodule Pleroma.Web.OStatus.FeedRepresenter do alias Pleroma.Web.OStatus - alias Pleroma.Web.OStatus.UserRepresenter + alias Pleroma.Web.OStatus.{UserRepresenter, ActivityRepresenter} def to_simple_form(user, activities, users) do most_recent_update = List.first(activities).updated_at @@ -8,7 +8,10 @@ defmodule Pleroma.Web.OStatus.FeedRepresenter do h = fn(str) -> [to_charlist(str)] end - entries = [] + entries = Enum.map(activities, fn(activity) -> + {:entry, ActivityRepresenter.to_simple_form(activity, user)} + end) + [{ :feed, [ xmlns: 'http://www.w3.org/2005/Atom', @@ -17,10 +20,9 @@ defmodule Pleroma.Web.OStatus.FeedRepresenter do {:id, h.(OStatus.feed_path(user))}, {:title, ['#{user.nickname}\'s timeline']}, {:updated, h.(most_recent_update)}, - {:entries, []}, {:link, [rel: 'hub', href: h.(OStatus.pubsub_path)], []}, {:author, UserRepresenter.to_simple_form(user)} - ] + ] ++ entries }] end end diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index ff6d7301a..4db4a55e6 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -23,4 +23,8 @@ defmodule Pleroma.Web.OStatus.OStatusController do |> put_resp_content_type("application/atom+xml") |> send_resp(200, response) end + + def temp(conn, params) do + IO.inspect(params) + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index cc1f0e165..e6d000881 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -58,10 +58,11 @@ defmodule Pleroma.Web.Router do plug :accepts, ["xml", "atom"] end - scope "/users", Pleroma.Web do + scope "/", Pleroma.Web do pipe_through :ostatus - get "/:nickname/feed", OStatus.OStatusController, :feed + get "/users/:nickname/feed", OStatus.OStatusController, :feed + post "/push/hub", OStatus.OStatusController, :temp end scope "/.well-known", Pleroma.Web do diff --git a/lib/pleroma/web/websub/websub_server_subscription.ex b/lib/pleroma/web/websub/websub_server_subscription.ex new file mode 100644 index 000000000..2562239ad --- /dev/null +++ b/lib/pleroma/web/websub/websub_server_subscription.ex @@ -0,0 +1,11 @@ +defmodule Pleroma.Web.Websub.WebsubServerSubscription do + use Ecto.Schema + + schema "websub_server_subscriptions" do + field :topic, :string + field :callback, :string + field :secret, :string + field :valid_until, :naive_datetime + field :state, :string + end +end |