Merge branch 'develop' into dtluna/pleroma-feature/unfollow-activity

This commit is contained in:
Roger Braun 2017-05-07 19:28:23 +02:00
commit b403ea4d2b
91 changed files with 7808 additions and 328 deletions

138
.credo.exs Normal file
View File

@ -0,0 +1,138 @@
# This file contains the configuration for Credo and you are probably reading
# this after creating it with `mix credo.gen.config`.
#
# If you find anything wrong or unclear in this file, please report an
# issue on GitHub: https://github.com/rrrene/credo/issues
#
%{
#
# You can have as many configs as you like in the `configs:` field.
configs: [
%{
#
# Run any config using `mix credo -C <name>`. If no config name is given
# "default" is used.
name: "default",
#
# These are the files included in the analysis:
files: %{
#
# You can give explicit globs or simply directories.
# In the latter case `**/*.{ex,exs}` will be used.
included: ["lib/", "src/", "web/", "apps/"],
excluded: [~r"/_build/", ~r"/deps/"]
},
#
# If you create your own checks, you must specify the source files for
# them here, so they can be loaded by Credo before running the analysis.
requires: [],
#
# Credo automatically checks for updates, like e.g. Hex does.
# You can disable this behaviour below:
check_for_updates: true,
#
# If you want to enforce a style guide and need a more traditional linting
# experience, you can change `strict` to `true` below:
strict: false,
#
# If you want to use uncolored output by default, you can change `color`
# to `false` below:
color: true,
#
# You can customize the parameters of any check by adding a second element
# to the tuple.
#
# To disable a check put `false` as second element:
#
# {Credo.Check.Design.DuplicatedCode, false}
#
checks: [
{Credo.Check.Consistency.ExceptionNames},
{Credo.Check.Consistency.LineEndings},
{Credo.Check.Consistency.MultiAliasImportRequireUse},
{Credo.Check.Consistency.ParameterPatternMatching},
{Credo.Check.Consistency.SpaceAroundOperators},
{Credo.Check.Consistency.SpaceInParentheses},
{Credo.Check.Consistency.TabsOrSpaces},
# For some checks, like AliasUsage, you can only customize the priority
# Priority values are: `low, normal, high, higher`
{Credo.Check.Design.AliasUsage, priority: :low},
# For others you can set parameters
# If you don't want the `setup` and `test` macro calls in ExUnit tests
# or the `schema` macro in Ecto schemas to trigger DuplicatedCode, just
# set the `excluded_macros` parameter to `[:schema, :setup, :test]`.
{Credo.Check.Design.DuplicatedCode, excluded_macros: []},
# You can also customize the exit_status of each check.
# If you don't want TODO comments to cause `mix credo` to fail, just
# set this value to 0 (zero).
{Credo.Check.Design.TagTODO, exit_status: 2},
{Credo.Check.Design.TagFIXME},
{Credo.Check.Readability.FunctionNames},
{Credo.Check.Readability.LargeNumbers},
{Credo.Check.Readability.MaxLineLength, priority: :low, max_length: 100},
{Credo.Check.Readability.ModuleAttributeNames},
{Credo.Check.Readability.ModuleDoc, false},
{Credo.Check.Readability.ModuleNames},
{Credo.Check.Readability.ParenthesesOnZeroArityDefs},
{Credo.Check.Readability.ParenthesesInCondition},
{Credo.Check.Readability.PredicateFunctionNames},
{Credo.Check.Readability.PreferImplicitTry},
{Credo.Check.Readability.RedundantBlankLines},
{Credo.Check.Readability.StringSigils},
{Credo.Check.Readability.TrailingBlankLine},
{Credo.Check.Readability.TrailingWhiteSpace},
{Credo.Check.Readability.VariableNames},
{Credo.Check.Readability.Semicolons},
{Credo.Check.Readability.SpaceAfterCommas},
{Credo.Check.Refactor.DoubleBooleanNegation},
{Credo.Check.Refactor.CondStatements},
{Credo.Check.Refactor.CyclomaticComplexity},
{Credo.Check.Refactor.FunctionArity},
{Credo.Check.Refactor.MatchInCondition},
{Credo.Check.Refactor.NegatedConditionsInUnless},
{Credo.Check.Refactor.NegatedConditionsWithElse},
{Credo.Check.Refactor.Nesting},
{Credo.Check.Refactor.PipeChainStart},
{Credo.Check.Refactor.UnlessWithElse},
{Credo.Check.Warning.BoolOperationOnSameValues},
{Credo.Check.Warning.IExPry},
{Credo.Check.Warning.IoInspect},
{Credo.Check.Warning.LazyLogging},
{Credo.Check.Warning.OperationOnSameValues},
{Credo.Check.Warning.OperationWithConstantResult},
{Credo.Check.Warning.UnusedEnumOperation},
{Credo.Check.Warning.UnusedFileOperation},
{Credo.Check.Warning.UnusedKeywordOperation},
{Credo.Check.Warning.UnusedListOperation},
{Credo.Check.Warning.UnusedPathOperation},
{Credo.Check.Warning.UnusedRegexOperation},
{Credo.Check.Warning.UnusedStringOperation},
{Credo.Check.Warning.UnusedTupleOperation},
# Controversial and experimental checks (opt-in, just remove `, false`)
#
{Credo.Check.Refactor.ABCSize, false},
{Credo.Check.Refactor.AppendSingleItem, false},
{Credo.Check.Refactor.VariableRebinding, false},
{Credo.Check.Warning.MapGetUnsafePass, false},
# Deprecated checks (these will be deleted after a grace period)
{Credo.Check.Readability.Specs, false},
{Credo.Check.Warning.NameRedeclarationByAssignment, false},
{Credo.Check.Warning.NameRedeclarationByCase, false},
{Credo.Check.Warning.NameRedeclarationByDef, false},
{Credo.Check.Warning.NameRedeclarationByFn, false},
# Custom checks can be created using `mix credo.gen.check`.
#
]
}
]
}

View File

@ -1,5 +1,9 @@
- Add cache for user fetching / representing. (mostly in TwitterAPI.activity_to_status)
Unliking: Unliking:
- Add a proper undo activity, find out how to ignore those in twitter api. - Add a proper undo activity, find out how to ignore those in twitter api.
WEBSUB:
- Add unsubscription
- Add periodical renewal

View File

@ -30,7 +30,9 @@
"application/xrd+xml" => ["xrd+xml"] "application/xrd+xml" => ["xrd+xml"]
} }
config :pleroma, :websub_verifier, Pleroma.Web.Websub config :pleroma, :websub, Pleroma.Web.Websub
config :pleroma, :ostatus, Pleroma.Web.OStatus
config :pleroma, :httpoison, HTTPoison
# Import environment specific config. This must remain at the bottom # Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above. # of this file so it overrides the configuration defined above.

View File

@ -25,4 +25,6 @@
# Reduce hash rounds for testing # Reduce hash rounds for testing
config :comeonin, :pbkdf2_rounds, 1 config :comeonin, :pbkdf2_rounds, 1
config :pleroma, :websub_verifier, Pleroma.Web.WebsubMock config :pleroma, :websub, Pleroma.Web.WebsubMock
config :pleroma, :ostatus, Pleroma.Web.OStatusMock
config :pleroma, :httpoison, HTTPoisonMock

View File

@ -5,6 +5,7 @@ defmodule Pleroma.Activity do
schema "activities" do schema "activities" do
field :data, :map field :data, :map
field :local, :boolean, default: true
timestamps() timestamps()
end end
@ -18,4 +19,9 @@ def all_by_object_ap_id(ap_id) do
Repo.all(from activity in Activity, Repo.all(from activity in Activity,
where: fragment("? @> ?", activity.data, ^%{object: %{id: ap_id}})) where: fragment("? @> ?", activity.data, ^%{object: %{id: ap_id}}))
end end
def get_create_activity_by_object_ap_id(ap_id) do
Repo.one(from activity in Activity,
where: fragment("? @> ?", activity.data, ^%{type: "Create", object: %{id: ap_id}}))
end
end end

View File

@ -15,10 +15,11 @@ def start(_type, _args) do
# Start your own worker by calling: Pleroma.Worker.start_link(arg1, arg2, arg3) # Start your own worker by calling: Pleroma.Worker.start_link(arg1, arg2, arg3)
# worker(Pleroma.Worker, [arg1, arg2, arg3]), # worker(Pleroma.Worker, [arg1, arg2, arg3]),
worker(Cachex, [:user_cache, [ worker(Cachex, [:user_cache, [
default_ttl: 5000, default_ttl: 25000,
ttl_interval: 1000, ttl_interval: 1000,
limit: 500 limit: 2500
]]) ]]),
worker(Pleroma.Web.Federator, [])
] ]
# See http://elixir-lang.org/docs/stable/elixir/Supervisor.html # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html

View File

@ -13,4 +13,24 @@ def get_by_ap_id(ap_id) do
Repo.one(from object in Object, Repo.one(from object in Object,
where: fragment("? @> ?", object.data, ^%{id: ap_id})) where: fragment("? @> ?", object.data, ^%{id: ap_id}))
end end
def get_cached_by_ap_id(ap_id) do
if Mix.env == :test do
get_by_ap_id(ap_id)
else
key = "object:#{ap_id}"
Cachex.get!(:user_cache, key, fallback: fn(_) ->
object = get_by_ap_id(ap_id)
if object do
{:commit, object}
else
{:ignore, object}
end
end)
end
end
def context_mapping(context) do
%Object{data: %{"id" => context}}
end
end end

View File

@ -1,4 +1,5 @@
defmodule Pleroma.Plugs.AuthenticationPlug do defmodule Pleroma.Plugs.AuthenticationPlug do
alias Comeonin.Pbkdf2
import Plug.Conn import Plug.Conn
def init(options) do def init(options) do
@ -25,12 +26,12 @@ defp verify(%{id: id} = user, _password, id) do
end end
defp verify(nil, _password, _user_id) do defp verify(nil, _password, _user_id) do
Comeonin.Pbkdf2.dummy_checkpw Pbkdf2.dummy_checkpw
:error :error
end end
defp verify(user, password, _user_id) do defp verify(user, password, _user_id) do
if Comeonin.Pbkdf2.checkpw(password, user.password_hash) do if Pbkdf2.checkpw(password, user.password_hash) do
{:ok, user} {:ok, user}
else else
:error :error
@ -42,7 +43,7 @@ defp decode_header(conn) do
{:ok, userinfo} <- Base.decode64(header), {:ok, userinfo} <- Base.decode64(header),
[username, password] <- String.split(userinfo, ":") [username, password] <- String.split(userinfo, ":")
do do
{ :ok, username, password } {:ok, username, password}
end end
end end

View File

@ -1,6 +1,8 @@
defmodule Pleroma.Upload do defmodule Pleroma.Upload do
alias Ecto.UUID
alias Pleroma.Web
def store(%Plug.Upload{} = file) do def store(%Plug.Upload{} = file) do
uuid = Ecto.UUID.generate uuid = UUID.generate
upload_folder = Path.join(upload_path(), uuid) upload_folder = Path.join(upload_path(), uuid)
File.mkdir_p!(upload_folder) File.mkdir_p!(upload_folder)
result_file = Path.join(upload_folder, file.filename) result_file = Path.join(upload_folder, file.filename)
@ -21,7 +23,7 @@ def store(%Plug.Upload{} = file) do
def store(%{"img" => "data:image/" <> image_data}) do def store(%{"img" => "data:image/" <> image_data}) do
parsed = Regex.named_captures(~r/(?<filetype>jpeg|png|gif);base64,(?<data>.*)/, image_data) parsed = Regex.named_captures(~r/(?<filetype>jpeg|png|gif);base64,(?<data>.*)/, image_data)
data = Base.decode64!(parsed["data"]) data = Base.decode64!(parsed["data"])
uuid = Ecto.UUID.generate uuid = UUID.generate
upload_folder = Path.join(upload_path(), uuid) upload_folder = Path.join(upload_path(), uuid)
File.mkdir_p!(upload_folder) File.mkdir_p!(upload_folder)
filename = Base.encode16(:crypto.hash(:sha256, data)) <> ".#{parsed["filetype"]}" filename = Base.encode16(:crypto.hash(:sha256, data)) <> ".#{parsed["filetype"]}"
@ -44,11 +46,11 @@ def store(%{"img" => "data:image/" <> image_data}) do
end end
defp upload_path do defp upload_path do
Application.get_env(:pleroma, Pleroma.Upload) settings = Application.get_env(:pleroma, Pleroma.Upload)
|> Keyword.fetch!(:uploads) Keyword.fetch!(settings, :uploads)
end end
defp url_for(file) do defp url_for(file) do
"#{Pleroma.Web.base_url()}/media/#{file}" "#{Web.base_url()}/media/#{file}"
end end
end end

View File

@ -1,8 +1,10 @@
defmodule Pleroma.User do defmodule Pleroma.User do
use Ecto.Schema use Ecto.Schema
import Ecto.Changeset
import Ecto.Query import Ecto.{Changeset, Query}
alias Pleroma.{Repo, User, Object} alias Pleroma.{Repo, User, Object, Web}
alias Comeonin.Pbkdf2
alias Pleroma.Web.{OStatus, Websub}
alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.ActivityPub
schema "users" do schema "users" do
@ -13,9 +15,11 @@ defmodule Pleroma.User do
field :password_hash, :string field :password_hash, :string
field :password, :string, virtual: true field :password, :string, virtual: true
field :password_confirmation, :string, virtual: true field :password_confirmation, :string, virtual: true
field :following, { :array, :string }, default: [] field :following, {:array, :string}, default: []
field :ap_id, :string field :ap_id, :string
field :avatar, :map field :avatar, :map
field :local, :boolean, default: true
field :info, :map, default: %{}
timestamps() timestamps()
end end
@ -28,7 +32,7 @@ def avatar_url(user) do
end end
def ap_id(%User{nickname: nickname}) do def ap_id(%User{nickname: nickname}) do
"#{Pleroma.Web.base_url}/users/#{nickname}" "#{Web.base_url}/users/#{nickname}"
end end
def ap_followers(%User{} = user) do def ap_followers(%User{} = user) do
@ -67,7 +71,7 @@ def register_changeset(struct, params \\ %{}) do
|> validate_format(:nickname, ~r/^[a-zA-Z\d]+$/) |> validate_format(:nickname, ~r/^[a-zA-Z\d]+$/)
if changeset.valid? do if changeset.valid? do
hashed = Comeonin.Pbkdf2.hashpwsalt(changeset.changes[:password]) hashed = Pbkdf2.hashpwsalt(changeset.changes[:password])
ap_id = User.ap_id(%User{nickname: changeset.changes[:nickname]}) ap_id = User.ap_id(%User{nickname: changeset.changes[:nickname]})
followers = User.ap_followers(%User{nickname: changeset.changes[:nickname]}) followers = User.ap_followers(%User{nickname: changeset.changes[:nickname]})
changeset changeset
@ -82,9 +86,13 @@ def register_changeset(struct, params \\ %{}) do
def follow(%User{} = follower, %User{} = followed) do def follow(%User{} = follower, %User{} = followed) do
ap_followers = User.ap_followers(followed) ap_followers = User.ap_followers(followed)
if following?(follower, followed) do if following?(follower, followed) do
{ :error, {:error,
"Could not follow user: #{followed.nickname} is already on your list." } "Could not follow user: #{followed.nickname} is already on your list."}
else else
if !followed.local do
Websub.subscribe(follower, followed)
end
following = [ap_followers | follower.following] following = [ap_followers | follower.following]
|> Enum.uniq |> Enum.uniq
@ -105,7 +113,7 @@ def unfollow(%User{} = follower, %User{} = followed) do
|> Repo.update |> Repo.update
{ :ok, follower, ActivityPub.fetch_latest_follow(follower, followed)} { :ok, follower, ActivityPub.fetch_latest_follow(follower, followed)}
else else
{ :error, "Not subscribed!" } {:error, "Not subscribed!"}
end end
end end
@ -120,6 +128,27 @@ def get_cached_by_ap_id(ap_id) do
def get_cached_by_nickname(nickname) do def get_cached_by_nickname(nickname) do
key = "nickname:#{nickname}" key = "nickname:#{nickname}"
Cachex.get!(:user_cache, key, fallback: fn(_) -> Repo.get_by(User, nickname: nickname) end) Cachex.get!(:user_cache, key, fallback: fn(_) -> get_or_fetch_by_nickname(nickname) end)
end
def get_by_nickname(nickname) do
Repo.get_by(User, nickname: nickname)
end
def get_cached_user_info(user) do
key = "user_info:#{user.id}"
Cachex.get!(:user_cache, key, fallback: fn(_) -> user_info(user) end)
end
def get_or_fetch_by_nickname(nickname) do
with %User{} = user <- get_by_nickname(nickname) do
user
else _e ->
with [nick, domain] <- String.split(nickname, "@"),
{:ok, user} <- OStatus.make_user(nickname) do
user
else _e -> nil
end
end
end end
end end

View File

@ -1,9 +1,9 @@
defmodule Pleroma.Web.ActivityPub.ActivityPub do defmodule Pleroma.Web.ActivityPub.ActivityPub do
alias Pleroma.Repo alias Pleroma.{Activity, Repo, Object, Upload, User, Web}
alias Pleroma.{Activity, Object, Upload, User} alias Ecto.{Changeset, UUID}
import Ecto.Query import Ecto.Query
def insert(map) when is_map(map) do def insert(map, local \\ true) when is_map(map) do
map = map map = map
|> Map.put_new_lazy("id", &generate_activity_id/0) |> Map.put_new_lazy("id", &generate_activity_id/0)
|> Map.put_new_lazy("published", &make_date/0) |> Map.put_new_lazy("published", &make_date/0)
@ -16,10 +16,32 @@ def insert(map) when is_map(map) do
map map
end end
Repo.insert(%Activity{data: map}) Repo.insert(%Activity{data: map, local: local})
end end
def like(%User{ap_id: ap_id} = user, %Object{data: %{ "id" => id}} = object) do def create(to, actor, context, object, additional \\ %{}, published \\ nil, local \\ true) do
published = published || make_date()
activity = %{
"type" => "Create",
"to" => to |> Enum.uniq,
"actor" => actor.ap_id,
"object" => object,
"published" => published,
"context" => context
}
|> Map.merge(additional)
with {:ok, activity} <- insert(activity, local) do
if actor.local do
Pleroma.Web.Federator.enqueue(:publish, activity)
end
{:ok, activity}
end
end
def like(%User{ap_id: ap_id} = user, %Object{data: %{"id" => id}} = object, local \\ true) do
cond do cond do
# There's already a like here, so return the original activity. # There's already a like here, so return the original activity.
ap_id in (object.data["likes"] || []) -> ap_id in (object.data["likes"] || []) ->
@ -33,10 +55,11 @@ def like(%User{ap_id: ap_id} = user, %Object{data: %{ "id" => id}} = object) do
"type" => "Like", "type" => "Like",
"actor" => ap_id, "actor" => ap_id,
"object" => id, "object" => id,
"to" => [User.ap_followers(user), object.data["actor"]] "to" => [User.ap_followers(user), object.data["actor"]],
"context" => object.data["context"]
} }
{:ok, activity} = insert(data) {:ok, activity} = insert(data, local)
likes = [ap_id | (object.data["likes"] || [])] |> Enum.uniq likes = [ap_id | (object.data["likes"] || [])] |> Enum.uniq
@ -44,11 +67,15 @@ def like(%User{ap_id: ap_id} = user, %Object{data: %{ "id" => id}} = object) do
|> Map.put("like_count", length(likes)) |> Map.put("like_count", length(likes))
|> Map.put("likes", likes) |> Map.put("likes", likes)
changeset = Ecto.Changeset.change(object, data: new_data) changeset = Changeset.change(object, data: new_data)
{:ok, object} = Repo.update(changeset) {:ok, object} = Repo.update(changeset)
update_object_in_activities(object) update_object_in_activities(object)
if user.local do
Pleroma.Web.Federator.enqueue(:publish, activity)
end
{:ok, activity, object} {:ok, activity, object}
end end
end end
@ -58,7 +85,7 @@ defp update_object_in_activities(%{data: %{"id" => id}} = object) do
relevant_activities = Activity.all_by_object_ap_id(id) relevant_activities = Activity.all_by_object_ap_id(id)
Enum.map(relevant_activities, fn (activity) -> Enum.map(relevant_activities, fn (activity) ->
new_activity_data = activity.data |> Map.put("object", object.data) new_activity_data = activity.data |> Map.put("object", object.data)
changeset = Ecto.Changeset.change(activity, data: new_activity_data) changeset = Changeset.change(activity, data: new_activity_data)
Repo.update(changeset) Repo.update(changeset)
end) end)
end end
@ -79,7 +106,7 @@ def unlike(%User{ap_id: ap_id}, %Object{data: %{ "id" => id}} = object) do
|> Map.put("like_count", length(likes)) |> Map.put("like_count", length(likes))
|> Map.put("likes", likes) |> Map.put("likes", likes)
changeset = Ecto.Changeset.change(object, data: new_data) changeset = Changeset.change(object, data: new_data)
{:ok, object} = Repo.update(changeset) {:ok, object} = Repo.update(changeset)
update_object_in_activities(object) update_object_in_activities(object)
@ -99,11 +126,11 @@ def generate_context_id do
end end
def generate_object_id do def generate_object_id do
generate_id("objects") Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :object, Ecto.UUID.generate)
end end
def generate_id(type) do def generate_id(type) do
"#{Pleroma.Web.base_url()}/#{type}/#{Ecto.UUID.generate}" "#{Web.base_url()}/#{type}/#{UUID.generate}"
end end
def fetch_public_activities(opts \\ %{}) do def fetch_public_activities(opts \\ %{}) do
@ -127,6 +154,12 @@ def fetch_activities(recipients, opts \\ %{}) do
query = from activity in query, query = from activity in query,
where: activity.id > ^since_id where: activity.id > ^since_id
query = if opts["local_only"] do
from activity in query, where: activity.local == true
else
query
end
query = if opts["max_id"] do query = if opts["max_id"] do
from activity in query, where: activity.id < ^opts["max_id"] from activity in query, where: activity.id < ^opts["max_id"]
else else
@ -140,19 +173,19 @@ def fetch_activities(recipients, opts \\ %{}) do
query query
end end
Repo.all(query) Enum.reverse(Repo.all(query))
|> Enum.reverse
end end
def announce(%User{ap_id: ap_id} = user, %Object{data: %{"id" => id}} = object) do def announce(%User{ap_id: ap_id} = user, %Object{data: %{"id" => id}} = object, local \\ true) do
data = %{ data = %{
"type" => "Announce", "type" => "Announce",
"actor" => ap_id, "actor" => ap_id,
"object" => id, "object" => id,
"to" => [User.ap_followers(user), object.data["actor"]] "to" => [User.ap_followers(user), object.data["actor"]],
"context" => object.data["context"]
} }
{:ok, activity} = insert(data) {:ok, activity} = insert(data, local)
announcements = [ap_id | (object.data["announcements"] || [])] |> Enum.uniq announcements = [ap_id | (object.data["announcements"] || [])] |> Enum.uniq
@ -160,14 +193,56 @@ def announce(%User{ap_id: ap_id} = user, %Object{data: %{"id" => id}} = object)
|> Map.put("announcement_count", length(announcements)) |> Map.put("announcement_count", length(announcements))
|> Map.put("announcements", announcements) |> Map.put("announcements", announcements)
changeset = Ecto.Changeset.change(object, data: new_data) changeset = Changeset.change(object, data: new_data)
{:ok, object} = Repo.update(changeset) {:ok, object} = Repo.update(changeset)
update_object_in_activities(object) update_object_in_activities(object)
if user.local do
Pleroma.Web.Federator.enqueue(:publish, activity)
end
{:ok, activity, object} {:ok, activity, object}
end end
def follow(%User{ap_id: follower_id, local: actor_local}, %User{ap_id: followed_id}, local \\ true) do
data = %{
"type" => "Follow",
"actor" => follower_id,
"to" => [followed_id],
"object" => followed_id,
"published" => make_date()
}
with {:ok, activity} <- insert(data, local) do
if actor_local do
Pleroma.Web.Federator.enqueue(:publish, activity)
end
{:ok, activity}
end
end
def unfollow(follower, followed, local \\ true) do
with follow_activity when not is_nil(follow_activity) <- fetch_latest_follow(follower, followed) do
data = %{
"type" => "Undo",
"actor" => follower.ap_id,
"to" => [followed.ap_id],
"object" => follow_activity.data["id"],
"published" => make_date()
}
with {:ok, activity} <- insert(data, local) do
if follower.local do
Pleroma.Web.Federator.enqueue(:publish, activity)
end
{:ok, activity}
end
end
end
def fetch_activities_for_context(context) do def fetch_activities_for_context(context) do
query = from activity in Activity, query = from activity in Activity,
where: fragment("? @> ?", activity.data, ^%{ context: context }) where: fragment("? @> ?", activity.data, ^%{ context: context })

View File

@ -0,0 +1,77 @@
defmodule Pleroma.Web.Federator do
use GenServer
alias Pleroma.User
alias Pleroma.Web.WebFinger
require Logger
@websub Application.get_env(:pleroma, :websub)
@ostatus Application.get_env(:pleroma, :ostatus)
@max_jobs 10
def start_link do
GenServer.start_link(__MODULE__, {:sets.new(), :queue.new()}, name: __MODULE__)
end
def handle(:publish, activity) do
Logger.debug(fn -> "Running publish for #{activity.data["id"]}" end)
with actor when not is_nil(actor) <- User.get_cached_by_ap_id(activity.data["actor"]) do
Logger.debug(fn -> "Sending #{activity.data["id"]} out via websub" end)
Pleroma.Web.Websub.publish(Pleroma.Web.OStatus.feed_path(actor), actor, activity)
{:ok, actor} = WebFinger.ensure_keys_present(actor)
Logger.debug(fn -> "Sending #{activity.data["id"]} out via salmon" end)
Pleroma.Web.Salmon.publish(actor, activity)
end
end
def handle(:verify_websub, websub) do
Logger.debug(fn -> "Running websub verification for #{websub.id} (#{websub.topic}, #{websub.callback})" end)
@websub.verify(websub)
end
def handle(:incoming_doc, doc) do
Logger.debug("Got document, trying to parse")
@ostatus.handle_incoming(doc)
end
def handle(type, payload) do
Logger.debug(fn -> "Unknown task: #{type}" end)
{:error, "Don't know what do do with this"}
end
def enqueue(type, payload) do
if Mix.env == :test do
handle(type, payload)
else
GenServer.cast(__MODULE__, {:enqueue, type, payload})
end
end
def maybe_start_job(running_jobs, queue) do
if (:sets.size(running_jobs) < @max_jobs) && !:queue.is_empty(queue) do
{{:value, {type, payload}}, queue} = :queue.out(queue)
{:ok, pid} = Task.start(fn -> handle(type, payload) end)
mref = Process.monitor(pid)
{:sets.add_element(mref, running_jobs), queue}
else
{running_jobs, queue}
end
end
def handle_cast({:enqueue, type, payload}, {running_jobs, queue}) do
queue = :queue.in({type, payload}, queue)
{running_jobs, queue} = maybe_start_job(running_jobs, queue)
{:noreply, {running_jobs, queue}}
end
def handle_info({:DOWN, ref, :process, _pid, _reason}, {running_jobs, queue}) do
running_jobs = :sets.del_element(ref, running_jobs)
{running_jobs, queue} = maybe_start_job(running_jobs, queue)
{:noreply, {running_jobs, queue}}
end
def handle_cast(m, state) do
IO.inspect("Unknown: #{inspect(m)}, #{inspect(state)}")
{:noreply, state}
end
end

View File

@ -1,5 +1,31 @@
defmodule Pleroma.Web.OStatus.ActivityRepresenter do defmodule Pleroma.Web.OStatus.ActivityRepresenter do
def to_simple_form(%{data: %{"object" => %{"type" => "Note"}}} = activity, user) do alias Pleroma.{Activity, User}
alias Pleroma.Web.OStatus.UserRepresenter
require Logger
defp get_in_reply_to(%{"object" => %{"inReplyTo" => in_reply_to}}) do
[{:"thr:in-reply-to", [ref: to_charlist(in_reply_to)], []}]
end
defp get_in_reply_to(_), do: []
defp get_mentions(to) do
Enum.map(to, fn (id) ->
cond do
# Special handling for the AP/Ostatus public collections
"https://www.w3.org/ns/activitystreams#Public" == id ->
{:link, [rel: "mentioned", "ostatus:object-type": "http://activitystrea.ms/schema/1.0/collection", href: "http://activityschema.org/collection/public"], []}
# Ostatus doesn't handle follower collections, ignore these.
Regex.match?(~r/^#{Pleroma.Web.base_url}.+followers$/, id) ->
[]
true ->
{:link, [rel: "mentioned", "ostatus:object-type": "http://activitystrea.ms/schema/1.0/person", href: id], []}
end
end)
end
def to_simple_form(activity, user, with_author \\ false)
def to_simple_form(%{data: %{"object" => %{"type" => "Note"}}} = activity, user, with_author) do
h = fn(str) -> [to_charlist(str)] end h = fn(str) -> [to_charlist(str)] end
updated_at = activity.updated_at updated_at = activity.updated_at
@ -12,16 +38,155 @@ def to_simple_form(%{data: %{"object" => %{"type" => "Note"}}} = activity, user)
{:link, [rel: 'enclosure', href: to_charlist(url["href"]), type: to_charlist(url["mediaType"])], []} {:link, [rel: 'enclosure', href: to_charlist(url["href"]), type: to_charlist(url["mediaType"])], []}
end) end)
in_reply_to = get_in_reply_to(activity.data)
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
mentions = activity.data["to"] |> get_mentions
[ [
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/note']}, {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/note']},
{:"activity:verb", ['http://activitystrea.ms/schema/1.0/post']}, {:"activity:verb", ['http://activitystrea.ms/schema/1.0/post']},
{:id, h.(activity.data["object"]["id"])}, {:id, h.(activity.data["object"]["id"])}, # For notes, federate the object id.
{:title, ['New note by #{user.nickname}']}, {:title, ['New note by #{user.nickname}']},
{:content, [type: 'html'], h.(activity.data["object"]["content"])}, {:content, [type: 'html'], h.(activity.data["object"]["content"])},
{:published, h.(inserted_at)}, {:published, h.(inserted_at)},
{:updated, h.(updated_at)} {:updated, h.(updated_at)},
] ++ attachments {:"ostatus:conversation", [], h.(activity.data["context"])},
{:link, [href: h.(activity.data["context"]), rel: 'ostatus:conversation'], []},
{:link, [type: ['application/atom+xml'], href: h.(activity.data["object"]["id"]), rel: 'self'], []}
] ++ attachments ++ in_reply_to ++ author ++ mentions
end end
def to_simple_form(_,_), do: nil def to_simple_form(%{data: %{"type" => "Like"}} = activity, user, with_author) do
h = fn(str) -> [to_charlist(str)] end
updated_at = activity.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = activity.inserted_at
|> NaiveDateTime.to_iso8601
in_reply_to = get_in_reply_to(activity.data)
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
mentions = activity.data["to"] |> get_mentions
[
{:"activity:verb", ['http://activitystrea.ms/schema/1.0/favorite']},
{:id, h.(activity.data["id"])},
{:title, ['New favorite by #{user.nickname}']},
{:content, [type: 'html'], ['#{user.nickname} favorited something']},
{:published, h.(inserted_at)},
{:updated, h.(updated_at)},
{:"activity:object", [
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/note']},
{:id, h.(activity.data["object"])}, # For notes, federate the object id.
]},
{:"ostatus:conversation", [], h.(activity.data["context"])},
{:link, [href: h.(activity.data["context"]), rel: 'ostatus:conversation'], []},
{:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []},
{:"thr:in-reply-to", [ref: to_charlist(activity.data["object"])], []}
] ++ author ++ mentions
end
def to_simple_form(%{data: %{"type" => "Announce"}} = activity, user, with_author) do
h = fn(str) -> [to_charlist(str)] end
updated_at = activity.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = activity.inserted_at
|> NaiveDateTime.to_iso8601
in_reply_to = get_in_reply_to(activity.data)
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
retweeted_activity = Activity.get_create_activity_by_object_ap_id(activity.data["object"])
retweeted_user = User.get_cached_by_ap_id(retweeted_activity.data["actor"])
retweeted_xml = to_simple_form(retweeted_activity, retweeted_user, true)
mentions = activity.data["to"] |> get_mentions
[
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
{:"activity:verb", ['http://activitystrea.ms/schema/1.0/share']},
{:id, h.(activity.data["id"])},
{:title, ['#{user.nickname} repeated a notice']},
{:content, [type: 'html'], ['RT #{retweeted_activity.data["object"]["content"]}']},
{:published, h.(inserted_at)},
{:updated, h.(updated_at)},
{:"ostatus:conversation", [], h.(activity.data["context"])},
{:link, [href: h.(activity.data["context"]), rel: 'ostatus:conversation'], []},
{:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []},
{:"activity:object", retweeted_xml}
] ++ mentions ++ author
end
def to_simple_form(%{data: %{"type" => "Follow"}} = activity, user, with_author) do
h = fn(str) -> [to_charlist(str)] end
updated_at = activity.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = activity.inserted_at
|> NaiveDateTime.to_iso8601
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
mentions = (activity.data["to"] || []) |> get_mentions
[
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
{:"activity:verb", ['http://activitystrea.ms/schema/1.0/follow']},
{:id, h.(activity.data["id"])},
{:title, ['#{user.nickname} started following #{activity.data["object"]}']},
{:content, [type: 'html'], ['#{user.nickname} started following #{activity.data["object"]}']},
{:published, h.(inserted_at)},
{:updated, h.(updated_at)},
{:"activity:object", [
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/person']},
{:id, h.(activity.data["object"])},
{:uri, h.(activity.data["object"])},
]},
{:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []},
] ++ mentions ++ author
end
# Only undos of follow for now. Will need to get redone once there are more
def to_simple_form(%{data: %{"type" => "Undo"}} = activity, user, with_author) do
h = fn(str) -> [to_charlist(str)] end
updated_at = activity.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = activity.inserted_at
|> NaiveDateTime.to_iso8601
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
follow_activity = Activity.get_by_ap_id(activity.data["object"])
mentions = (activity.data["to"] || []) |> get_mentions
[
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
{:"activity:verb", ['http://activitystrea.ms/schema/1.0/unfollow']},
{:id, h.(activity.data["id"])},
{:title, ['#{user.nickname} stopped following #{follow_activity.data["object"]}']},
{:content, [type: 'html'], ['#{user.nickname} stopped following #{follow_activity.data["object"]}']},
{:published, h.(inserted_at)},
{:updated, h.(updated_at)},
{:"activity:object", [
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/person']},
{:id, h.(follow_activity.data["object"])},
{:uri, h.(follow_activity.data["object"])},
]},
{:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []},
] ++ mentions ++ author
end
def wrap_with_entry(simple_form) do
[{
:entry, [
xmlns: 'http://www.w3.org/2005/Atom',
"xmlns:thr": 'http://purl.org/syndication/thread/1.0',
"xmlns:activity": 'http://activitystrea.ms/spec/1.0/',
"xmlns:poco": 'http://portablecontacts.net/spec/1.0',
"xmlns:ostatus": 'http://ostatus.org/schema/1.0'
], simple_form
}]
end
def to_simple_form(_, _, _), do: nil
end end

View File

@ -8,7 +8,8 @@ def to_simple_form(user, activities, users) do
h = fn(str) -> [to_charlist(str)] end h = fn(str) -> [to_charlist(str)] end
entries = Enum.map(activities, fn(activity) -> entries = activities
|> Enum.map(fn(activity) ->
{:entry, ActivityRepresenter.to_simple_form(activity, user)} {:entry, ActivityRepresenter.to_simple_form(activity, user)}
end) end)
|> Enum.filter(fn ({_, form}) -> form end) |> Enum.filter(fn ({_, form}) -> form end)
@ -16,14 +17,17 @@ def to_simple_form(user, activities, users) do
[{ [{
:feed, [ :feed, [
xmlns: 'http://www.w3.org/2005/Atom', xmlns: 'http://www.w3.org/2005/Atom',
"xmlns:thr": 'http://purl.org/syndication/thread/1.0',
"xmlns:activity": 'http://activitystrea.ms/spec/1.0/', "xmlns:activity": 'http://activitystrea.ms/spec/1.0/',
"xmlns:poco": 'http://portablecontacts.net/spec/1.0' "xmlns:poco": 'http://portablecontacts.net/spec/1.0',
"xmlns:ostatus": 'http://ostatus.org/schema/1.0'
], [ ], [
{:id, h.(OStatus.feed_path(user))}, {:id, h.(OStatus.feed_path(user))},
{:title, ['#{user.nickname}\'s timeline']}, {:title, ['#{user.nickname}\'s timeline']},
{:updated, h.(most_recent_update)}, {:updated, h.(most_recent_update)},
{:link, [rel: 'hub', href: h.(OStatus.pubsub_path(user))], []}, {:link, [rel: 'hub', href: h.(OStatus.pubsub_path(user))], []},
{:link, [rel: 'self', href: h.(OStatus.feed_path(user))], []}, {:link, [rel: 'salmon', href: h.(OStatus.salmon_path(user))], []},
{:link, [rel: 'self', href: h.(OStatus.feed_path(user)), type: 'application/atom+xml'], []},
{:author, UserRepresenter.to_simple_form(user)}, {:author, UserRepresenter.to_simple_form(user)},
] ++ entries ] ++ entries
}] }]

View File

@ -1,5 +1,13 @@
defmodule Pleroma.Web.OStatus do defmodule Pleroma.Web.OStatus do
alias Pleroma.Web @httpoison Application.get_env(:pleroma, :httpoison)
import Ecto.Query
import Pleroma.Web.XML
require Logger
alias Pleroma.{Repo, User, Web, Object, Activity}
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.{WebFinger, Websub}
def feed_path(user) do def feed_path(user) do
"#{user.ap_id}/feed.atom" "#{user.ap_id}/feed.atom"
@ -9,6 +17,268 @@ def pubsub_path(user) do
"#{Web.base_url}/push/hub/#{user.nickname}" "#{Web.base_url}/push/hub/#{user.nickname}"
end end
def user_path(user) do def salmon_path(user) do
"#{user.ap_id}/salmon"
end
def handle_incoming(xml_string) do
doc = parse_document(xml_string)
entries = :xmerl_xpath.string('//entry', doc)
activities = Enum.map(entries, fn (entry) ->
{:xmlObj, :string, object_type} = :xmerl_xpath.string('string(/entry/activity:object-type[1])', entry)
{:xmlObj, :string, verb} = :xmerl_xpath.string('string(/entry/activity:verb[1])', entry)
case verb do
'http://activitystrea.ms/schema/1.0/share' ->
with {:ok, activity, retweeted_activity} <- handle_share(entry, doc), do: [activity, retweeted_activity]
'http://activitystrea.ms/schema/1.0/favorite' ->
with {:ok, activity, favorited_activity} <- handle_favorite(entry, doc), do: [activity, favorited_activity]
_ ->
case object_type do
'http://activitystrea.ms/schema/1.0/note' ->
with {:ok, activity} <- handle_note(entry, doc), do: activity
'http://activitystrea.ms/schema/1.0/comment' ->
with {:ok, activity} <- handle_note(entry, doc), do: activity
_ ->
Logger.error("Couldn't parse incoming document")
nil
end
end
end)
{:ok, activities}
end
def make_share(_entry, doc, retweeted_activity) do
with {:ok, actor} <- find_make_or_update_user(doc),
%Object{} = object <- Object.get_cached_by_ap_id(retweeted_activity.data["object"]["id"]),
{:ok, activity, _object} = ActivityPub.announce(actor, object, false) do
{:ok, activity}
end
end
def handle_share(entry, doc) do
with [object] <- :xmerl_xpath.string('/entry/activity:object', entry),
{:ok, retweeted_activity} <- handle_note(object, object),
{:ok, activity} <- make_share(entry, doc, retweeted_activity) do
{:ok, activity, retweeted_activity}
else
e -> {:error, e}
end
end
def make_favorite(_entry, doc, favorited_activity) do
with {:ok, actor} <- find_make_or_update_user(doc),
%Object{} = object <- Object.get_cached_by_ap_id(favorited_activity.data["object"]["id"]),
{:ok, activity, _object} = ActivityPub.like(actor, object, false) do
{:ok, activity}
end
end
def get_or_try_fetching(entry) do
with id when not is_nil(id) <- string_from_xpath("//activity:object[1]/id", entry),
%Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id) do
{:ok, activity}
else _e ->
with href when not is_nil(href) <- string_from_xpath("//activity:object[1]/link[@type=\"text/html\"]/@href", entry),
{:ok, [favorited_activity]} <- fetch_activity_from_html_url(href) do
{:ok, favorited_activity}
end
end
end
def handle_favorite(entry, doc) do
with {:ok, favorited_activity} <- get_or_try_fetching(entry),
{:ok, activity} <- make_favorite(entry, doc, favorited_activity) do
{:ok, activity, favorited_activity}
else
e -> {:error, e}
end
end
def get_attachments(entry) do
:xmerl_xpath.string('/entry/link[@rel="enclosure"]', entry)
|> Enum.map(fn (enclosure) ->
with href when not is_nil(href) <- string_from_xpath("/link/@href", enclosure),
type when not is_nil(type) <- string_from_xpath("/link/@type", enclosure) do
%{
"type" => "Attachment",
"url" => [%{
"type" => "Link",
"mediaType" => type,
"href" => href
}]
}
end
end)
|> Enum.filter(&(&1))
end
def handle_note(entry, doc \\ nil) do
content_html = string_from_xpath("//content[1]", entry)
[author] = :xmerl_xpath.string('//author[1]', doc)
{:ok, actor} = find_make_or_update_user(author)
inReplyTo = string_from_xpath("//thr:in-reply-to[1]/@ref", entry)
if !Object.get_cached_by_ap_id(inReplyTo) do
inReplyToHref = string_from_xpath("//thr:in-reply-to[1]/@href", entry)
if inReplyToHref do
fetch_activity_from_html_url(inReplyToHref)
end
end
context = (string_from_xpath("//ostatus:conversation[1]", entry) || "") |> String.trim
attachments = get_attachments(entry)
context = with %{data: %{"context" => context}} <- Object.get_cached_by_ap_id(inReplyTo) do
context
else _e ->
if String.length(context) > 0 do
context
else
ActivityPub.generate_context_id
end
end
to = [
"https://www.w3.org/ns/activitystreams#Public",
User.ap_followers(actor)
]
mentions = :xmerl_xpath.string('//link[@rel="mentioned" and @ostatus:object-type="http://activitystrea.ms/schema/1.0/person"]', entry)
|> Enum.map(fn(person) -> string_from_xpath("@href", person) end)
to = to ++ mentions
date = string_from_xpath("//published", entry)
id = string_from_xpath("//id", entry)
object = %{
"id" => id,
"type" => "Note",
"to" => to,
"content" => content_html,
"published" => date,
"context" => context,
"actor" => actor.ap_id,
"attachment" => attachments
}
object = if inReplyTo do
Map.put(object, "inReplyTo", inReplyTo)
else
object
end
# TODO: Bail out sooner and use transaction.
if Object.get_by_ap_id(id) do
{:error, "duplicate activity"}
else
ActivityPub.create(to, actor, context, object, %{}, date, false)
end
end
def find_make_or_update_user(doc) do
uri = string_from_xpath("//author/uri[1]", doc)
with {:ok, user} <- find_or_make_user(uri) do
avatar = make_avatar_object(doc)
if !user.local && user.avatar != avatar do
change = Ecto.Changeset.change(user, %{avatar: avatar})
Repo.update(change)
else
{:ok, user}
end
end
end
def find_or_make_user(uri) do
query = from user in User,
where: user.ap_id == ^uri
user = Repo.one(query)
if is_nil(user) do
make_user(uri)
else
{:ok, user}
end
end
def make_user(uri) do
with {:ok, info} <- gather_user_info(uri) do
data = %{
local: false,
name: info["name"],
nickname: info["nickname"] <> "@" <> info["host"],
ap_id: info["uri"],
info: info,
avatar: info["avatar"]
}
# TODO: Make remote user changeset
# SHould enforce fqn nickname
Repo.insert(Ecto.Changeset.change(%User{}, data))
end
end
# TODO: Just takes the first one for now.
def make_avatar_object(author_doc) do
href = string_from_xpath("//author[1]/link[@rel=\"avatar\"]/@href", author_doc)
type = string_from_xpath("//author[1]/link[@rel=\"avatar\"]/@type", author_doc)
if href do
%{
"type" => "Image",
"url" =>
[%{
"type" => "Link",
"mediaType" => type,
"href" => href
}]
}
else
nil
end
end
def gather_user_info(username) do
with {:ok, webfinger_data} <- WebFinger.finger(username),
{:ok, feed_data} <- Websub.gather_feed_data(webfinger_data["topic"]) do
{:ok, Map.merge(webfinger_data, feed_data) |> Map.put("fqn", username)}
else e ->
Logger.debug(fn -> "Couldn't gather info for #{username}" end)
{:error, e}
end
end
# Regex-based 'parsing' so we don't have to pull in a full html parser
# It's a hack anyway. Maybe revisit this in the future
@mastodon_regex ~r/<link href='(.*)' rel='alternate' type='application\/atom\+xml'>/
@gs_regex ~r/<link title=.* href="(.*)" type="application\/atom\+xml" rel="alternate">/
@gs_classic_regex ~r/<link rel="alternate" href="(.*)" type="application\/atom\+xml" title=.*>/
def get_atom_url(body) do
cond do
Regex.match?(@mastodon_regex, body) ->
[[_, match]] = Regex.scan(@mastodon_regex, body)
{:ok, match}
Regex.match?(@gs_regex, body) ->
[[_, match]] = Regex.scan(@gs_regex, body)
{:ok, match}
Regex.match?(@gs_classic_regex, body) ->
[[_, match]] = Regex.scan(@gs_classic_regex, body)
{:ok, match}
true ->
Logger.debug(fn -> "Couldn't find atom link in #{inspect(body)}" end)
{:error, "Couldn't find the atom link"}
end
end
def fetch_activity_from_html_url(url) do
with {:ok, %{body: body}} <- @httpoison.get(url, [], follow_redirect: true),
{:ok, atom_url} <- get_atom_url(body),
{:ok, %{status_code: code, body: body}} when code in 200..299 <- @httpoison.get(atom_url, [], follow_redirect: true) do
handle_incoming(body)
end
end end
end end

View File

@ -2,10 +2,16 @@ defmodule Pleroma.Web.OStatus.OStatusController do
use Pleroma.Web, :controller use Pleroma.Web, :controller
alias Pleroma.{User, Activity} alias Pleroma.{User, Activity}
alias Pleroma.Web.OStatus.FeedRepresenter alias Pleroma.Web.OStatus.{FeedRepresenter, ActivityRepresenter}
alias Pleroma.Repo alias Pleroma.Repo
alias Pleroma.Web.{OStatus, Federator}
import Ecto.Query import Ecto.Query
def feed_redirect(conn, %{"nickname" => nickname}) do
user = User.get_cached_by_nickname(nickname)
redirect conn, external: OStatus.feed_path(user)
end
def feed(conn, %{"nickname" => nickname}) do def feed(conn, %{"nickname" => nickname}) do
user = User.get_cached_by_nickname(nickname) user = User.get_cached_by_nickname(nickname)
query = from activity in Activity, query = from activity in Activity,
@ -16,7 +22,8 @@ def feed(conn, %{"nickname" => nickname}) do
activities = query activities = query
|> Repo.all |> Repo.all
response = FeedRepresenter.to_simple_form(user, activities, [user]) response = user
|> FeedRepresenter.to_simple_form(activities, [user])
|> :xmerl.export_simple(:xmerl_xml) |> :xmerl.export_simple(:xmerl_xml)
|> to_string |> to_string
@ -25,7 +32,30 @@ def feed(conn, %{"nickname" => nickname}) do
|> send_resp(200, response) |> send_resp(200, response)
end end
def temp(conn, params) do def salmon_incoming(conn, params) do
IO.inspect(params) {:ok, body, _conn} = read_body(conn)
{:ok, magic_key} = Pleroma.Web.Salmon.fetch_magic_key(body)
{:ok, doc} = Pleroma.Web.Salmon.decode_and_validate(magic_key, body)
Federator.enqueue(:incoming_doc, doc)
conn
|> send_resp(200, "")
end
def object(conn, %{"uuid" => uuid}) do
id = o_status_url(conn, :object, uuid)
activity = Activity.get_create_activity_by_object_ap_id(id)
user = User.get_cached_by_ap_id(activity.data["actor"])
response = activity
|> ActivityRepresenter.to_simple_form(user, true)
|> ActivityRepresenter.wrap_with_entry
|> :xmerl.export_simple(:xmerl_xml)
|> to_string
conn
|> put_resp_content_type("application/atom+xml")
|> send_resp(200, response)
end end
end end

View File

@ -7,14 +7,14 @@ def to_simple_form(user) do
bio = to_charlist(user.bio) bio = to_charlist(user.bio)
avatar_url = to_charlist(User.avatar_url(user)) avatar_url = to_charlist(User.avatar_url(user))
[ [
{ :id, [ap_id] }, {:id, [ap_id]},
{ :"activity:object", ['http://activitystrea.ms/schema/1.0/person'] }, {:"activity:object", ['http://activitystrea.ms/schema/1.0/person']},
{ :uri, [ap_id] }, {:uri, [ap_id]},
{ :"poco:preferredUsername", [nickname] }, {:"poco:preferredUsername", [nickname]},
{ :"poco:displayName", [name] }, {:"poco:displayName", [name]},
{ :"poco:note", [bio] }, {:"poco:note", [bio]},
{ :name, [nickname] }, {:name, [nickname]},
{ :link, [rel: 'avatar', href: avatar_url], []} {:link, [rel: 'avatar', href: avatar_url], []}
] ]
end end
end end

View File

@ -1,7 +1,7 @@
defmodule Pleroma.Web.Router do defmodule Pleroma.Web.Router do
use Pleroma.Web, :router use Pleroma.Web, :router
alias Pleroma.{Repo, User} alias Pleroma.{Repo, User, Web.Router}
def user_fetcher(username) do def user_fetcher(username) do
{:ok, Repo.get_by(User, %{nickname: username})} {:ok, Repo.get_by(User, %{nickname: username})}
@ -10,13 +10,13 @@ def user_fetcher(username) do
pipeline :api do pipeline :api do
plug :accepts, ["json"] plug :accepts, ["json"]
plug :fetch_session plug :fetch_session
plug Pleroma.Plugs.AuthenticationPlug, %{fetcher: &Pleroma.Web.Router.user_fetcher/1, optional: true} plug Pleroma.Plugs.AuthenticationPlug, %{fetcher: &Router.user_fetcher/1, optional: true}
end end
pipeline :authenticated_api do pipeline :authenticated_api do
plug :accepts, ["json"] plug :accepts, ["json"]
plug :fetch_session plug :fetch_session
plug Pleroma.Plugs.AuthenticationPlug, %{fetcher: &Pleroma.Web.Router.user_fetcher/1} plug Pleroma.Plugs.AuthenticationPlug, %{fetcher: &Router.user_fetcher/1}
end end
pipeline :well_known do pipeline :well_known do
@ -30,7 +30,8 @@ def user_fetcher(username) do
get "/statusnet/config", TwitterAPI.Controller, :config get "/statusnet/config", TwitterAPI.Controller, :config
get "/statuses/public_timeline", TwitterAPI.Controller, :public_timeline get "/statuses/public_timeline", TwitterAPI.Controller, :public_timeline
get "/statuses/public_and_external_timeline", TwitterAPI.Controller, :public_timeline get "/statuses/public_and_external_timeline", TwitterAPI.Controller, :public_and_external_timeline
get "/statuses/networkpublic_timeline", TwitterAPI.Controller, :public_and_external_timeline
get "/statuses/user_timeline", TwitterAPI.Controller, :user_timeline get "/statuses/user_timeline", TwitterAPI.Controller, :user_timeline
get "/statuses/show/:id", TwitterAPI.Controller, :fetch_status get "/statuses/show/:id", TwitterAPI.Controller, :fetch_status
@ -73,8 +74,14 @@ def user_fetcher(username) do
scope "/", Pleroma.Web do scope "/", Pleroma.Web do
pipe_through :ostatus pipe_through :ostatus
get "/objects/:uuid", OStatus.OStatusController, :object
get "/users/:nickname/feed", OStatus.OStatusController, :feed get "/users/:nickname/feed", OStatus.OStatusController, :feed
get "/users/:nickname", OStatus.OStatusController, :feed_redirect
post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming
post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request
get "/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation
post "/push/subscriptions/:id", Websub.WebsubController, :websub_incoming
end end
scope "/.well-known", Pleroma.Web do scope "/.well-known", Pleroma.Web do
@ -92,5 +99,5 @@ def user_fetcher(username) do
defmodule Fallback.RedirectController do defmodule Fallback.RedirectController do
use Pleroma.Web, :controller use Pleroma.Web, :controller
def redirector(conn, _params), do: send_file(conn, 200, "priv/static/index.html") def redirector(conn, _params), do: (if Mix.env != :test, do: send_file(conn, 200, "priv/static/index.html"))
end end

View File

@ -1,8 +1,14 @@
defmodule Pleroma.Web.Salmon do defmodule Pleroma.Web.Salmon do
@httpoison Application.get_env(:pleroma, :httpoison)
use Bitwise use Bitwise
alias Pleroma.Web.XML
alias Pleroma.Web.OStatus.ActivityRepresenter
alias Pleroma.User
require Logger
def decode(salmon) do def decode(salmon) do
{doc, _rest} = :xmerl_scan.string(to_charlist(salmon)) doc = XML.parse_document(salmon)
{:xmlObj, :string, data} = :xmerl_xpath.string('string(//me:data[1])', doc) {:xmlObj, :string, data} = :xmerl_xpath.string('string(//me:data[1])', doc)
{:xmlObj, :string, sig} = :xmerl_xpath.string('string(//me:sig[1])', doc) {:xmlObj, :string, sig} = :xmerl_xpath.string('string(//me:sig[1])', doc)
@ -10,7 +16,6 @@ def decode(salmon) do
{:xmlObj, :string, encoding} = :xmerl_xpath.string('string(//me:encoding[1])', doc) {:xmlObj, :string, encoding} = :xmerl_xpath.string('string(//me:encoding[1])', doc)
{:xmlObj, :string, type} = :xmerl_xpath.string('string(//me:data[1]/@type)', doc) {:xmlObj, :string, type} = :xmerl_xpath.string('string(//me:data[1]/@type)', doc)
{:ok, data} = Base.url_decode64(to_string(data), ignore: :whitespace) {:ok, data} = Base.url_decode64(to_string(data), ignore: :whitespace)
{:ok, sig} = Base.url_decode64(to_string(sig), ignore: :whitespace) {:ok, sig} = Base.url_decode64(to_string(sig), ignore: :whitespace)
alg = to_string(alg) alg = to_string(alg)
@ -21,22 +26,12 @@ def decode(salmon) do
end end
def fetch_magic_key(salmon) do def fetch_magic_key(salmon) do
[data, _, _, _, _] = decode(salmon) with [data, _, _, _, _] <- decode(salmon),
{doc, _rest} = :xmerl_scan.string(to_charlist(data)) doc <- XML.parse_document(data),
{:xmlObj, :string, uri} = :xmerl_xpath.string('string(//author[1]/uri)', doc) uri when not is_nil(uri) <- XML.string_from_xpath("/entry/author[1]/uri", doc),
{:ok, %{info: %{"magic_key" => magic_key}}} <- Pleroma.Web.OStatus.find_or_make_user(uri) do
uri = to_string(uri) {:ok, magic_key}
base = URI.parse(uri).host end
# TODO: Find out if this endpoint is mandated by the standard.
{:ok, response} = HTTPoison.get(base <> "/.well-known/webfinger", ["Accept": "application/xrd+xml"], [params: [resource: uri]])
{doc, _rest} = :xmerl_scan.string(to_charlist(response.body))
{:xmlObj, :string, magickey} = :xmerl_xpath.string('string(//Link[@rel="magic-public-key"]/@href)', doc)
"data:application/magic-public-key," <> magickey = to_string(magickey)
magickey
end end
def decode_and_validate(magickey, salmon) do def decode_and_validate(magickey, salmon) do
@ -57,7 +52,7 @@ def decode_and_validate(magickey, salmon) do
end end
end end
defp decode_key("RSA." <> magickey) do def decode_key("RSA." <> magickey) do
make_integer = fn(bin) -> make_integer = fn(bin) ->
list = :erlang.binary_to_list(bin) list = :erlang.binary_to_list(bin)
Enum.reduce(list, 0, fn (el, acc) -> (acc <<< 8) ||| el end) Enum.reduce(list, 0, fn (el, acc) -> (acc <<< 8) ||| el end)
@ -70,4 +65,98 @@ defp decode_key("RSA." <> magickey) do
{:RSAPublicKey, modulus, exponent} {:RSAPublicKey, modulus, exponent}
end end
def encode_key({:RSAPublicKey, modulus, exponent}) do
modulus_enc = :binary.encode_unsigned(modulus) |> Base.url_encode64
exponent_enc = :binary.encode_unsigned(exponent) |> Base.url_encode64
"RSA.#{modulus_enc}.#{exponent_enc}"
end
def generate_rsa_pem do
port = Port.open({:spawn, "openssl genrsa"}, [:binary])
{:ok, pem} = receive do
{^port, {:data, pem}} -> {:ok, pem}
end
Port.close(port)
if Regex.match?(~r/RSA PRIVATE KEY/, pem) do
{:ok, pem}
else
:error
end
end
def keys_from_pem(pem) do
[private_key_code] = :public_key.pem_decode(pem)
private_key = :public_key.pem_entry_decode(private_key_code)
{:RSAPrivateKey, _, modulus, exponent, _, _, _, _, _, _, _} = private_key
public_key = {:RSAPublicKey, modulus, exponent}
{:ok, private_key, public_key}
end
def encode(private_key, doc) do
type = "application/atom+xml"
encoding = "base64url"
alg = "RSA-SHA256"
signed_text = [doc, type, encoding, alg]
|> Enum.map(&Base.url_encode64/1)
|> Enum.join(".")
signature = signed_text
|> :public_key.sign(:sha256, private_key)
|> to_string
|> Base.url_encode64
doc_base64 = doc
|> Base.url_encode64
# Don't need proper xml building, these strings are safe to leave unescaped
salmon = """
<?xml version="1.0" encoding="UTF-8"?>
<me:env xmlns:me="http://salmon-protocol.org/ns/magic-env">
<me:data type="application/atom+xml">#{doc_base64}</me:data>
<me:encoding>#{encoding}</me:encoding>
<me:alg>#{alg}</me:alg>
<me:sig>#{signature}</me:sig>
</me:env>
"""
{:ok, salmon}
end
def remote_users(%{data: %{"to" => to}}) do
to
|> Enum.map(fn(id) -> User.get_cached_by_ap_id(id) end)
|> Enum.filter(fn(user) -> user && !user.local end)
end
defp send_to_user(%{info: %{"salmon" => salmon}}, feed, poster) do
poster.(salmon, feed, [{"Content-Type", "application/magic-envelope+xml"}])
end
defp send_to_user(_,_,_), do: nil
def publish(user, activity, poster \\ &@httpoison.post/3)
def publish(%{info: %{"keys" => keys}} = user, activity, poster) do
feed = ActivityRepresenter.to_simple_form(activity, user, true)
|> ActivityRepresenter.wrap_with_entry
|> :xmerl.export_simple(:xmerl_xml)
|> to_string
if feed do
{:ok, private, _} = keys_from_pem(keys)
{:ok, feed} = encode(private, feed)
remote_users(activity)
|> Enum.each(fn(remote_user) ->
Task.start(fn ->
Logger.debug(fn -> "sending salmon to #{remote_user.ap_id}" end)
send_to_user(remote_user, feed, poster)
end)
end)
end
end
def publish(%{id: id}, _, _), do: Logger.debug(fn -> "Keys missing for user #{id}" end)
end end

View File

@ -1,17 +1,19 @@
defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
use Pleroma.Web.TwitterAPI.Representers.BaseRepresenter use Pleroma.Web.TwitterAPI.Representers.BaseRepresenter
alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ObjectRepresenter} alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ObjectRepresenter}
alias Pleroma.Activity alias Pleroma.{Activity, User}
alias Calendar.Strftime
alias Pleroma.Web.TwitterAPI.TwitterAPI
alias Pleroma.Wi
defp user_by_ap_id(user_list, ap_id) do defp user_by_ap_id(user_list, ap_id) do
Enum.find(user_list, fn (%{ap_id: user_id}) -> ap_id == user_id end) Enum.find(user_list, fn (%{ap_id: user_id}) -> ap_id == user_id end)
end end
def to_map(%Activity{data: %{"type" => "Announce", "actor" => actor}} = activity, %{users: users, announced_activity: announced_activity} = opts) do def to_map(%Activity{data: %{"type" => "Announce", "actor" => actor, "published" => created_at}} = activity,
%{users: users, announced_activity: announced_activity} = opts) do
user = user_by_ap_id(users, actor) user = user_by_ap_id(users, actor)
created_at = get_in(activity.data, ["published"]) created_at = created_at |> date_to_asctime
|> date_to_asctime
text = "#{user.nickname} retweeted a status." text = "#{user.nickname} retweeted a status."
@ -26,20 +28,21 @@ def to_map(%Activity{data: %{"type" => "Announce", "actor" => actor}} = activity
"is_post_verb" => false, "is_post_verb" => false,
"uri" => "tag:#{activity.data["id"]}:objectType=note", "uri" => "tag:#{activity.data["id"]}:objectType=note",
"created_at" => created_at, "created_at" => created_at,
"retweeted_status" => retweeted_status "retweeted_status" => retweeted_status,
"statusnet_conversation_id" => conversation_id(announced_activity)
} }
end end
def to_map(%Activity{data: %{"type" => "Like"}} = activity, %{user: user, liked_activity: liked_activity} = opts) do def to_map(%Activity{data: %{"type" => "Like", "published" => created_at}} = activity,
created_at = get_in(activity.data, ["published"]) %{user: user, liked_activity: liked_activity} = opts) do
|> date_to_asctime created_at = created_at |> date_to_asctime
text = "#{user.nickname} favorited a status." text = "#{user.nickname} favorited a status."
%{ %{
"id" => activity.id, "id" => activity.id,
"user" => UserRepresenter.to_map(user, opts), "user" => UserRepresenter.to_map(user, opts),
"statusnet_html" => text, # TODO: add summary "statusnet_html" => text,
"text" => text, "text" => text,
"is_local" => true, "is_local" => true,
"is_post_verb" => false, "is_post_verb" => false,
@ -49,16 +52,17 @@ def to_map(%Activity{data: %{"type" => "Like"}} = activity, %{user: user, liked_
} }
end end
def to_map(%Activity{data: %{"type" => "Follow"}} = activity, %{user: user} = opts) do def to_map(%Activity{data: %{"type" => "Follow", "published" => created_at, "object" => followed_id}} = activity, %{user: user} = opts) do
created_at = get_in(activity.data, ["published"]) created_at = created_at |> date_to_asctime
|> date_to_asctime
followed = User.get_cached_by_ap_id(followed_id)
text = "#{user.nickname} started following #{followed.nickname}"
%{ %{
"id" => activity.id, "id" => activity.id,
"user" => UserRepresenter.to_map(user, opts), "user" => UserRepresenter.to_map(user, opts),
"attentions" => [], "attentions" => [],
"statusnet_html" => "", # TODO: add summary "statusnet_html" => text,
"text" => "", "text" => text,
"is_local" => true, "is_local" => true,
"is_post_verb" => false, "is_post_verb" => false,
"created_at" => created_at, "created_at" => created_at,
@ -66,14 +70,12 @@ def to_map(%Activity{data: %{"type" => "Follow"}} = activity, %{user: user} = op
} }
end end
def to_map(%Activity{} = activity, %{user: user} = opts) do def to_map(%Activity{data: %{"object" => %{"content" => content} = object}} = activity, %{user: user} = opts) do
content = get_in(activity.data, ["object", "content"]) created_at = object["published"] |> date_to_asctime
created_at = get_in(activity.data, ["object", "published"]) like_count = object["like_count"] || 0
|> date_to_asctime announcement_count = object["announcement_count"] || 0
like_count = get_in(activity.data, ["object", "like_count"]) || 0 favorited = opts[:for] && opts[:for].ap_id in (object["likes"] || [])
announcement_count = get_in(activity.data, ["object", "announcement_count"]) || 0 repeated = opts[:for] && opts[:for].ap_id in (object["announcements"] || [])
favorited = opts[:for] && opts[:for].ap_id in (activity.data["object"]["likes"] || [])
repeated = opts[:for] && opts[:for].ap_id in (activity.data["object"]["announcements"] || [])
mentions = opts[:mentioned] || [] mentions = opts[:mentioned] || []
@ -82,6 +84,8 @@ def to_map(%Activity{} = activity, %{user: user} = opts) do
|> Enum.filter(&(&1)) |> Enum.filter(&(&1))
|> Enum.map(fn (user) -> UserRepresenter.to_map(user, opts) end) |> Enum.map(fn (user) -> UserRepresenter.to_map(user, opts) end)
conversation_id = conversation_id(activity)
%{ %{
"id" => activity.id, "id" => activity.id,
"user" => UserRepresenter.to_map(user, opts), "user" => UserRepresenter.to_map(user, opts),
@ -91,22 +95,41 @@ def to_map(%Activity{} = activity, %{user: user} = opts) do
"is_local" => true, "is_local" => true,
"is_post_verb" => true, "is_post_verb" => true,
"created_at" => created_at, "created_at" => created_at,
"in_reply_to_status_id" => activity.data["object"]["inReplyToStatusId"], "in_reply_to_status_id" => object["inReplyToStatusId"],
"statusnet_conversation_id" => activity.data["object"]["statusnetConversationId"], "statusnet_conversation_id" => conversation_id,
"attachments" => (activity.data["object"]["attachment"] || []) |> ObjectRepresenter.enum_to_list(opts), "attachments" => (object["attachment"] || []) |> ObjectRepresenter.enum_to_list(opts),
"attentions" => attentions, "attentions" => attentions,
"fave_num" => like_count, "fave_num" => like_count,
"repeat_num" => announcement_count, "repeat_num" => announcement_count,
"favorited" => !!favorited, "favorited" => to_boolean(favorited),
"repeated" => !!repeated, "repeated" => to_boolean(repeated),
} }
end end
def conversation_id(activity) do
with context when not is_nil(context) <- activity.data["context"] do
TwitterAPI.context_to_conversation_id(context)
else _e -> nil
end
end
defp date_to_asctime(date) do defp date_to_asctime(date) do
with {:ok, date, _offset} <- date |> DateTime.from_iso8601 do with {:ok, date, _offset} <- date |> DateTime.from_iso8601 do
Calendar.Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y") Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y")
else _e -> else _e ->
"" ""
end end
end end
defp to_boolean(false) do
false
end
defp to_boolean(nil) do
false
end
defp to_boolean(_) do
true
end
end end

View File

@ -11,7 +11,7 @@ def to_map(user, opts) do
false false
end end
user_info = User.user_info(user) user_info = User.get_cached_user_info(user)
map = %{ map = %{
"id" => user.id, "id" => user.id,
@ -28,7 +28,8 @@ def to_map(user, opts) do
"profile_image_url_https" => image, "profile_image_url_https" => image,
"profile_image_url_profile_size" => image, "profile_image_url_profile_size" => image,
"profile_image_url_original" => image, "profile_image_url_original" => image,
"rights" => %{} "rights" => %{},
"statusnet_profile_url" => user.ap_id
} }
map map

View File

@ -5,34 +5,77 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
import Ecto.Query import Ecto.Query
def create_status(user = %User{}, data = %{}) do def to_for_user_and_mentions(user, mentions) do
attachments = Enum.map(data["media_ids"] || [], fn (media_id) ->
Repo.get(Object, media_id).data
end)
context = ActivityPub.generate_context_id
content = HtmlSanitizeEx.strip_tags(data["status"])
|> String.replace("\n", "<br>")
mentions = parse_mentions(content)
default_to = [ default_to = [
User.ap_followers(user), User.ap_followers(user),
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
] ]
to = default_to ++ Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end) default_to ++ Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end)
end
content_html = add_user_links(content, mentions) def format_input(text, mentions) do
HtmlSanitizeEx.strip_tags(text)
|> String.replace("\n", "<br>")
|> add_user_links(mentions)
end
def attachments_from_ids(ids) do
Enum.map(ids || [], fn (media_id) ->
Repo.get(Object, media_id).data
end)
end
def get_replied_to_activity(id) when not is_nil(id) do
Repo.get(Activity, id)
end
def get_replied_to_activity(_), do: nil
def add_attachments(text, attachments) do
attachment_text = Enum.map(attachments, fn
(%{"url" => [%{"href" => href} | _]}) ->
"<a href='#{href}'>#{href}</a>"
_ -> ""
end)
Enum.join([text | attachment_text], "<br>")
end
def create_status(%User{} = user, %{"status" => status} = data) do
attachments = attachments_from_ids(data["media_ids"])
context = ActivityPub.generate_context_id
mentions = parse_mentions(status)
content_html = status
|> format_input(mentions)
|> add_attachments(attachments)
to = to_for_user_and_mentions(user, mentions)
date = make_date() date = make_date()
activity = %{ inReplyTo = get_replied_to_activity(data["in_reply_to_status_id"])
"type" => "Create",
"to" => to, # Wire up reply info.
"actor" => user.ap_id, [to, context, object, additional] =
"object" => %{ if inReplyTo do
context = inReplyTo.data["context"]
to = to ++ [inReplyTo.data["actor"]]
object = %{
"type" => "Note",
"to" => to,
"content" => content_html,
"published" => date,
"context" => context,
"attachment" => attachments,
"actor" => user.ap_id,
"inReplyTo" => inReplyTo.data["object"]["id"],
"inReplyToStatusId" => inReplyTo.id,
}
additional = %{}
[to, context, object, additional]
else
object = %{
"type" => "Note", "type" => "Note",
"to" => to, "to" => to,
"content" => content_html, "content" => content_html,
@ -40,36 +83,11 @@ def create_status(user = %User{}, data = %{}) do
"context" => context, "context" => context,
"attachment" => attachments, "attachment" => attachments,
"actor" => user.ap_id "actor" => user.ap_id
}, }
"published" => date, [to, context, object, %{}]
"context" => context
}
# Wire up reply info.
activity = with inReplyToId when not is_nil(inReplyToId) <- data["in_reply_to_status_id"],
inReplyTo <- Repo.get(Activity, inReplyToId),
context <- inReplyTo.data["context"]
do
to = activity["to"] ++ [inReplyTo.data["actor"]]
activity
|> put_in(["to"], to)
|> put_in(["context"], context)
|> put_in(["object", "context"], context)
|> put_in(["object", "inReplyTo"], inReplyTo.data["object"]["id"])
|> put_in(["object", "inReplyToStatusId"], inReplyToId)
|> put_in(["statusnetConversationId"], inReplyTo.data["statusnetConversationId"])
|> put_in(["object", "statusnetConversationId"], inReplyTo.data["statusnetConversationId"])
else _e ->
activity
end
with {:ok, activity} <- ActivityPub.insert(activity) do
{:ok, activity} = add_conversation_id(activity)
Pleroma.Web.Websub.publish(Pleroma.Web.OStatus.feed_path(user), user, activity)
{:ok, activity}
end end
ActivityPub.create(to, user, context, object, additional, data)
end end
def fetch_friend_statuses(user, opts \\ %{}) do def fetch_friend_statuses(user, opts \\ %{}) do
@ -78,6 +96,12 @@ def fetch_friend_statuses(user, opts \\ %{}) do
end end
def fetch_public_statuses(user, opts \\ %{}) do def fetch_public_statuses(user, opts \\ %{}) do
opts = Map.put(opts, "local_only", true)
ActivityPub.fetch_public_activities(opts)
|> activities_to_statuses(%{for: user})
end
def fetch_public_and_external_statuses(user, opts \\ %{}) do
ActivityPub.fetch_public_activities(opts) ActivityPub.fetch_public_activities(opts)
|> activities_to_statuses(%{for: user}) |> activities_to_statuses(%{for: user})
end end
@ -93,18 +117,12 @@ def fetch_mentions(user, opts \\ %{}) do
end end
def fetch_conversation(user, id) do def fetch_conversation(user, id) do
query = from activity in Activity, with context when is_binary(context) <- conversation_id_to_context(id),
where: fragment("? @> ?", activity.data, ^%{ statusnetConversationId: id}),
limit: 1
with %Activity{} = activity <- Repo.one(query),
context <- activity.data["context"],
activities <- ActivityPub.fetch_activities_for_context(context), activities <- ActivityPub.fetch_activities_for_context(context),
statuses <- activities |> activities_to_statuses(%{for: user}) statuses <- activities |> activities_to_statuses(%{for: user})
do do
statuses statuses
else e -> else _e ->
IO.inspect(e)
[] []
end end
end end
@ -116,28 +134,23 @@ def fetch_status(user, id) do
end end
def follow(%User{} = follower, params) do def follow(%User{} = follower, params) do
with { :ok, %User{} = followed } <- get_user(params), with {:ok, %User{} = followed} <- get_user(params),
{ :ok, follower } <- User.follow(follower, followed), {:ok, follower} <- User.follow(follower, followed),
{ :ok, activity } <- ActivityPub.insert(%{ {:ok, activity} <- ActivityPub.follow(follower, followed)
"type" => "Follow",
"actor" => follower.ap_id,
"object" => followed.ap_id,
"published" => make_date()
})
do do
{ :ok, follower, followed, activity } {:ok, follower, followed, activity}
else else
err -> err err -> err
end end
end end
def unfollow(%User{} = follower, params) do def unfollow(%User{} = follower, params) do
with { :ok, %User{} = unfollowed } <- get_user(params), with { :ok, %User{} = unfollowed } <- get_user(params),
{ :ok, follower, follow_activity } <- User.unfollow(follower, unfollowed), { :ok, follower, follow_activity } <- User.unfollow(follower, unfollowed),
{ :ok, _activity } <- ActivityPub.insert(%{ { :ok, _activity } <- ActivityPub.insert(%{
"type" => "Undo", "type" => "Undo",
"actor" => follower.ap_id, "actor" => follower.ap_id,
"object" => follow_activity, # get latest Follow for these users "object" => follow_activity.data["id"], # get latest Follow for these users
"published" => make_date() "published" => make_date()
}) })
do do
@ -232,24 +245,6 @@ def add_user_links(text, mentions) do
Enum.reduce(mentions, text, fn ({match, %User{ap_id: ap_id}}, text) -> String.replace(text, match, "<a href='#{ap_id}'>#{match}</a>") end) Enum.reduce(mentions, text, fn ({match, %User{ap_id: ap_id}}, text) -> String.replace(text, match, "<a href='#{ap_id}'>#{match}</a>") end)
end end
defp add_conversation_id(activity) do
if is_integer(activity.data["statusnetConversationId"]) do
{:ok, activity}
else
data = activity.data
|> put_in(["object", "statusnetConversationId"], activity.id)
|> put_in(["statusnetConversationId"], activity.id)
object = Object.get_by_ap_id(activity.data["object"]["id"])
changeset = Ecto.Changeset.change(object, data: data["object"])
Repo.update(changeset)
changeset = Ecto.Changeset.change(activity, data: data)
Repo.update(changeset)
end
end
def register_user(params) do def register_user(params) do
params = %{ params = %{
nickname: params["nickname"], nickname: params["nickname"],
@ -268,20 +263,20 @@ def register_user(params) do
{:error, changeset} -> {:error, changeset} ->
errors = Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end) errors = Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end)
|> Poison.encode! |> Poison.encode!
{:error, %{error: errors}} {:error, %{error: errors}}
end end
end end
def get_user(user \\ nil, params) do def get_user(user \\ nil, params) do
case params do case params do
%{ "user_id" => user_id } -> %{"user_id" => user_id} ->
case target = Repo.get(User, user_id) do case target = Repo.get(User, user_id) do
nil -> nil ->
{:error, "No user with such user_id"} {:error, "No user with such user_id"}
_ -> _ ->
{:ok, target} {:ok, target}
end end
%{ "screen_name" => nickname } -> %{"screen_name" => nickname} ->
case target = Repo.get_by(User, nickname: nickname) do case target = Repo.get_by(User, nickname: nickname) do
nil -> nil ->
{:error, "No user with such screen_name"} {:error, "No user with such screen_name"}
@ -337,4 +332,22 @@ defp activity_to_status(activity, opts) do
defp make_date do defp make_date do
DateTime.utc_now() |> DateTime.to_iso8601 DateTime.utc_now() |> DateTime.to_iso8601
end end
def context_to_conversation_id(context) do
with %Object{id: id} <- Object.get_cached_by_ap_id(context) do
id
else _e ->
changeset = Object.context_mapping(context)
{:ok, %{id: id}} = Repo.insert(changeset)
id
end
end
def conversation_id_to_context(id) do
with %Object{data: %{"id" => context}} <- Repo.get(Object, id) do
context
else _e ->
{:error, "No such conversation"}
end
end
end end

View File

@ -2,8 +2,9 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
use Pleroma.Web, :controller use Pleroma.Web, :controller
alias Pleroma.Web.TwitterAPI.TwitterAPI alias Pleroma.Web.TwitterAPI.TwitterAPI
alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ActivityRepresenter} alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ActivityRepresenter}
alias Pleroma.{Repo, Activity} alias Pleroma.{Web, Repo, Activity}
alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.ActivityPub
alias Ecto.Changeset
def verify_credentials(%{assigns: %{user: user}} = conn, _params) do def verify_credentials(%{assigns: %{user: user}} = conn, _params) do
response = user |> UserRepresenter.to_json(%{for: user}) response = user |> UserRepresenter.to_json(%{for: user})
@ -15,7 +16,7 @@ def verify_credentials(%{assigns: %{user: user}} = conn, _params) do
def status_update(%{assigns: %{user: user}} = conn, %{"status" => status_text} = status_data) do def status_update(%{assigns: %{user: user}} = conn, %{"status" => status_text} = status_data) do
if status_text |> String.trim |> String.length != 0 do if status_text |> String.trim |> String.length != 0 do
media_ids = extract_media_ids(status_data) media_ids = extract_media_ids(status_data)
{:ok, activity} = TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids )) {:ok, activity} = TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids))
conn conn
|> json_reply(200, ActivityRepresenter.to_json(activity, %{user: user})) |> json_reply(200, ActivityRepresenter.to_json(activity, %{user: user}))
else else
@ -41,6 +42,14 @@ defp extract_media_ids(status_data) do
end end
end end
def public_and_external_timeline(%{assigns: %{user: user}} = conn, params) do
statuses = TwitterAPI.fetch_public_and_external_statuses(user, params)
{:ok, json} = Poison.encode(statuses)
conn
|> json_reply(200, json)
end
def public_timeline(%{assigns: %{user: user}} = conn, params) do def public_timeline(%{assigns: %{user: user}} = conn, params) do
statuses = TwitterAPI.fetch_public_statuses(user, params) statuses = TwitterAPI.fetch_public_statuses(user, params)
{:ok, json} = Poison.encode(statuses) {:ok, json} = Poison.encode(statuses)
@ -79,34 +88,34 @@ def mentions_timeline(%{assigns: %{user: user}} = conn, params) do
def follow(%{assigns: %{user: user}} = conn, params) do def follow(%{assigns: %{user: user}} = conn, params) do
case TwitterAPI.follow(user, params) do case TwitterAPI.follow(user, params) do
{ :ok, user, followed, _activity } -> {:ok, user, followed, _activity} ->
response = followed |> UserRepresenter.to_json(%{for: user}) response = followed |> UserRepresenter.to_json(%{for: user})
conn conn
|> json_reply(200, response) |> json_reply(200, response)
{ :error, msg } -> forbidden_json_reply(conn, msg) {:error, msg} -> forbidden_json_reply(conn, msg)
end end
end end
def unfollow(%{assigns: %{user: user}} = conn, params) do def unfollow(%{assigns: %{user: user}} = conn, params) do
case TwitterAPI.unfollow(user, params) do case TwitterAPI.unfollow(user, params) do
{ :ok, user, unfollowed, } -> {:ok, user, unfollowed} ->
response = unfollowed |> UserRepresenter.to_json(%{for: user}) response = unfollowed |> UserRepresenter.to_json(%{for: user})
conn conn
|> json_reply(200, response) |> json_reply(200, response)
{ :error, msg } -> forbidden_json_reply(conn, msg) {:error, msg} -> forbidden_json_reply(conn, msg)
end end
end end
def fetch_status(%{assigns: %{user: user}} = conn, %{ "id" => id }) do def fetch_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do
response = TwitterAPI.fetch_status(user, id) |> Poison.encode! response = Poison.encode!(TwitterAPI.fetch_status(user, id))
conn conn
|> json_reply(200, response) |> json_reply(200, response)
end end
def fetch_conversation(%{assigns: %{user: user}} = conn, %{ "id" => id }) do def fetch_conversation(%{assigns: %{user: user}} = conn, %{"id" => id}) do
id = String.to_integer(id) id = String.to_integer(id)
response = TwitterAPI.fetch_conversation(user, id) |> Poison.encode! response = Poison.encode!(TwitterAPI.fetch_conversation(user, id))
conn conn
|> json_reply(200, response) |> json_reply(200, response)
@ -132,8 +141,8 @@ def upload_json(conn, %{"media" => media}) do
def config(conn, _params) do def config(conn, _params) do
response = %{ response = %{
site: %{ site: %{
name: Pleroma.Web.base_url, name: Web.base_url,
server: Pleroma.Web.base_url, server: Web.base_url,
textlimit: -1 textlimit: -1
} }
} }
@ -188,11 +197,10 @@ def register(conn, params) do
def update_avatar(%{assigns: %{user: user}} = conn, params) do def update_avatar(%{assigns: %{user: user}} = conn, params) do
{:ok, object} = ActivityPub.upload(params) {:ok, object} = ActivityPub.upload(params)
change = Ecto.Changeset.change(user, %{avatar: object.data}) change = Changeset.change(user, %{avatar: object.data})
{:ok, user} = Repo.update(change) {:ok, user} = Repo.update(change)
response = UserRepresenter.to_map(user, %{for: user}) response = Poison.encode!(UserRepresenter.to_map(user, %{for: user}))
|> Poison.encode!
conn conn
|> json_reply(200, response) |> json_reply(200, response)

View File

@ -20,8 +20,7 @@ def controller do
quote do quote do
use Phoenix.Controller, namespace: Pleroma.Web use Phoenix.Controller, namespace: Pleroma.Web
import Plug.Conn import Plug.Conn
import Pleroma.Web.Router.Helpers import Pleroma.Web.{Gettext, Router.Helpers}
import Pleroma.Web.Gettext
end end
end end
@ -33,9 +32,7 @@ def view do
# Import convenience functions from controllers # Import convenience functions from controllers
import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1] import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1]
import Pleroma.Web.Router.Helpers import Pleroma.Web.{ErrorHelpers, Gettext, Router.Helpers}
import Pleroma.Web.ErrorHelpers
import Pleroma.Web.Gettext
end end
end end
@ -61,27 +58,7 @@ defmacro __using__(which) when is_atom(which) do
apply(__MODULE__, which, []) apply(__MODULE__, which, [])
end end
def host do
settings = Application.get_env(:pleroma, Pleroma.Web.Endpoint)
settings
|> Keyword.fetch!(:url)
|> Keyword.fetch!(:host)
end
def base_url do def base_url do
settings = Application.get_env(:pleroma, Pleroma.Web.Endpoint) Pleroma.Web.Endpoint.url
host = host()
protocol = settings |> Keyword.fetch!(:protocol)
port_fragment = with {:ok, protocol_info} <- settings |> Keyword.fetch(String.to_atom(protocol)),
{:ok, port} <- protocol_info |> Keyword.fetch(:port)
do
":#{port}"
else _e ->
""
end
"#{protocol}://#{host}#{port_fragment}"
end end
end end

View File

@ -1,39 +1,111 @@
defmodule Pleroma.Web.WebFinger do defmodule Pleroma.Web.WebFinger do
alias Pleroma.XmlBuilder @httpoison Application.get_env(:pleroma, :httpoison)
alias Pleroma.User
alias Pleroma.Web.OStatus
def host_meta() do alias Pleroma.{Repo, User, XmlBuilder}
base_url = Pleroma.Web.base_url alias Pleroma.Web
alias Pleroma.Web.{XML, Salmon, OStatus}
require Logger
def host_meta do
base_url = Web.base_url
{ {
:XRD, %{ xmlns: "http://docs.oasis-open.org/ns/xri/xrd-1.0" }, :XRD, %{xmlns: "http://docs.oasis-open.org/ns/xri/xrd-1.0"},
{ {
:Link, %{ rel: "lrdd", type: "application/xrd+xml", template: "#{base_url}/.well-known/webfinger?resource={uri}" } :Link, %{rel: "lrdd", type: "application/xrd+xml", template: "#{base_url}/.well-known/webfinger?resource={uri}"}
} }
} }
|> XmlBuilder.to_doc |> XmlBuilder.to_doc
end end
def webfinger(resource) do def webfinger(resource) do
host = Pleroma.Web.host host = Pleroma.Web.Endpoint.host
regex = ~r/acct:(?<username>\w+)@#{host}/ regex = ~r/(acct:)?(?<username>\w+)@#{host}/
case Regex.named_captures(regex, resource) do with %{"username" => username} <- Regex.named_captures(regex, resource) do
%{"username" => username} -> user = User.get_by_nickname(username)
user = User.get_cached_by_nickname(username) {:ok, represent_user(user)}
else _e ->
with user when not is_nil(user) <- User.get_cached_by_ap_id(resource) do
{:ok, represent_user(user)} {:ok, represent_user(user)}
_ -> nil else _e ->
{:error, "Couldn't find user"}
end
end end
end end
def represent_user(user) do def represent_user(user) do
{:ok, user} = ensure_keys_present(user)
{:ok, _private, public} = Salmon.keys_from_pem(user.info["keys"])
magic_key = Salmon.encode_key(public)
{ {
:XRD, %{xmlns: "http://docs.oasis-open.org/ns/xri/xrd-1.0"}, :XRD, %{xmlns: "http://docs.oasis-open.org/ns/xri/xrd-1.0"},
[ [
{:Subject, "acct:#{user.nickname}@#{Pleroma.Web.host}"}, {:Subject, "acct:#{user.nickname}@#{Pleroma.Web.Endpoint.host}"},
{:Alias, user.ap_id}, {:Alias, user.ap_id},
{:Link, %{rel: "http://schemas.google.com/g/2010#updates-from", type: "application/atom+xml", href: OStatus.feed_path(user)}} {:Link, %{rel: "http://schemas.google.com/g/2010#updates-from", type: "application/atom+xml", href: OStatus.feed_path(user)}},
{:Link, %{rel: "http://webfinger.net/rel/profile-page", type: "text/html", href: user.ap_id}},
{:Link, %{rel: "salmon", href: OStatus.salmon_path(user)}},
{:Link, %{rel: "magic-public-key", href: "data:application/magic-public-key,#{magic_key}"}}
] ]
} }
|> XmlBuilder.to_doc |> XmlBuilder.to_doc
end end
# This seems a better fit in Salmon
def ensure_keys_present(user) do
info = user.info || %{}
if info["keys"] do
{:ok, user}
else
{:ok, pem} = Salmon.generate_rsa_pem
info = Map.put(info, "keys", pem)
Repo.update(Ecto.Changeset.change(user, info: info))
end
end
# FIXME: Make this call the host-meta to find the actual address.
defp webfinger_address(domain) do
"//#{domain}/.well-known/webfinger"
end
defp webfinger_from_xml(doc) do
magic_key = XML.string_from_xpath(~s{//Link[@rel="magic-public-key"]/@href}, doc)
"data:application/magic-public-key," <> magic_key = magic_key
topic = XML.string_from_xpath(~s{//Link[@rel="http://schemas.google.com/g/2010#updates-from"]/@href}, doc)
subject = XML.string_from_xpath("//Subject", doc)
salmon = XML.string_from_xpath(~s{//Link[@rel="salmon"]/@href}, doc)
data = %{
"magic_key" => magic_key,
"topic" => topic,
"subject" => subject,
"salmon" => salmon
}
{:ok, data}
end
def finger(account, getter \\ &@httpoison.get/3) do
domain = with [_name, domain] <- String.split(account, "@") do
domain
else _e ->
URI.parse(account).host
end
address = webfinger_address(domain)
# try https first
response = with {:ok, result} <- getter.("https:" <> address, ["Accept": "application/xrd+xml"], [params: [resource: account]]) do
{:ok, result}
else _ ->
getter.("http:" <> address, ["Accept": "application/xrd+xml"], [params: [resource: account], follow_redirect: true])
end
with {:ok, %{status_code: status_code, body: body}} when status_code in 200..299 <- response,
doc <- XML.parse_document(body),
{:ok, data} <- webfinger_from_xml(doc) do
{:ok, data}
else
e ->
Logger.debug(fn -> "Couldn't finger #{account}." end)
Logger.debug(fn -> inspect(e) end)
{:error, e}
end
end
end end

View File

@ -12,7 +12,7 @@ def host_meta(conn, _params) do
end end
def webfinger(conn, %{"resource" => resource}) do def webfinger(conn, %{"resource" => resource}) do
{:ok, response} = Pleroma.Web.WebFinger.webfinger(resource) {:ok, response} = WebFinger.webfinger(resource)
conn conn
|> put_resp_content_type("application/xrd+xml") |> put_resp_content_type("application/xrd+xml")

View File

@ -1,16 +1,20 @@
defmodule Pleroma.Web.Websub do defmodule Pleroma.Web.Websub do
alias Ecto.Changeset
alias Pleroma.Repo alias Pleroma.Repo
alias Pleroma.Web.Websub.WebsubServerSubscription alias Pleroma.Web.Websub.{WebsubServerSubscription, WebsubClientSubscription}
alias Pleroma.Web.OStatus.FeedRepresenter alias Pleroma.Web.OStatus.FeedRepresenter
alias Pleroma.Web.OStatus alias Pleroma.Web.{XML, Endpoint, OStatus}
alias Pleroma.Web.Router.Helpers
require Logger
import Ecto.Query import Ecto.Query
@websub_verifier Application.get_env(:pleroma, :websub_verifier) @httpoison Application.get_env(:pleroma, :httpoison)
def verify(subscription, getter \\ &HTTPoison.get/3 ) do def verify(subscription, getter \\ &@httpoison.get/3) do
challenge = Base.encode16(:crypto.strong_rand_bytes(8)) challenge = Base.encode16(:crypto.strong_rand_bytes(8))
lease_seconds = NaiveDateTime.diff(subscription.valid_until, subscription.updated_at) |> to_string lease_seconds = NaiveDateTime.diff(subscription.valid_until, subscription.updated_at)
lease_seconds = lease_seconds |> to_string
params = %{ params = %{
"hub.challenge": challenge, "hub.challenge": challenge,
@ -25,11 +29,11 @@ def verify(subscription, getter \\ &HTTPoison.get/3 ) do
with {:ok, response} <- getter.(url, [], [params: params]), with {:ok, response} <- getter.(url, [], [params: params]),
^challenge <- response.body ^challenge <- response.body
do do
changeset = Ecto.Changeset.change(subscription, %{state: "active"}) changeset = Changeset.change(subscription, %{state: "active"})
Repo.update(changeset) Repo.update(changeset)
else _e -> else _e ->
changeset = Ecto.Changeset.change(subscription, %{state: "rejected"}) changeset = Changeset.change(subscription, %{state: "rejected"})
{:ok, subscription } = Repo.update(changeset) {:ok, subscription} = Repo.update(changeset)
{:error, subscription} {:error, subscription}
end end
end end
@ -39,18 +43,27 @@ def publish(topic, user, activity) do
where: sub.topic == ^topic and sub.state == "active" where: sub.topic == ^topic and sub.state == "active"
subscriptions = Repo.all(query) subscriptions = Repo.all(query)
Enum.each(subscriptions, fn(sub) -> Enum.each(subscriptions, fn(sub) ->
response = FeedRepresenter.to_simple_form(user, [activity], [user]) response = user
|> FeedRepresenter.to_simple_form([activity], [user])
|> :xmerl.export_simple(:xmerl_xml) |> :xmerl.export_simple(:xmerl_xml)
|> to_string
signature = :crypto.hmac(:sha, sub.secret, response) |> Base.encode16 signature = sign(sub.secret || "", response)
Logger.debug(fn -> "Pushing to #{sub.callback}" end)
HTTPoison.post(sub.callback, response, [ Task.start(fn ->
{"Content-Type", "application/atom+xml"}, @httpoison.post(sub.callback, response, [
{"X-Hub-Signature", "sha1=#{signature}"} {"Content-Type", "application/atom+xml"},
]) {"X-Hub-Signature", "sha1=#{signature}"}
])
end)
end) end)
end end
def sign(secret, doc) do
:crypto.hmac(:sha, secret, to_string(doc)) |> Base.encode16 |> String.downcase
end
def incoming_subscription_request(user, %{"hub.mode" => "subscribe"} = params) do def incoming_subscription_request(user, %{"hub.mode" => "subscribe"} = params) do
with {:ok, topic} <- valid_topic(params, user), with {:ok, topic} <- valid_topic(params, user),
{:ok, lease_time} <- lease_time(params), {:ok, lease_time} <- lease_time(params),
@ -65,23 +78,32 @@ def incoming_subscription_request(user, %{"hub.mode" => "subscribe"} = params) d
callback: callback callback: callback
} }
change = Ecto.Changeset.change(subscription, data) change = Changeset.change(subscription, data)
websub = Repo.insert_or_update!(change) websub = Repo.insert_or_update!(change)
change = Ecto.Changeset.change(websub, %{valid_until: NaiveDateTime.add(websub.updated_at, lease_time)}) change = Changeset.change(websub, %{valid_until:
NaiveDateTime.add(websub.updated_at, lease_time)})
websub = Repo.update!(change) websub = Repo.update!(change)
# Just spawn that for now, maybe pool later. Pleroma.Web.Federator.enqueue(:verify_websub, websub)
spawn(fn -> @websub_verifier.verify(websub) end)
{:ok, websub} {:ok, websub}
else {:error, reason} -> else {:error, reason} ->
Logger.debug("Couldn't create subscription.")
Logger.debug(inspect(reason))
{:error, reason} {:error, reason}
end end
end end
defp get_subscription(topic, callback) do defp get_subscription(topic, callback) do
Repo.get_by(WebsubServerSubscription, topic: topic, callback: callback) || %WebsubServerSubscription{} Repo.get_by(WebsubServerSubscription, topic: topic, callback: callback) ||
%WebsubServerSubscription{}
end
# Temp hack for mastodon.
defp lease_time(%{"hub.lease_seconds" => ""}) do
{:ok, 60 * 60 * 24 * 3} # three days
end end
defp lease_time(%{"hub.lease_seconds" => lease_seconds}) do defp lease_time(%{"hub.lease_seconds" => lease_seconds}) do
@ -94,9 +116,92 @@ defp lease_time(_) do
defp valid_topic(%{"hub.topic" => topic}, user) do defp valid_topic(%{"hub.topic" => topic}, user) do
if topic == OStatus.feed_path(user) do if topic == OStatus.feed_path(user) do
{:ok, topic} {:ok, OStatus.feed_path(user)}
else else
{:error, "Wrong topic requested, expected #{OStatus.feed_path(user)}, got #{topic}"} {:error, "Wrong topic requested, expected #{OStatus.feed_path(user)}, got #{topic}"}
end end
end end
def subscribe(subscriber, subscribed, requester \\ &request_subscription/1) do
topic = subscribed.info["topic"]
# FIXME: Race condition, use transactions
{:ok, subscription} = with subscription when not is_nil(subscription) <- Repo.get_by(WebsubClientSubscription, topic: topic) do
subscribers = [subscriber.ap_id | subscription.subscribers] |> Enum.uniq
change = Ecto.Changeset.change(subscription, %{subscribers: subscribers})
Repo.update(change)
else _e ->
subscription = %WebsubClientSubscription{
topic: topic,
hub: subscribed.info["hub"],
subscribers: [subscriber.ap_id],
state: "requested",
secret: :crypto.strong_rand_bytes(8) |> Base.url_encode64,
user: subscribed
}
Repo.insert(subscription)
end
requester.(subscription)
end
def gather_feed_data(topic, getter \\ &@httpoison.get/1) do
with {:ok, response} <- getter.(topic),
status_code when status_code in 200..299 <- response.status_code,
body <- response.body,
doc <- XML.parse_document(body),
uri when not is_nil(uri) <- XML.string_from_xpath("/feed/author[1]/uri", doc),
hub when not is_nil(hub) <- XML.string_from_xpath(~S{/feed/link[@rel="hub"]/@href}, doc) do
name = XML.string_from_xpath("/feed/author[1]/name", doc)
preferredUsername = XML.string_from_xpath("/feed/author[1]/poco:preferredUsername", doc)
displayName = XML.string_from_xpath("/feed/author[1]/poco:displayName", doc)
avatar = OStatus.make_avatar_object(doc)
{:ok, %{
"uri" => uri,
"hub" => hub,
"nickname" => preferredUsername || name,
"name" => displayName || name,
"host" => URI.parse(uri).host,
"avatar" => avatar
}}
else e ->
{:error, e}
end
end
def request_subscription(websub, poster \\ &@httpoison.post/3, timeout \\ 10_000) do
data = [
"hub.mode": "subscribe",
"hub.topic": websub.topic,
"hub.secret": websub.secret,
"hub.callback": Helpers.websub_url(Endpoint, :websub_subscription_confirmation, websub.id)
]
# This checks once a second if we are confirmed yet
websub_checker = fn ->
helper = fn (helper) ->
:timer.sleep(1000)
websub = Repo.get_by(WebsubClientSubscription, id: websub.id, state: "accepted")
if websub, do: websub, else: helper.(helper)
end
helper.(helper)
end
task = Task.async(websub_checker)
with {:ok, %{status_code: 202}} <- poster.(websub.hub, {:form, data}, ["Content-type": "application/x-www-form-urlencoded"]),
{:ok, websub} <- Task.yield(task, timeout) do
{:ok, websub}
else e ->
Task.shutdown(task)
change = Ecto.Changeset.change(websub, %{state: "rejected"})
{:ok, websub} = Repo.update(change)
Logger.debug(fn -> "Couldn't confirm subscription: #{inspect(websub)}" end)
Logger.debug(fn -> "error: #{inspect(e)}" end)
{:error, websub}
end
end
end end

View File

@ -0,0 +1,16 @@
defmodule Pleroma.Web.Websub.WebsubClientSubscription do
use Ecto.Schema
alias Pleroma.User
schema "websub_client_subscriptions" do
field :topic, :string
field :secret, :string
field :valid_until, :naive_datetime
field :state, :string
field :subscribers, {:array, :string}, default: []
field :hub, :string
belongs_to :user, User
timestamps()
end
end

View File

@ -1,7 +1,9 @@
defmodule Pleroma.Web.Websub.WebsubController do defmodule Pleroma.Web.Websub.WebsubController do
use Pleroma.Web, :controller use Pleroma.Web, :controller
alias Pleroma.User alias Pleroma.{Repo, User}
alias Pleroma.Web.Websub alias Pleroma.Web.{Websub, Federator}
alias Pleroma.Web.Websub.WebsubClientSubscription
require Logger
def websub_subscription_request(conn, %{"nickname" => nickname} = params) do def websub_subscription_request(conn, %{"nickname" => nickname} = params) do
user = User.get_cached_by_nickname(nickname) user = User.get_cached_by_nickname(nickname)
@ -15,4 +17,32 @@ def websub_subscription_request(conn, %{"nickname" => nickname} = params) do
|> send_resp(500, reason) |> send_resp(500, reason)
end end
end end
def websub_subscription_confirmation(conn, %{"id" => id, "hub.mode" => "subscribe", "hub.challenge" => challenge, "hub.topic" => topic}) do
with %WebsubClientSubscription{} = websub <- Repo.get_by(WebsubClientSubscription, id: id, topic: topic) do
change = Ecto.Changeset.change(websub, %{state: "accepted"})
{:ok, _websub} = Repo.update(change)
conn
|> send_resp(200, challenge)
else _e ->
conn
|> send_resp(500, "Error")
end
end
def websub_incoming(conn, %{"id" => id}) do
with "sha1=" <> signature <- hd(get_req_header(conn, "x-hub-signature")),
signature <- String.downcase(signature),
%WebsubClientSubscription{} = websub <- Repo.get(WebsubClientSubscription, id),
{:ok, body, _conn} = read_body(conn),
^signature <- Websub.sign(websub.secret, body) do
Federator.enqueue(:incoming_doc, body)
conn
|> send_resp(200, "OK")
else _e ->
Logger.debug("Can't handle incoming subscription post")
conn
|> send_resp(500, "Error")
end
end
end end

View File

@ -0,0 +1,19 @@
defmodule Pleroma.Web.XML do
def string_from_xpath(xpath, doc) do
{:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc)
res = res
|> to_string
|> String.trim
if res == "", do: nil, else: res
end
def parse_document(text) do
{doc, _rest} = text
|> :binary.bin_to_list
|> :xmerl_scan.string
doc
end
end

View File

@ -30,13 +30,13 @@ def to_xml(%NaiveDateTime{} = time) do
NaiveDateTime.to_iso8601(time) NaiveDateTime.to_iso8601(time)
end end
def to_doc(content), do: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" <> to_xml(content) def to_doc(content), do: ~s(<?xml version="1.0" encoding="UTF-8"?>) <> to_xml(content)
defp make_open_tag(tag, attributes) do defp make_open_tag(tag, attributes) do
attributes_string = for {attribute, value} <- attributes do attributes_string = for {attribute, value} <- attributes do
"#{attribute}=\"#{value}\"" "#{attribute}=\"#{value}\""
end |> Enum.join(" ") end |> Enum.join(" ")
Enum.join([tag, attributes_string], " ") |> String.strip [tag, attributes_string] |> Enum.join(" ") |> String.strip
end end
end end

View File

@ -41,6 +41,7 @@ defp deps do
{:cachex, "~> 2.1"}, {:cachex, "~> 2.1"},
{:httpoison, "~> 0.11.1"}, {:httpoison, "~> 0.11.1"},
{:ex_machina, "~> 2.0", only: :test}, {:ex_machina, "~> 2.0", only: :test},
{:credo, "~> 0.7", only: [:dev, :test]},
{:mix_test_watch, "~> 0.2", only: :dev}] {:mix_test_watch, "~> 0.2", only: :dev}]
end end

View File

@ -1,4 +1,5 @@
%{"cachex": {:hex, :cachex, "2.1.0", "fad49b4e78d11c6c314e75bd8c9408f5b78cb065c047442798caed10803ee3be", [:mix], [{:eternal, "~> 1.1", [hex: :eternal, optional: false]}]}, %{"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], []},
"cachex": {:hex, :cachex, "2.1.0", "fad49b4e78d11c6c314e75bd8c9408f5b78cb065c047442798caed10803ee3be", [:mix], [{:eternal, "~> 1.1", [hex: :eternal, optional: false]}]},
"calendar": {:hex, :calendar, "0.16.1", "782327ad8bae7c797b887840dc4ddb933f05ce6e333e5b04964d7a5d5f79bde3", [:mix], [{:tzdata, "~> 0.5.8 or ~> 0.1.201603", [hex: :tzdata, optional: false]}]}, "calendar": {:hex, :calendar, "0.16.1", "782327ad8bae7c797b887840dc4ddb933f05ce6e333e5b04964d7a5d5f79bde3", [:mix], [{:tzdata, "~> 0.5.8 or ~> 0.1.201603", [hex: :tzdata, optional: false]}]},
"certifi": {:hex, :certifi, "1.0.0", "1c787a85b1855ba354f0b8920392c19aa1d06b0ee1362f9141279620a5be2039", [:rebar3], []}, "certifi": {:hex, :certifi, "1.0.0", "1c787a85b1855ba354f0b8920392c19aa1d06b0ee1362f9141279620a5be2039", [:rebar3], []},
"comeonin": {:hex, :comeonin, "3.0.2", "8b213268a6634bd2e31a8035a963e974681d13ccc1f73f2ae664b6ac4e993c96", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, optional: false]}]}, "comeonin": {:hex, :comeonin, "3.0.2", "8b213268a6634bd2e31a8035a963e974681d13ccc1f73f2ae664b6ac4e993c96", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, optional: false]}]},
@ -6,6 +7,7 @@
"connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], []}, "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], []},
"cowboy": {:hex, :cowboy, "1.1.2", "61ac29ea970389a88eca5a65601460162d370a70018afe6f949a29dca91f3bb0", [:rebar3], [{:cowlib, "~> 1.0.2", [hex: :cowlib, optional: false]}, {:ranch, "~> 1.3.2", [hex: :ranch, optional: false]}]}, "cowboy": {:hex, :cowboy, "1.1.2", "61ac29ea970389a88eca5a65601460162d370a70018afe6f949a29dca91f3bb0", [:rebar3], [{:cowlib, "~> 1.0.2", [hex: :cowlib, optional: false]}, {:ranch, "~> 1.3.2", [hex: :ranch, optional: false]}]},
"cowlib": {:hex, :cowlib, "1.0.2", "9d769a1d062c9c3ac753096f868ca121e2730b9a377de23dec0f7e08b1df84ee", [:make], []}, "cowlib": {:hex, :cowlib, "1.0.2", "9d769a1d062c9c3ac753096f868ca121e2730b9a377de23dec0f7e08b1df84ee", [:make], []},
"credo": {:hex, :credo, "0.7.3", "9827ab04002186af1aec014a811839a06f72aaae6cd5eed3919b248c8767dbf3", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, optional: false]}]},
"db_connection": {:hex, :db_connection, "1.1.2", "2865c2a4bae0714e2213a0ce60a1b12d76a6efba0c51fbda59c9ab8d1accc7a8", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, optional: true]}]}, "db_connection": {:hex, :db_connection, "1.1.2", "2865c2a4bae0714e2213a0ce60a1b12d76a6efba0c51fbda59c9ab8d1accc7a8", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, optional: true]}]},
"decimal": {:hex, :decimal, "1.3.1", "157b3cedb2bfcb5359372a7766dd7a41091ad34578296e951f58a946fcab49c6", [:mix], []}, "decimal": {:hex, :decimal, "1.3.1", "157b3cedb2bfcb5359372a7766dd7a41091ad34578296e951f58a946fcab49c6", [:mix], []},
"deppie": {:hex, :deppie, "1.1.0", "cfb6fcee7dfb64eb78cb8505537971a0805131899326ad469ef10df04520f451", [:mix], []}, "deppie": {:hex, :deppie, "1.1.0", "cfb6fcee7dfb64eb78cb8505537971a0805131899326ad469ef10df04520f451", [:mix], []},

View File

@ -0,0 +1,10 @@
defmodule Pleroma.Repo.Migrations.AddFieldsToUsers do
use Ecto.Migration
def change do
alter table(:users) do
add :local, :boolean, default: true
add :info, :map
end
end
end

View File

@ -0,0 +1,15 @@
defmodule Pleroma.Repo.Migrations.CreateWebsubClientSubscription do
use Ecto.Migration
def change do
create table(:websub_client_subscriptions) do
add :topic, :string
add :secret, :string
add :valid_until, :naive_datetime
add :state, :string
add :subscribers, :map
timestamps()
end
end
end

View File

@ -0,0 +1,10 @@
defmodule Pleroma.Repo.Migrations.AddUserAndHub do
use Ecto.Migration
def change do
alter table(:websub_client_subscriptions) do
add :hub, :string
add :user_id, references(:users)
end
end
end

View File

@ -0,0 +1,8 @@
defmodule Pleroma.Repo.Migrations.AddIdContraintsToActivitiesAndObjects do
use Ecto.Migration
def change do
create index(:objects, ["(data->>\"id\")"], name: :objects_unique_apid_index)
create index(:activities, ["(data->>\"id\")"], name: :activities_unique_apid_index)
end
end

View File

@ -0,0 +1,10 @@
defmodule Pleroma.Repo.Migrations.AddIdContraintsToActivitiesAndObjectsPartTwo do
use Ecto.Migration
def change do
drop index(:objects, ["(data->>\"id\")"], name: :objects_unique_apid_index)
drop index(:activities, ["(data->>\"id\")"], name: :activities_unique_apid_index)
create unique_index(:objects, ["(data->>'id')"], name: :objects_unique_apid_index)
create unique_index(:activities, ["(data->>'id')"], name: :activities_unique_apid_index)
end
end

View File

@ -0,0 +1,11 @@
defmodule Pleroma.Repo.Migrations.AddLocalFieldToActivities do
use Ecto.Migration
def change do
alter table(:activities) do
add :local, :boolean, default: true
end
create index(:activities, [:local])
end
end

View File

@ -0,0 +1,7 @@
defmodule Pleroma.Repo.Migrations.AddUniqueIndexToAPID do
use Ecto.Migration
def change do
create unique_index(:users, [:ap_id])
end
end

View File

@ -15,4 +15,11 @@ test "returns activities by it's objects AP ids" do
assert activity == found_activity assert activity == found_activity
end end
test "returns the activity that created an object" do
activity = insert(:note_activity)
found_activity = Pleroma.Activity.get_create_activity_by_object_ap_id(activity.data["object"]["id"])
assert activity == found_activity
end
end end

508
test/fixtures/23211.atom vendored Normal file
View File

@ -0,0 +1,508 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-05-02T14:59:30+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom?max_id=2012090" rel="next" type="application/atom+xml"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2015260:2017-05-02T14:45:47+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by godemperorofdune: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; It's because your instance decided to be trap! lol.&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2015305"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T14:45:47+00:00</published>
<updated>2017-05-02T14:45:47+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:pawoo.net,2017-05-02:objectId=7397439:objectType=Status</id>
<title>New comment by godemperorofdune</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; It's because your instance decided to be trap! lol.&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://pawoo.net/users/God_Emperor_of_Dune/updates/2090090"/>
<status_net notice_id="2015260"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:pawoo.net,2017-05-02:objectId=7397439:objectType=Status" href="https://pawoo.net/users/God_Emperor_of_Dune/updates/2090090"></thr:in-reply-to>
<link rel="related" href="https://pawoo.net/users/God_Emperor_of_Dune/updates/2090090"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1035308"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1035308" local_id="1035308" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2015305.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2015305.atom"/>
<statusnet:notice_info local_id="2015305" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2015221:objectType=note</id>
<title>New note by lambadalambda</title>
<content type="html">Some script thinks I'm a mastodon server.&lt;br /&gt; &lt;br /&gt; [info] GET /api/v1/timelines/public&lt;br /&gt; [debug] Processing with Fallback.RedirectController.redirector/2&lt;br /&gt; Parameters: %{&amp;quot;limit&amp;quot; =&amp;gt; &amp;quot;40&amp;quot;, &amp;quot;path&amp;quot; =&amp;gt; [&amp;quot;api&amp;quot;, &amp;quot;v1&amp;quot;, &amp;quot;timelines&amp;quot;, &amp;quot;public&amp;quot;]}&lt;br /&gt; Pipelines: []</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2015221"/>
<status_net notice_id="2015221"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-02T14:40:50+00:00</published>
<updated>2017-05-02T14:40:50+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1035308"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1035308" local_id="1035308" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2015221.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2015221.atom"/>
<statusnet:notice_info local_id="2015221" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2014759:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://mstdn.io/users/mattskala&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Matthew Skala&quot;&gt;mattskala&lt;/a&gt; You and @&lt;a href=&quot;https://mastodon.social/users/kevinmarks&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Kevin Marks&quot;&gt;kevinmarks&lt;/a&gt; are not wrong, but my comment was a suggestion to users and admins: Don't use big instances, don't run big instances. Also, it's a secondary advice to devs: Don't add features that encourage big instances.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2014759"/>
<status_net notice_id="2014759"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-02T14:11:54+00:00</published>
<updated>2017-05-02T14:11:54+00:00</updated>
<thr:in-reply-to ref="tag:mstdn.io,2017-05-02:objectId=1316931:objectType=Status" href="https://mstdn.io/users/mattskala/updates/35698"></thr:in-reply-to>
<link rel="related" href="https://mstdn.io/users/mattskala/updates/35698"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1031866"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1031866" local_id="1031866" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/kevinmarks"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mstdn.io/users/mattskala"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014759.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014759.atom"/>
<statusnet:notice_info local_id="2014759" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2014684:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://mastodon.social/users/Ronkjeffries&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Ron K Jeffries social&quot;&gt;ronkjeffries&lt;/a&gt; @&lt;a href=&quot;https://xoxo.zone/users/KevinMarks&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Kevin Marks &quot;&gt;kevinmarks&lt;/a&gt; Usually people who run their own private instance just look at the timelines of other servers, follow a seed population and then go from there. This is of course hard on Mastodon, because it doesn't have a publicly visible timeline.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2014684"/>
<status_net notice_id="2014684"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-02T14:07:00+00:00</published>
<updated>2017-05-02T14:07:00+00:00</updated>
<thr:in-reply-to ref="tag:mastodon.social,2017-05-02:objectId=4883853:objectType=Status" href="https://mastodon.social/users/Ronkjeffries/updates/2221244"></thr:in-reply-to>
<link rel="related" href="https://mastodon.social/users/Ronkjeffries/updates/2221244"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1031866"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1031866" local_id="1031866" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://xoxo.zone/users/KevinMarks"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/Ronkjeffries"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014684.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014684.atom"/>
<statusnet:notice_info local_id="2014684" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2014584:2017-05-02T14:05:32+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by mattskala: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; It's reasonable to expect that instance sizes will obey a power-law distribution because that's what such things in nature nearly always do. If so, there'll necessarily be a few instances much larger than the others; even if most are small, the network both socially and technically has to be able to deal with the existence of the few large ones.&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2014659"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T14:05:32+00:00</published>
<updated>2017-05-02T14:05:32+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:mstdn.io,2017-05-02:objectId=1316931:objectType=Status</id>
<title>New comment by mattskala</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; It's reasonable to expect that instance sizes will obey a power-law distribution because that's what such things in nature nearly always do. If so, there'll necessarily be a few instances much larger than the others; even if most are small, the network both socially and technically has to be able to deal with the existence of the few large ones.&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://mstdn.io/users/mattskala/updates/35698"/>
<status_net notice_id="2014584"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:mstdn.io,2017-05-02:objectId=1316931:objectType=Status" href="https://mstdn.io/users/mattskala/updates/35698"></thr:in-reply-to>
<link rel="related" href="https://mstdn.io/users/mattskala/updates/35698"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1031866"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1031866" local_id="1031866" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014659.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014659.atom"/>
<statusnet:notice_info local_id="2014659" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013568:2017-05-02T14:05:29+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by kevinmarks: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; except instance populations will be power law distributed, and the problems for the tummlers are worse at scale&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2014657"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T14:05:29+00:00</published>
<updated>2017-05-02T14:05:29+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:xoxo.zone,2017-05-02:objectId=89478:objectType=Status</id>
<title>New comment by kevinmarks</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; except instance populations will be power law distributed, and the problems for the tummlers are worse at scale&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://xoxo.zone/users/KevinMarks/updates/1749"/>
<status_net notice_id="2013568"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:xoxo.zone,2017-05-02:objectId=89478:objectType=Status" href="https://xoxo.zone/users/KevinMarks/updates/1749"></thr:in-reply-to>
<link rel="related" href="https://xoxo.zone/users/KevinMarks/updates/1749"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1031866"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1031866" local_id="1031866" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014657.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014657.atom"/>
<statusnet:notice_info local_id="2014657" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2014060:2017-05-02T13:34:32+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by gcarregues: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Oh purée ! Ma vie en images !&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2014147"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T13:34:32+00:00</published>
<updated>2017-05-02T13:34:32+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:mastodon.etalab.gouv.fr,2017-05-02:objectId=55287:objectType=Status</id>
<title>New comment by gcarregues</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Oh purée ! Ma vie en images !&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://mastodon.etalab.gouv.fr/users/gcarregues/updates/4370"/>
<status_net notice_id="2014060"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:mastodon.etalab.gouv.fr,2017-05-02:objectId=55287:objectType=Status" href="https://mastodon.etalab.gouv.fr/users/gcarregues/updates/4370"></thr:in-reply-to>
<link rel="related" href="https://mastodon.etalab.gouv.fr/users/gcarregues/updates/4370"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034065"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034065" local_id="1034065" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014147.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2014147.atom"/>
<statusnet:notice_info local_id="2014147" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:note:2013573:2017-05-02T13:03:33+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by phildobangnz: also @&lt;a href=&quot;https://sealion.club/user/579&quot; class=&quot;h-card mention&quot; title=&quot;Sim Bot&quot;&gt;sim&lt;/a&gt; reminder you are awesome; don't even trip- u kewler than Tutankhamen's cucumber, fam. Okay, good night.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013702"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T13:03:33+00:00</published>
<updated>2017-05-02T13:03:33+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:sealion.club,2017-05-02:noticeId=3060818:objectType=note</id>
<title>New note by phildobangnz</title>
<content type="html">also @&lt;a href=&quot;https://sealion.club/user/579&quot; class=&quot;h-card mention&quot; title=&quot;Sim Bot&quot;&gt;sim&lt;/a&gt; reminder you are awesome; don't even trip- u kewler than Tutankhamen's cucumber, fam. Okay, good night.</content>
<link rel="alternate" type="text/html" href="https://sealion.club/notice/3060818"/>
<status_net notice_id="2013573"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:sealion.club,2017-05-02:noticeId=3060818:objectType=note" href="https://sealion.club/notice/3060818"></thr:in-reply-to>
<link rel="related" href="https://sealion.club/notice/3060818"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034282"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034282" local_id="1034282" ref="https://sealion.club/conversation/1633267">https://sealion.club/conversation/1633267</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013702.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013702.atom"/>
<statusnet:notice_info local_id="2013702" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2013586:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://xoxo.zone/users/KevinMarks&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Kevin Marks &quot;&gt;kevinmarks&lt;/a&gt; People can stay in their giant unmoderatable instances with meaningless public and federated timelines and experience constant federation drama if they want. I'll stay here with my 5 friends.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013586"/>
<status_net notice_id="2013586"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-02T12:54:59+00:00</published>
<updated>2017-05-02T12:54:59+00:00</updated>
<thr:in-reply-to ref="tag:xoxo.zone,2017-05-02:objectId=89478:objectType=Status" href="https://xoxo.zone/users/KevinMarks/updates/1749"></thr:in-reply-to>
<link rel="related" href="https://xoxo.zone/users/KevinMarks/updates/1749"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1031866"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1031866" local_id="1031866" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://xoxo.zone/users/KevinMarks"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013586.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013586.atom"/>
<statusnet:notice_info local_id="2013586" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:note:2013486:2017-05-02T12:46:48+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by fortune: There once was a dentist named Stone&lt;br /&gt; Who saw all his patients alone.&lt;br /&gt; In a fit of depravity&lt;br /&gt; He filled the wrong cavity,&lt;br /&gt; And my, how his practice has grown!</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013511"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T12:46:48+00:00</published>
<updated>2017-05-02T12:46:48+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.kawa-kun.com,2017-05-02:noticeId=1655658:objectType=note</id>
<title>New note by fortune</title>
<content type="html">There once was a dentist named Stone&lt;br /&gt; Who saw all his patients alone.&lt;br /&gt; In a fit of depravity&lt;br /&gt; He filled the wrong cavity,&lt;br /&gt; And my, how his practice has grown!</content>
<link rel="alternate" type="text/html" href="https://gs.kawa-kun.com/notice/1655658"/>
<status_net notice_id="2013486"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:gs.kawa-kun.com,2017-05-02:noticeId=1655658:objectType=note" href="https://gs.kawa-kun.com/notice/1655658"></thr:in-reply-to>
<link rel="related" href="https://gs.kawa-kun.com/notice/1655658"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034222"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034222" local_id="1034222" ref="https://gs.kawa-kun.com/conversation/714072">https://gs.kawa-kun.com/conversation/714072</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013511.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013511.atom"/>
<statusnet:notice_info local_id="2013511" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:note:2013365:2017-05-02T12:37:55+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by xj9: &lt;p&gt;&amp;gt; rollerblading to work&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013394"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T12:37:55+00:00</published>
<updated>2017-05-02T12:37:55+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:sunshinegardens.org,2017-05-02:objectId=61020:objectType=Status</id>
<title>New note by xj9</title>
<content type="html">&lt;p&gt;&amp;gt; rollerblading to work&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://sunshinegardens.org/users/xj9/updates/748"/>
<status_net notice_id="2013365"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:sunshinegardens.org,2017-05-02:objectId=61020:objectType=Status" href="https://sunshinegardens.org/users/xj9/updates/748"></thr:in-reply-to>
<link rel="related" href="https://sunshinegardens.org/users/xj9/updates/748"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034152"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034152" local_id="1034152" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=5a0e98612f634218">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=5a0e98612f634218</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013394.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013394.atom"/>
<statusnet:notice_info local_id="2013394" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013259:2017-05-02T12:29:03+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by cereal: @&lt;a href=&quot;https://gs.smuglo.li/user/28250&quot; class=&quot;h-card mention&quot; title=&quot;Bricky&quot;&gt;thatbrickster&lt;/a&gt; @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; But why?</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013267"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T12:29:03+00:00</published>
<updated>2017-05-02T12:29:03+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:sealion.club,2017-05-02:noticeId=3059985:objectType=comment</id>
<title>New comment by cereal</title>
<content type="html">@&lt;a href=&quot;https://gs.smuglo.li/user/28250&quot; class=&quot;h-card mention&quot; title=&quot;Bricky&quot;&gt;thatbrickster&lt;/a&gt; @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; But why?</content>
<link rel="alternate" type="text/html" href="https://sealion.club/notice/3059985"/>
<status_net notice_id="2013259"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:sealion.club,2017-05-02:noticeId=3059985:objectType=comment" href="https://sealion.club/notice/3059985"></thr:in-reply-to>
<link rel="related" href="https://sealion.club/notice/3059985"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034065"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034065" local_id="1034065" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013267.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013267.atom"/>
<statusnet:notice_info local_id="2013267" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013227:2017-05-02T12:24:27+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by thatbrickster: @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; install gentoo</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013230"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T12:24:27+00:00</published>
<updated>2017-05-02T12:24:27+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:gs.smuglo.li,2017-05-02:noticeId=2144296:objectType=comment</id>
<title>New comment by thatbrickster</title>
<content type="html">@&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; install gentoo</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/2144296"/>
<status_net notice_id="2013227"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:gs.smuglo.li,2017-05-02:noticeId=2144296:objectType=comment" href="https://gs.smuglo.li/notice/2144296"></thr:in-reply-to>
<link rel="related" href="https://gs.smuglo.li/notice/2144296"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034065"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034065" local_id="1034065" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013230.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013230.atom"/>
<statusnet:notice_info local_id="2013230" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013213:2017-05-02T12:22:53+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by dwmatiz: @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot;&gt;lambadalambda&lt;/a&gt; *unzips dick*</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013218"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T12:22:53+00:00</published>
<updated>2017-05-02T12:22:53+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:sealion.club,2017-05-02:noticeId=3059800:objectType=comment</id>
<title>New comment by dwmatiz</title>
<content type="html">@&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot;&gt;lambadalambda&lt;/a&gt; *unzips dick*</content>
<link rel="alternate" type="text/html" href="https://sealion.club/notice/3059800"/>
<status_net notice_id="2013213"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:sealion.club,2017-05-02:noticeId=3059800:objectType=comment" href="https://sealion.club/notice/3059800"></thr:in-reply-to>
<link rel="related" href="https://sealion.club/notice/3059800"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034065"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034065" local_id="1034065" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013218.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013218.atom"/>
<statusnet:notice_info local_id="2013218" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013199:2017-05-02T12:22:03+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by shpuld: @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; get #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://shitposter.club/tag/cofe&quot; rel=&quot;tag&quot;&gt;cofe&lt;/a&gt;&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013206"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T12:22:03+00:00</published>
<updated>2017-05-02T12:22:03+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-02:noticeId=2783524:objectType=comment</id>
<title>New comment by shpuld</title>
<content type="html">@&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; get #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://shitposter.club/tag/cofe&quot; rel=&quot;tag&quot;&gt;cofe&lt;/a&gt;&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2783524"/>
<status_net notice_id="2013199"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-02:noticeId=2783524:objectType=comment" href="https://shitposter.club/notice/2783524"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2783524"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034065"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034065" local_id="1034065" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013206.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013206.atom"/>
<statusnet:notice_info local_id="2013206" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2013185:objectType=note</id>
<title>New note by lambadalambda</title>
<content type="html">What now? &lt;a href=&quot;https://social.heldscal.la/file/e4822d95de677757ff50d49672a4046c83218b76c04a0ad5e5f1f0a9a9eb1a74.gif&quot; title=&quot;https://social.heldscal.la/file/e4822d95de677757ff50d49672a4046c83218b76c04a0ad5e5f1f0a9a9eb1a74.gif&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-422572&quot;&gt;https://social.heldscal.la/attachment/422572&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2013185"/>
<status_net notice_id="2013185"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-02T12:21:04+00:00</published>
<updated>2017-05-02T12:21:04+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1034065"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1034065" local_id="1034065" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" href="https://social.heldscal.la/file/e4822d95de677757ff50d49672a4046c83218b76c04a0ad5e5f1f0a9a9eb1a74.gif" type="image/gif" length="132349"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013185.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2013185.atom"/>
<statusnet:notice_info local_id="2013185" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:note:2012929:2017-05-02T12:01:25+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by drkmttr: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; I checked out No Agenda because I saw you mention it several time. Sadly, I wasn't impressed. I'm all about varying perspectives but Adam and John basically just sound like resentful curmudgeons. It seems like their shtick is basically playing devil's advocate to everything to arouse some discontent. Just my two cents. 😉&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2012940"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T12:01:25+00:00</published>
<updated>2017-05-02T12:01:25+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:mstdn.io,2017-05-02:objectId=1310093:objectType=Status</id>
<title>New note by drkmttr</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; I checked out No Agenda because I saw you mention it several time. Sadly, I wasn't impressed. I'm all about varying perspectives but Adam and John basically just sound like resentful curmudgeons. It seems like their shtick is basically playing devil's advocate to everything to arouse some discontent. Just my two cents. 😉&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://mstdn.io/users/drkmttr/updates/35653"/>
<status_net notice_id="2012929"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:mstdn.io,2017-05-02:objectId=1310093:objectType=Status" href="https://mstdn.io/users/drkmttr/updates/35653"></thr:in-reply-to>
<link rel="related" href="https://mstdn.io/users/drkmttr/updates/35653"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1033892"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1033892" local_id="1033892" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2f329b4eb20e83e2">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2f329b4eb20e83e2</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012940.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012940.atom"/>
<statusnet:notice_info local_id="2012940" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2012336:2017-05-02T11:06:42+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by clacke: @&lt;a href=&quot;https://mastodon.org.uk/users/dick_turpin&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;dick_turpin&quot;&gt;dickturpin&lt;/a&gt; @&lt;a href=&quot;http://quitter.se/user/113503&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Luke&quot;&gt;luke&lt;/a&gt; Oh no, I miss being irritated by you, it helps me understand myself and others. Also it builds character. :-)&lt;br /&gt; &lt;br /&gt; So if this is not federation because you can't follow all of online mankind, what should we call it? Proto-federated? Pre-federated?&lt;br /&gt; &lt;br /&gt; The term has been used decades ago for just one Microsoft Active Directory domain cross-certifying the root of another, by mutual agreement. I don't see how it's any less relevant to opportunistic federation between open servers on an open internet.&lt;br /&gt; &lt;br /&gt; I'm not saying we should be satisfied, I'm just saying that &quot;federate&quot; is a useful word and to build a big system we need to start with a small one. And focus on the things we *can* change, like helping the OStatus network grow and making the tools more useful.&lt;br /&gt; &lt;br /&gt; Saying that the network's ideals have failed because other networks aren't joining is doing neither of that.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2012341"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T11:06:42+00:00</published>
<updated>2017-05-02T11:06:42+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2012336:objectType=comment</id>
<title>New comment by clacke</title>
<content type="html">@&lt;a href=&quot;https://mastodon.org.uk/users/dick_turpin&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;dick_turpin&quot;&gt;dickturpin&lt;/a&gt; @&lt;a href=&quot;http://quitter.se/user/113503&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Luke&quot;&gt;luke&lt;/a&gt; Oh no, I miss being irritated by you, it helps me understand myself and others. Also it builds character. :-)&lt;br /&gt; &lt;br /&gt; So if this is not federation because you can't follow all of online mankind, what should we call it? Proto-federated? Pre-federated?&lt;br /&gt; &lt;br /&gt; The term has been used decades ago for just one Microsoft Active Directory domain cross-certifying the root of another, by mutual agreement. I don't see how it's any less relevant to opportunistic federation between open servers on an open internet.&lt;br /&gt; &lt;br /&gt; I'm not saying we should be satisfied, I'm just saying that &amp;quot;federate&amp;quot; is a useful word and to build a big system we need to start with a small one. And focus on the things we *can* change, like helping the OStatus network grow and making the tools more useful.&lt;br /&gt; &lt;br /&gt; Saying that the network's ideals have failed because other networks aren't joining is doing neither of that.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2012336"/>
<status_net notice_id="2012336"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:social.heldscal.la,2017-05-02:noticeId=2012336:objectType=comment" href="https://social.heldscal.la/notice/2012336"></thr:in-reply-to>
<link rel="related" href="https://social.heldscal.la/notice/2012336"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1016421"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1016421" local_id="1016421" ref="https://s.wefamlee.be/conversation/16478">https://s.wefamlee.be/conversation/16478</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012341.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012341.atom"/>
<statusnet:notice_info local_id="2012341" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-02:fave:23211:comment:2011332:2017-05-02T10:37:40+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=mKLizztikRk&quot; title=&quot;https://www.youtube.com/watch?v=mKLizztikRk&quot; class=&quot;attachment&quot; rel=&quot;nofollow&quot;&gt;https://www.youtube.com/watch?v=mKLizztikRk&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2012148"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-02T10:37:40+00:00</published>
<updated>2017-05-02T10:37:40+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-02:noticeId=2781833:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=mKLizztikRk&quot; title=&quot;https://www.youtube.com/watch?v=mKLizztikRk&quot; class=&quot;attachment&quot; rel=&quot;nofollow&quot;&gt;https://www.youtube.com/watch?v=mKLizztikRk&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2781833"/>
<status_net notice_id="2011332"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-02:noticeId=2781833:objectType=comment" href="https://shitposter.club/notice/2781833"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2781833"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1032783"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1032783" local_id="1032783" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=11d8b8c27d9513ec">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=11d8b8c27d9513ec</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012148.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012148.atom"/>
<statusnet:notice_info local_id="2012148" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2012145:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://sealion.club/user/186&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;I'M CEREAL U GUISE&quot;&gt;cereal&lt;/a&gt; ? No, you don't even need the identity servers for federation.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2012145"/>
<status_net notice_id="2012145"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-02T10:37:33+00:00</published>
<updated>2017-05-02T10:37:33+00:00</updated>
<thr:in-reply-to ref="tag:sealion.club,2017-05-02:noticeId=3056001:objectType=comment" href="https://sealion.club/notice/3056001"></thr:in-reply-to>
<link rel="related" href="https://sealion.club/notice/3056001"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1033277"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1033277" local_id="1033277" ref="https://sealion.club/conversation/1629037">https://sealion.club/conversation/1629037</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://sealion.club/user/186"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012145.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2012145.atom"/>
<statusnet:notice_info local_id="2012145" source="Pleroma FE"></statusnet:notice_info>
</entry>
</feed>

65
test/fixtures/favorite.xml vendored Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-05-05T09:12:53+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061828"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T09:12:50+00:00</published>
<updated>2017-05-05T09:12:50+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827873"/>
<status_net notice_id="2061643"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" href="https://shitposter.club/notice/2827873"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827873"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061781"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061781" local_id="1061781" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061828.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061828.atom"/>
<statusnet:notice_info local_id="2061828" source="unknown"></statusnet:notice_info>
</entry>
</feed>

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-05-05T09:12:53+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061828"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T09:12:50+00:00</published>
<updated>2017-05-05T09:12:50+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>localid</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</content>
<status_net notice_id="2061643"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" href="https://shitposter.club/notice/2827873"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827873"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061781"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061781" local_id="1061781" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061828.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061828.atom"/>
<statusnet:notice_info local_id="2061828" source="unknown"></statusnet:notice_info>
</entry>
</feed>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>http://gs.example.org:4040/index.php/user/1</Subject>
<Alias>acct:lambda@gs.example.org</Alias>
<Alias>http://gs.example.org/index.php/lambda</Alias>
<Alias>http://gs.example.org/lambda</Alias>
<Link rel="http://webfinger.net/rel/profile-page" type="text/html" href="http://gs.example.org/index.php/lambda"/>
<Link rel="http://gmpg.org/xfn/11" type="text/html" href="http://gs.example.org/index.php/lambda"/>
<Link rel="describedby" type="application/rdf+xml" href="http://gs.example.org/index.php/lambda/foaf"/>
<Link rel="http://apinamespace.org/atom" type="application/atomsvc+xml" href="http://gs.example.org/index.php/api/statusnet/app/service/lambda.xml"/>
<Link rel="http://apinamespace.org/twitter" href="http://gs.example.org/index.php/api/"/>
<Link rel="http://specs.openid.net/auth/2.0/provider" href="http://gs.example.org:4040/index.php/lambda"/>
<Link rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/user_timeline/1.atom"/>
<Link rel="magic-public-key" href="data:application/magic-public-key,RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwQhh-1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB"/>
<Link rel="salmon" href="http://gs.example.org/index.php/main/salmon/user/1"/>
<Link rel="http://salmon-protocol.org/ns/salmon-replies" href="http://gs.example.org/index.php/main/salmon/user/1"/>
<Link rel="http://salmon-protocol.org/ns/salmon-mention" href="http://gs.example.org/index.php/main/salmon/user/1"/>
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="http://gs.example.org/index.php/main/ostatussub?profile={uri}"/>
</XRD>

View File

@ -0,0 +1,460 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.2.0-beta4">GNU social</generator>
<id>http://gs.example.org/index.php/api/statuses/user_timeline/1.atom</id>
<title>lambda timeline</title>
<subtitle>Updates from lambda on gs.example.org!</subtitle>
<logo>http://gs.example.org/theme/neo-gnu/default-avatar-profile.png</logo>
<updated>2017-05-05T12:09:57+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>http://gs.example.org:4040/index.php/user/1</uri>
<name>lambda</name>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/lambda"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="http://gs.example.org/theme/neo-gnu/default-avatar-profile.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://gs.example.org/theme/neo-gnu/default-avatar-stream.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="http://gs.example.org/theme/neo-gnu/default-avatar-mini.png"/>
<poco:preferredUsername>lambda</poco:preferredUsername>
<poco:displayName>lambda</poco:displayName>
<followers url="http://gs.example.org/index.php/lambda/subscribers"></followers>
<statusnet:profile_info local_id="1"></statusnet:profile_info>
</author>
<link href="http://gs.example.org/index.php/lambda" rel="alternate" type="text/html"/>
<link href="http://gs.example.org/index.php/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="http://gs.example.org/index.php/api/statuses/user_timeline/1.atom?max_id=34" rel="next" type="application/atom+xml"/>
<link href="http://gs.example.org/index.php/main/push/hub" rel="hub"/>
<link href="http://gs.example.org/index.php/main/salmon/user/1" rel="salmon"/>
<link href="http://gs.example.org/index.php/main/salmon/user/1" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="http://gs.example.org/index.php/main/salmon/user/1" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="http://gs.example.org/index.php/api/statuses/user_timeline/1.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:gs.example.org,2017-05-04:noticeId=84:objectType=note</id>
<title>lambda repeated a notice by lambda2</title>
<content type="html">RT @&lt;a href=&quot;http://gs.example.org/index.php/user/7&quot; class=&quot;h-card mention&quot;&gt;lambda2&lt;/a&gt; Hello!</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/84"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-05-04T16:38:50+00:00</published>
<updated>2017-05-04T16:38:50+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>tag:gs.example.org,2017-05-01:noticeId=67:objectType=note</id>
<title></title>
<content type="html">Hello!</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/67"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-01T08:41:04+00:00</published>
<updated>2017-05-01T08:41:04+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>http://gs.example.org/index.php/user/7</uri>
<name>lambda2</name>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/lambda2"/>
<link rel="avatar" type="image/png" media:width="270" media:height="270" href="http://gs.example.org/avatar/7-270-20170501084053.png"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="http://gs.example.org/avatar/7-96-20170501084054.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://gs.example.org/avatar/7-48-20170501084104.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="http://gs.example.org/avatar/7-24-20170501084104.png"/>
<poco:preferredUsername>lambda2</poco:preferredUsername>
<poco:displayName>lambda2</poco:displayName>
<followers url="http://gs.example.org/index.php/lambda2/subscribers"></followers>
<statusnet:profile_info local_id="7"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org,2017-05-01:noticeId=67:objectType=note</id>
<title>New note by lambda2</title>
<content type="html">Hello!</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/67"/>
<status_net notice_id="67"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417"/>
<ostatus:conversation>tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>http://gs.example.org/index.php/api/statuses/user_timeline/7.atom</id>
<title>lambda2</title>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/lambda2"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/user_timeline/7.atom"/>
<link rel="license" href="https://creativecommons.org/licenses/by/3.0/"/>
<icon>http://gs.example.org/avatar/7-96-20170501084054.png</icon>
<updated>2017-05-01T16:33:10+00:00</updated>
</source>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/67.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/67.atom"/>
</activity:object>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417"/>
<ostatus:conversation>tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/84.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/84.atom"/>
<statusnet:notice_info local_id="84" source="web" repeat_of="67"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org,2017-04-30:noticeId=63:objectType=note</id>
<title>New note by lambda</title>
<content type="html">what now?</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/63"/>
<status_net notice_id="63"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-30T10:09:57+00:00</published>
<updated>2017-04-30T10:09:57+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/477d8933-7591-4755-ba7a-2c34073ddc3c" href="http://pleroma.example.org:4000/objects/477d8933-7591-4755-ba7a-2c34073ddc3c"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/477d8933-7591-4755-ba7a-2c34073ddc3c"/>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b"/>
<ostatus:conversation>tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/63.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/63.atom"/>
<statusnet:notice_info local_id="63" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org,2017-04-30:noticeId=61:objectType=note</id>
<title>New note by lambda</title>
<content type="html">@&lt;a href=&quot;http://pleroma.example.org:4000/users/lain5&quot; class=&quot;h-card mention&quot;&gt;lain5&lt;/a&gt; Hello!</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/61"/>
<status_net notice_id="61"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-30T10:07:26+00:00</published>
<updated>2017-04-30T10:07:26+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b"/>
<ostatus:conversation>tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/61.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/61.atom"/>
<statusnet:notice_info local_id="61" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org,2017-04-29:noticeId=59:objectType=note</id>
<title>New note by lambda</title>
<content type="html">ey</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/59"/>
<status_net notice_id="59"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-29T17:04:59+00:00</published>
<updated>2017-04-29T17:04:59+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-04-29:objectType=thread:nonce=4cc42c2c61a0f4bd"/>
<ostatus:conversation>tag:gs.example.org,2017-04-29:objectType=thread:nonce=4cc42c2c61a0f4bd</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/59.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/59.atom"/>
<statusnet:notice_info local_id="59" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org,2017-04-29:noticeId=58:objectType=note</id>
<title>New note by lambda</title>
<content type="html">Another one.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/58"/>
<status_net notice_id="58"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-29T17:02:47+00:00</published>
<updated>2017-04-29T17:02:47+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-04-29:objectType=thread:nonce=53e9b8f1d6d38d13"/>
<ostatus:conversation>tag:gs.example.org,2017-04-29:objectType=thread:nonce=53e9b8f1d6d38d13</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/58.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/58.atom"/>
<statusnet:notice_info local_id="58" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org,2017-04-29:noticeId=57:objectType=note</id>
<title>New note by lambda</title>
<content type="html">Let's see if this comes over.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/57"/>
<status_net notice_id="57"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-29T17:01:39+00:00</published>
<updated>2017-04-29T17:01:39+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-04-29:objectType=thread:nonce=238a7bd3ffc7c9cc"/>
<ostatus:conversation>tag:gs.example.org,2017-04-29:objectType=thread:nonce=238a7bd3ffc7c9cc</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/57.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/57.atom"/>
<statusnet:notice_info local_id="57" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org,2017-04-29:noticeId=56:objectType=note</id>
<title>New note by lambda</title>
<content type="html">@&lt;a href=&quot;http://pleroma.example.org:4000/users/lain5&quot; class=&quot;h-card mention&quot;&gt;lain5&lt;/a&gt; Hey!</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/56"/>
<status_net notice_id="56"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-29T16:38:13+00:00</published>
<updated>2017-04-29T16:38:13+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org,2017-04-29:objectType=thread:nonce=2629d3a398171b0f"/>
<ostatus:conversation>tag:gs.example.org,2017-04-29:objectType=thread:nonce=2629d3a398171b0f</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/56.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/56.atom"/>
<statusnet:notice_info local_id="56" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=55:objectType=note</id>
<title>New note by lambda</title>
<content type="html">hey.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/55"/>
<status_net notice_id="55"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:16:13+00:00</published>
<updated>2017-04-25T18:16:13+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/55bce8fc-b423-46b1-af71-3759ab4670bc" href="http://pleroma.example.org:4000/objects/55bce8fc-b423-46b1-af71-3759ab4670bc"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/55bce8fc-b423-46b1-af71-3759ab4670bc"/>
<link rel="ostatus:conversation" href="http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0"/>
<ostatus:conversation>http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/55.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/55.atom"/>
<statusnet:notice_info local_id="55" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=53:objectType=note</id>
<title>New note by lambda</title>
<content type="html">and this?</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/53"/>
<status_net notice_id="53"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:14:34+00:00</published>
<updated>2017-04-25T18:14:34+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/875b219f-8ced-4948-832e-137a06a88031" href="http://pleroma.example.org:4000/objects/875b219f-8ced-4948-832e-137a06a88031"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/875b219f-8ced-4948-832e-137a06a88031"/>
<link rel="ostatus:conversation" href="http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09"/>
<ostatus:conversation>http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/53.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/53.atom"/>
<statusnet:notice_info local_id="53" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=52:objectType=note</id>
<title>New note by lambda</title>
<content type="html">yeah it does :)</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/52"/>
<status_net notice_id="52"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:13:31+00:00</published>
<updated>2017-04-25T18:13:31+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/9c0430b4-ccb3-4e2c-9c50-ee345ebe18fc" href="http://pleroma.example.org:4000/objects/9c0430b4-ccb3-4e2c-9c50-ee345ebe18fc"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/9c0430b4-ccb3-4e2c-9c50-ee345ebe18fc"/>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/52.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/52.atom"/>
<statusnet:notice_info local_id="52" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=50:objectType=note</id>
<title>New note by lambda</title>
<content type="html">@&lt;a href=&quot;http://pleroma.example.org:4000/users/lain5&quot; class=&quot;h-card mention&quot;&gt;lain5&lt;/a&gt; Let's try with one that originates here!</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/50"/>
<status_net notice_id="50"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:10:28+00:00</published>
<updated>2017-04-25T18:10:28+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/50.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/50.atom"/>
<statusnet:notice_info local_id="50" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=48:objectType=note</id>
<title>New note by lambda</title>
<content type="html">works?</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/48"/>
<status_net notice_id="48"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:08:44+00:00</published>
<updated>2017-04-25T18:08:44+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/8664caae-1cd6-4c1f-b1d7-27bd4ce76966" href="http://pleroma.example.org:4000/objects/8664caae-1cd6-4c1f-b1d7-27bd4ce76966"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/8664caae-1cd6-4c1f-b1d7-27bd4ce76966"/>
<link rel="ostatus:conversation" href="http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09"/>
<ostatus:conversation>http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/48.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/48.atom"/>
<statusnet:notice_info local_id="48" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=46:objectType=note</id>
<title>New note by lambda</title>
<content type="html">Let's send you an answer.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/46"/>
<status_net notice_id="46"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:05:31+00:00</published>
<updated>2017-04-25T18:05:31+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/89ec2578-3f05-4b04-99b8-3e40f1282491" href="http://pleroma.example.org:4000/objects/89ec2578-3f05-4b04-99b8-3e40f1282491"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/89ec2578-3f05-4b04-99b8-3e40f1282491"/>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=73c7bcf6658f7ce3"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=73c7bcf6658f7ce3</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/46.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/46.atom"/>
<statusnet:notice_info local_id="46" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=44:objectType=note</id>
<title>New note by lambda</title>
<content type="html">Hey.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/44"/>
<status_net notice_id="44"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:01:09+00:00</published>
<updated>2017-04-25T18:01:09+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1" href="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1"/>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/44.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/44.atom"/>
<statusnet:notice_info local_id="44" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=43:objectType=note</id>
<title>New note by lambda</title>
<content type="html">What's coming to you?</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/43"/>
<status_net notice_id="43"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T17:58:41+00:00</published>
<updated>2017-04-25T17:58:41+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1" href="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1"/>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/43.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/43.atom"/>
<statusnet:notice_info local_id="43" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=42:objectType=note</id>
<title>New note by lambda</title>
<content type="html">Now this is podracing.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/42"/>
<status_net notice_id="42"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T17:57:40+00:00</published>
<updated>2017-04-25T17:57:40+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1" href="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/5047e0a8-2302-483a-a420-ae835f5ca5a1"/>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/42.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/42.atom"/>
<statusnet:notice_info local_id="42" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=39:objectType=note</id>
<title>New note by lambda</title>
<content type="html">Sure looks like it!</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/39"/>
<status_net notice_id="39"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T17:48:27+00:00</published>
<updated>2017-04-25T17:48:27+00:00</updated>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/c9fe09c2-7504-46d2-a4f6-44a708455e6f" href="http://pleroma.example.org:4000/objects/c9fe09c2-7504-46d2-a4f6-44a708455e6f"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/c9fe09c2-7504-46d2-a4f6-44a708455e6f"/>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=4c6114a75bb4cea5"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=4c6114a75bb4cea5</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/39.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/39.atom"/>
<statusnet:notice_info local_id="39" source="web"></statusnet:notice_info>
</entry>
<entry>
<id>tag:gs.example.org:4040,2017-04-25:subscription:1:person:6:2017-04-25T17:47:47+00:00</id>
<title>lambda (lambda)'s status on Tuesday, 25-Apr-2017 17:47:47 UTC</title>
<content type="html">&lt;a href=&quot;http://gs.example.org:4040/index.php/lambda&quot;&gt;lambda&lt;/a&gt; started following &lt;a href=&quot;http://pleroma.example.org:4000/users/lain5&quot;&gt;l&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/37"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-25T17:47:47+00:00</published>
<updated>2017-04-25T17:47:47+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>http://pleroma.example.org:4000/users/lain5</id>
<title>l</title>
<summary>lambadalambda</summary>
<link rel="alternate" type="text/html" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://gs.example.org/avatar/6-original-20170425174605.png"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="http://gs.example.org/avatar/6-96-20170425174605.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://gs.example.org/avatar/6-original-20170425174605.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="http://gs.example.org/avatar/6-24-20170425174747.png"/>
<poco:preferredUsername>lain5</poco:preferredUsername>
<poco:displayName>l</poco:displayName>
<poco:note>lambadalambda</poco:note>
</activity:object>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=119acad17515314c"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=119acad17515314c</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/37.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/37.atom"/>
<statusnet:notice_info local_id="37" source="activity"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=36:objectType=note</id>
<title>New note by lambda</title>
<content type="html">@&lt;a href=&quot;http://pleroma.example.org:4000/users/lain5&quot; class=&quot;h-card mention&quot;&gt;lain5&lt;/a&gt; Hey, how are you?</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/36"/>
<status_net notice_id="36"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T17:46:22+00:00</published>
<updated>2017-04-25T17:46:22+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=9c5ec19a18191372"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=9c5ec19a18191372</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/36.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/36.atom"/>
<statusnet:notice_info local_id="36" source="web"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=35:objectType=note</id>
<title>New note by lambda</title>
<content type="html">@lain5@pleroma.example.org does this not work?</content>
<link rel="alternate" type="text/html" href="http://gs.example.org/index.php/notice/35"/>
<status_net notice_id="35"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T17:42:31+00:00</published>
<updated>2017-04-25T17:42:31+00:00</updated>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=fc841d7f52caa363"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=fc841d7f52caa363</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/35.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org/index.php/api/statuses/show/35.atom"/>
<statusnet:notice_info local_id="35" source="web"></statusnet:notice_info>
</entry>
</feed>

View File

@ -0,0 +1,464 @@
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:mastodon="http://mastodon.social/schema/1.0">
<id>https://mastodon.social/users/lambadalambda.atom</id>
<title>Critical Value</title>
<subtitle></subtitle>
<updated>2017-04-16T21:47:25Z</updated>
<logo>https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif</logo>
<author>
<id>https://mastodon.social/users/lambadalambda</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.social/users/lambadalambda</uri>
<name>lambadalambda</name>
<email>lambadalambda@mastodon.social</email>
<link rel="alternate" type="text/html" href="https://mastodon.social/@lambadalambda"/>
<link rel="avatar" type="image/gif" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Critical Value</poco:displayName>
<mastodon:scope>public</mastodon:scope>
</author>
<link rel="alternate" type="text/html" href="https://mastodon.social/@lambadalambda"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda.atom"/>
<link rel="next" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda.atom?max_id=1616358"/>
<link rel="hub" href="https://mastodon.social/api/push"/>
<link rel="salmon" href="https://mastodon.social/api/salmon/264"/>
<entry>
<id>tag:mastodon.social,2017-05-04:objectId=4991300:objectType=Status</id>
<published>2017-05-04T14:10:30Z</published>
<updated>2017-05-04T14:10:30Z</updated>
<title>Delete</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/delete</activity:verb>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2247090"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2247090.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-04:objectId=4980289:objectType=Status</id>
<published>2017-05-04T07:43:23Z</published>
<updated>2017-05-04T07:43:23Z</updated>
<title>Delete</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/delete</activity:verb>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2244602"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2244602.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-03:objectId=4952899:objectType=Status</id>
<published>2017-05-03T17:26:43Z</published>
<updated>2017-05-03T17:26:43Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; OK!!&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2237124"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2237124.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/5e755d92-f0ee-432f-8c17-590962aea59c" href=""/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-03:objectId=4952810:objectType=Status</id>
<published>2017-05-03T17:24:34Z</published>
<updated>2017-05-03T17:24:34Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="el">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; yeah :)&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2237089"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2237089.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/32ff0743-236a-41e5-81c5-a3211088e741" href=""/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-03:objectId=4950388:objectType=Status</id>
<published>2017-05-03T16:22:00Z</published>
<updated>2017-05-03T16:22:00Z</updated>
<title>lambadalambda shared a status by lambadalambda@social.heldscal.la</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:social.heldscal.la,2017-05-03:noticeId=2030733:objectType=note</id>
<published>2017-05-03T12:29:20Z</published>
<updated>2017-05-03T12:29:31Z</updated>
<title>New status by lambadalambda@social.heldscal.la</title>
<author>
<id>https://social.heldscal.la/user/23211</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<email>lambadalambda@social.heldscal.la</email>
<summary type="html">Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/236/original/23211-original-20170416114255.jpeg"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">Time for work. &lt;a href="https://social.heldscal.la/file/953c117a1e7e4c763755d2ac29cf1aae08e025599f4a4cc11ddff4082c07f969.jpg"&gt;https://social.heldscal.la/attachment/120552&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" type="image/jpeg" length="383072" href="https://files.mastodon.social/media_attachments/files/000/391/513/original/953c117a1e7e4c763755d2ac29cf1aae08e025599f4a4cc11ddff4082c07f969.jpg"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2030733"/>
</activity:object>
<content type="html" xml:lang="en">Time for work. &lt;a href="https://social.heldscal.la/file/953c117a1e7e4c763755d2ac29cf1aae08e025599f4a4cc11ddff4082c07f969.jpg"&gt;https://social.heldscal.la/attachment/120552&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2236405"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2236405.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-03:objectId=4934452:objectType=Status</id>
<published>2017-05-03T08:21:09Z</published>
<updated>2017-05-03T08:21:09Z</updated>
<title>lambadalambda shared a status by lain@pleroma.soykaf.com</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193</id>
<published>2017-05-03T08:04:44Z</published>
<updated>2017-05-03T08:05:52Z</updated>
<title>New status by lain@pleroma.soykaf.com</title>
<author>
<id>https://pleroma.soykaf.com/users/lain</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://pleroma.soykaf.com/users/lain</uri>
<name>lain</name>
<email>lain@pleroma.soykaf.com</email>
<summary type="html">Test account</summary>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/125/902/original/6B3AFC74ACA841B24CFB94DB9044C84EDE6AFF31C71718B023D413DAED09A68E.jpeg"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lain</poco:preferredUsername>
<poco:displayName>Lain Iwakura</poco:displayName>
<poco:note>Test account</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">Added returning the entries as xml... let's see if the mastodon hammering stops now.</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href=""/>
</activity:object>
<content type="html" xml:lang="en">Added returning the entries as xml... let's see if the mastodon hammering stops now.</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2232660"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2232660.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-02:objectId=4905499:objectType=Status</id>
<published>2017-05-02T19:34:21Z</published>
<updated>2017-05-02T19:34:21Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="ru">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; yay!&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2226006"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2226006.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/b79fa9cd-1d27-448a-844f-79f306bc75c9" href=""/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-02:objectId=4905442:objectType=Status</id>
<published>2017-05-02T19:33:33Z</published>
<updated>2017-05-02T19:33:33Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="fa">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; so?&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2225992"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2225992.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/233a878a-974e-4e75-b1c8-aa7657f561fc" href=""/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-02:objectId=4901603:objectType=Status</id>
<published>2017-05-02T18:33:06Z</published>
<updated>2017-05-02T18:33:06Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="el">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; hey&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2224923"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2224923.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/c237d966-ac75-4fe3-a87a-d89d71a3a7a4" href=""/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-01:objectId=4836720:objectType=Status</id>
<published>2017-05-01T18:52:16Z</published>
<updated>2017-05-01T18:52:16Z</updated>
<title>lambadalambda shared a status by lain@pleroma.soykaf.com</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>https://pleroma.soykaf.com/objects/7b41bb51-9aba-436a-82d9-dd3f5aca98c9</id>
<published>2017-05-01T18:50:54Z</published>
<updated>2017-05-01T18:50:57Z</updated>
<title>New status by lain@pleroma.soykaf.com</title>
<author>
<id>https://pleroma.soykaf.com/users/lain</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://pleroma.soykaf.com/users/lain</uri>
<name>lain</name>
<email>lain@pleroma.soykaf.com</email>
<summary type="html">Test account</summary>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/125/902/original/6B3AFC74ACA841B24CFB94DB9044C84EDE6AFF31C71718B023D413DAED09A68E.jpeg"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lain</poco:preferredUsername>
<poco:displayName>Lain Iwakura</poco:displayName>
<poco:note>Test account</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;a href="https://mastodon.social/users/lambadalambda"&gt;@lambadalambda@mastodon.social&lt;/a&gt; you're an all-star.</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/lambadalambda"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href=""/>
<thr:in-reply-to ref="tag:mastodon.social,2017-05-01:objectId=4836142:objectType=Status" href="https://mastodon.social/@lambadalambda/4836142"/>
</activity:object>
<content type="html" xml:lang="en">&lt;a href="https://mastodon.social/users/lambadalambda"&gt;@lambadalambda@mastodon.social&lt;/a&gt; you're an all-star.</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2211632"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2211632.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-01:objectId=4836142:objectType=Status</id>
<published>2017-05-01T18:38:47Z</published>
<updated>2017-05-01T18:38:47Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="ru">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Hey now!&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2211518"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2211518.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/ffae4bea-00a3-4cef-8076-4ee4d448cb46" href=""/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-01:objectId=4836055:objectType=Status</id>
<published>2017-05-01T18:37:04Z</published>
<updated>2017-05-01T18:37:04Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="el">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; hello&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2211496"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2211496.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/ffae4bea-00a3-4cef-8076-4ee4d448cb46" href=""/>
</entry>
<entry>
<id>tag:mastodon.social,2017-05-01:objectId=4834850:objectType=Status</id>
<published>2017-05-01T18:10:43Z</published>
<updated>2017-05-01T18:10:43Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="el">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Hey!&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2211256"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2211256.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-29:objectId=4694455:objectType=Status</id>
<published>2017-04-29T18:39:12Z</published>
<updated>2017-04-29T18:39:12Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="ru">&lt;p&gt;@lain@pleroma.soykaf.com What&amp;apos;s up?&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2189604"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2189604.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-29:objectId=4694384:objectType=Status</id>
<published>2017-04-29T18:37:32Z</published>
<updated>2017-04-29T18:37:32Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="fr">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://social.heldscal.la/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Hey.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://social.heldscal.la/user/37181"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2189588"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2189588.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-07:objectId=1874242:objectType=Status</id>
<published>2017-04-07T11:02:56Z</published>
<updated>2017-04-07T11:02:56Z</updated>
<title>lambadalambda shared a status by 0xroy@social.wxcafe.net</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:social.wxcafe.net,2017-04-07:objectId=72554:objectType=Status</id>
<published>2017-04-07T11:01:59Z</published>
<updated>2017-04-07T11:02:00Z</updated>
<title>New status by 0xroy@social.wxcafe.net</title>
<author>
<id>https://social.wxcafe.net/users/0xroy</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.wxcafe.net/users/0xroy</uri>
<name>0xroy</name>
<email>0xroy@social.wxcafe.net</email>
<summary type="html">ta caution weeb | discussions privées : &lt;a href="https://%F0%9F%92%8C.0xroy.me"&gt;&lt;span class="invisible"&gt;https://&lt;/span&gt;&lt;span class=""&gt;💌.0xroy.me&lt;/span&gt;&lt;span class="invisible"&gt;&lt;/span&gt;&lt;/a&gt;</summary>
<link rel="alternate" type="text/html" href="https://social.wxcafe.net/@0xroy"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/036/953/original/20068e41d0310172.jpg"/>
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://files.mastodon.social/accounts/headers/000/036/953/original/2229d0e3f129fe8c.jpg"/>
<poco:preferredUsername>0xroy</poco:preferredUsername>
<poco:displayName>「R O Y 🍵 B O S」</poco:displayName>
<poco:note>ta caution weeb | discussions privées : https://💌.0xroy.me</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;someone pls eli5 matrix (protocol) and riot&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://social.wxcafe.net/users/0xroy/updates/4510"/>
</activity:object>
<content type="html" xml:lang="en">&lt;p&gt;someone pls eli5 matrix (protocol) and riot&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1689208"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1689208.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-06:objectId=1768247:objectType=Status</id>
<published>2017-04-06T11:10:19Z</published>
<updated>2017-04-06T11:10:19Z</updated>
<title>lambadalambda shared a status by areyoutoo@mastodon.xyz</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:mastodon.xyz,2017-04-05:objectId=133327:objectType=Status</id>
<published>2017-04-05T17:36:41Z</published>
<updated>2017-04-05T18:12:14Z</updated>
<title>New status by areyoutoo@mastodon.xyz</title>
<author>
<id>https://mastodon.xyz/users/areyoutoo</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.xyz/users/areyoutoo</uri>
<name>areyoutoo</name>
<email>areyoutoo@mastodon.xyz</email>
<summary type="html">devops | retired gamedev | always boost puppy pics</summary>
<link rel="alternate" type="text/html" href="https://mastodon.xyz/@areyoutoo"/>
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/047/888/original/5ce2e132d4c18d65.png"/>
<link rel="header" type="image/png" media:width="700" media:height="335" href="https://files.mastodon.social/accounts/headers/000/047/888/original/missing.png"/>
<poco:preferredUsername>areyoutoo</poco:preferredUsername>
<poco:displayName>Raw Butter</poco:displayName>
<poco:note>devops | retired gamedev | always boost puppy pics</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;Some UX thoughts for &lt;a href="https://mastodon.xyz/tags/mastodev"&gt;#&lt;span&gt;mastodev&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.&lt;/p&gt;&lt;p&gt;- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.&lt;/p&gt;&lt;p&gt;I probably don't know enough web frontend to help, but it might be fun to try.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<category term="mastodev"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.xyz/users/areyoutoo/updates/36028"/>
</activity:object>
<content type="html" xml:lang="en">&lt;p&gt;Some UX thoughts for &lt;a href="https://mastodon.xyz/tags/mastodev"&gt;#&lt;span&gt;mastodev&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.&lt;/p&gt;&lt;p&gt;- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.&lt;/p&gt;&lt;p&gt;I probably don't know enough web frontend to help, but it might be fun to try.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1658950"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1658950.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-06:objectId=1764509:objectType=Status</id>
<published>2017-04-06T10:15:38Z</published>
<updated>2017-04-06T10:15:38Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<summary xml:lang="en">This is a test for cw federation</summary>
<content type="html" xml:lang="en">&lt;p&gt;This is a test for cw federation body text.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1657819"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1657819.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-05:objectId=1645208:objectType=Status</id>
<published>2017-04-05T07:14:53Z</published>
<updated>2017-04-05T07:14:53Z</updated>
<title>lambadalambda shared a status by lambadalambda@social.heldscal.la</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:social.heldscal.la,2017-04-05:noticeId=1502088:objectType=note</id>
<published>2017-04-05T06:12:09Z</published>
<updated>2017-04-05T07:12:47Z</updated>
<title>New status by lambadalambda@social.heldscal.la</title>
<author>
<id>https://social.heldscal.la/user/23211</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<email>lambadalambda@social.heldscal.la</email>
<summary type="html">Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/236/original/23211-original-20170416114255.jpeg"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">Federation 101: &lt;a href="https://www.youtube.com/watch?v=t1lYU5CA40o"&gt;https://www.youtube.com/watch?v=t1lYU5CA40o&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1502088"/>
</activity:object>
<content type="html" xml:lang="en">Federation 101: &lt;a href="https://www.youtube.com/watch?v=t1lYU5CA40o"&gt;https://www.youtube.com/watch?v=t1lYU5CA40o&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1618003"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1618003.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-05:objectId=1641750:objectType=Status</id>
<published>2017-04-05T05:44:48Z</published>
<updated>2017-04-05T05:44:48Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://social.heldscal.la/lambadalambda" class="u-url mention"&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; just a test.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://social.heldscal.la/user/23211"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1616358"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1616358.atom"/>
</entry>
</feed>

View File

@ -0,0 +1,11 @@
<?xml version="1.0"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>acct:lambadalambda@mastodon.social</Subject>
<Alias>https://mastodon.social/@lambadalambda</Alias>
<Alias>https://mastodon.social/users/lambadalambda</Alias>
<Link rel="http://webfinger.net/rel/profile-page" type="text/html" href="https://mastodon.social/@lambadalambda"/>
<Link rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda.atom"/>
<Link rel="salmon" href="https://mastodon.social/api/salmon/264"/>
<Link rel="magic-public-key" href="data:application/magic-public-key,RSA.w0P_Tq4gb4G_QVuMGbJoC_AfMNcv-m7NfrlOwkVzcU47jgESuYI4UtJayissCdBycHUnfVUd9qol-eznSODzCJhfJloqEIC-aSnuEPGA0POtWad6DU0E6_Ho5zQn5WAWUwbRQqowbrsm_GHo2-3veR5jGenwA6sYhINg_c3QQbksyV0uJ20Umyx88w8-TJuv53twOfmyDWuYNoQ3y5ccHKOZcLHxYOhvwg3PFaGfFHMFiNmF40dTXt9K96r7sbzc44iLD-VphbMPJEjkMuf8PGEFOBzy8pm3wJZw2v32RNW2VESwMYyqDzwHXGSq1a73cS7hEnc79gXlELsK04L9QQ==.AQAB"/>
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://mastodon.social/authorize_follow?acct={uri}"/>
</XRD>

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"><Subject>acct:lain@pleroma.soykaf.com</Subject><Alias>https://pleroma.soykaf.com/users/lain</Alias><Link href="https://pleroma.soykaf.com/users/lain/feed.atom" rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" /><Link href="https://pleroma.soykaf.com/users/lain" rel="http://webfinger.net/rel/profile-page" type="text/html" /><Link href="https://pleroma.soykaf.com/users/lain/salmon" rel="salmon" /><Link href="data:application/magic-public-key,RSA.u39dKLin8N4PywPvasEGXstOMsgg9m1OEKnpfHnSHqc6UOtIPs5-aI_LcLbhIEH2EVl6jstvtqMIloPch1FizZ3OBiKz81dXTiEZ3NfKgj_GJfIlipChAadxrmUyWT_Pr0qPaF1vhPrkSTwR8iDNUiQ-OEggRPpJVkJ619MXNdsJE59yklZiD1WY0vC9aG9m-dh0BANKNwSjwfZ3uFjDh0UosMATKjPTSO_I59nK_lArex_jAwTnVm6Dryk2qR2XXZyzTzZAHuYqSM77RlsNTJUCOaSadl816eZAvU3TF-ibIou0D-0sN-M-QehRh93sVJ95U40GQz8jOGc_5wK8xw==.AQAB" rel="magic-public-key" /></XRD>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,54 @@
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:statusnet="http://status.net/schema/api/1/">
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827873"/>
<status_net notice_id="2827873"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T08:51:48+00:00</published>
<updated>2017-05-05T08:51:48+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://shitposter.club/user/1</uri>
<name>moonman</name>
<summary>EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o</summary>
<link rel="alternate" type="text/html" href="https://shitposter.club/moonman"/>
<link rel="avatar" type="image/jpeg" media:width="1040" media:height="1040" href="https://shitposter.club/avatar/1-original-20170503024316.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://shitposter.club/avatar/1-96-20170503024316.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://shitposter.club/avatar/1-48-20170503024316.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://shitposter.club/avatar/1-24-20170503024318.jpeg"/>
<poco:preferredUsername>moonman</poco:preferredUsername>
<poco:displayName>Generic Enemy</poco:displayName>
<poco:note>EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o</poco:note>
<poco:address>
<poco:formatted>The Moon</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://shitposter.club/moonman</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://shitposter.club/moonman/subscribers"></followers>
<statusnet:profile_info local_id="1"></statusnet:profile_info>
</author>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827849:objectType=comment" href="https://shitposter.club/notice/2827849"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827849"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390270"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390270" local_id="1390270" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26">tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.smuglo.li/user/2326"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://shitposter.club/user/9655"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://shitposter.club/api/statuses/user_timeline/1.atom</id>
<title>Generic Enemy</title>
<link rel="alternate" type="text/html" href="https://shitposter.club/moonman"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/user_timeline/1.atom"/>
<link rel="license" href="https://shitposter.club/doc/tos"/>
<icon>https://shitposter.club/avatar/1-96-20170503024316.jpeg</icon>
<updated>2017-05-05T11:43:58+00:00</updated>
</source>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2827873.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2827873.atom"/>
<statusnet:notice_info local_id="2827873" source="Qvitter"></statusnet:notice_info>
</entry>

View File

@ -0,0 +1,454 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.2.0-beta4">GNU social</generator>
<id>https://shitposter.club/api/statuses/user_timeline/1.atom</id>
<title>moonman timeline</title>
<subtitle>Updates from moonman on Shitposter Club!</subtitle>
<logo>https://shitposter.club/avatar/1-96-20170503024316.jpeg</logo>
<updated>2017-05-05T13:24:09+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://shitposter.club/user/1</uri>
<name>moonman</name>
<summary>EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o</summary>
<link rel="alternate" type="text/html" href="https://shitposter.club/moonman"/>
<link rel="avatar" type="image/jpeg" media:width="1040" media:height="1040" href="https://shitposter.club/avatar/1-original-20170503024316.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://shitposter.club/avatar/1-96-20170503024316.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://shitposter.club/avatar/1-48-20170503024316.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://shitposter.club/avatar/1-24-20170503024318.jpeg"/>
<poco:preferredUsername>moonman</poco:preferredUsername>
<poco:displayName>Generic Enemy</poco:displayName>
<poco:note>EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o</poco:note>
<poco:address>
<poco:formatted>The Moon</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://shitposter.club/moonman</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://shitposter.club/moonman/subscribers"></followers>
<statusnet:profile_info local_id="1"></statusnet:profile_info>
</author>
<link href="https://shitposter.club/moonman" rel="alternate" type="text/html"/>
<link href="https://shitposter.club/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://shitposter.club/api/statuses/user_timeline/1.atom?max_id=2828044" rel="next" type="application/atom+xml"/>
<link href="https://shitposter.club/main/push/hub" rel="hub"/>
<link href="https://shitposter.club/main/salmon/user/1" rel="salmon"/>
<link href="https://shitposter.club/main/salmon/user/1" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://shitposter.club/main/salmon/user/1" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://shitposter.club/api/statuses/user_timeline/1.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:shitposter.club,2017-05-05:subscription:1:person:23190:2017-05-05T11:43:58+00:00</id>
<title>Generic Enemy (moonman)'s status on Friday, 05-May-2017 11:43:58 UTC</title>
<content type="html">&lt;a href=&quot;https://shitposter.club/moonman&quot;&gt;Generic Enemy&lt;/a&gt; started following &lt;a href=&quot;https://noagendasocial.com/@Ma5on&quot;&gt;Mason&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2829381"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-05-05T11:43:58+00:00</published>
<updated>2017-05-05T11:43:58+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://noagendasocial.com/users/Ma5on</id>
<title>Mason</title>
<link rel="alternate" type="text/html" href="https://noagendasocial.com/@Ma5on"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://shitposter.club/avatar/23190-original-20170505114356.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://shitposter.club/avatar/23190-96-20170505114358.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://shitposter.club/avatar/23190-48-20170505114358.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://shitposter.club/avatar/23190-24-20170505114358.jpeg"/>
<poco:preferredUsername>ma5on</poco:preferredUsername>
<poco:displayName>Mason</poco:displayName>
</activity:object>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1391451"/>
<ostatus:conversation href="https://shitposter.club/conversation/1391451" local_id="1391451" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=abffa9c14a054d3b">tag:shitposter.club,2017-05-05:objectType=thread:nonce=abffa9c14a054d3b</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2829381.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2829381.atom"/>
<statusnet:notice_info local_id="2829381" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:shitposter.club,2017-05-05:subscription:1:person:14357:2017-05-05T10:29:03+00:00</id>
<title>Generic Enemy (moonman)'s status on Friday, 05-May-2017 10:29:03 UTC</title>
<content type="html">&lt;a href=&quot;https://shitposter.club/moonman&quot;&gt;Generic Enemy&lt;/a&gt; started following &lt;a href=&quot;https://mastodon.cloud/@ohyran&quot;&gt;Jens Reuterberg&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828682"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-05-05T10:29:03+00:00</published>
<updated>2017-05-05T10:29:03+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://mastodon.cloud/users/ohyran</id>
<title>Jens Reuterberg</title>
<summary>RPG-nerd, illustrator, Open Source enthusiast, KDE dude, designer and gay lefty. Might be a cliché - but we will soon find out!</summary>
<link rel="alternate" type="text/html" href="https://mastodon.cloud/@ohyran"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://shitposter.club/avatar/14357-original-20170505110123.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://shitposter.club/avatar/14357-96-20170505110757.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://shitposter.club/avatar/14357-48-20170505110757.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://shitposter.club/avatar/14357-24-20170505110757.jpeg"/>
<poco:preferredUsername>ohyran</poco:preferredUsername>
<poco:displayName>Jens Reuterberg</poco:displayName>
<poco:note>RPG-nerd, illustrator, Open Source enthusiast, KDE dude, designer and gay lefty. Might be a cliché - but we will soon find out!</poco:note>
</activity:object>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390971"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390971" local_id="1390971" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=937151d4825a85bf">tag:shitposter.club,2017-05-05:objectType=thread:nonce=937151d4825a85bf</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828682.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828682.atom"/>
<statusnet:notice_info local_id="2828682" source="activity"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828637:objectType=note</id>
<title>New note by moonman</title>
<content type="html">basicall i would just rather have ppl say &amp;quot;i like x and y&amp;quot; than &amp;quot;i'm a nerd&amp;quot; the term can be retired.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828637"/>
<status_net notice_id="2828637"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:24:54+00:00</published>
<updated>2017-05-05T10:24:54+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390949"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390949" local_id="1390949" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=65992b0b9b5e6931">tag:shitposter.club,2017-05-05:objectType=thread:nonce=65992b0b9b5e6931</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828637.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828637.atom"/>
<statusnet:notice_info local_id="2828637" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828579:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://gs.smuglo.li/user/35497&quot; class=&quot;h-card mention&quot; title=&quot;Bokuro Bokusawa&quot;&gt;boco&lt;/a&gt; to be honest i've turned right around and been cruel to other people, i said i'd never do it but it happens again eventually.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828579"/>
<status_net notice_id="2828579"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:20:33+00:00</published>
<updated>2017-05-05T10:20:33+00:00</updated>
<thr:in-reply-to ref="tag:gs.smuglo.li,2017-05-05:noticeId=2189031:objectType=comment" href="https://gs.smuglo.li/notice/2189031"></thr:in-reply-to>
<link rel="related" href="https://gs.smuglo.li/notice/2189031"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390862"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390862" local_id="1390862" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0">tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.smuglo.li/user/35497"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828579.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828579.atom"/>
<statusnet:notice_info local_id="2828579" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828554:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://mastodon.cloud/users/ohyran&quot; class=&quot;h-card mention&quot; title=&quot;Jens Reuterberg&quot;&gt;ohyran&lt;/a&gt; i won't ever get over bullying but i agree otherwise. i don't go to comic shops too often these days but i got dragged to one last year and the sheer diversity of people enjoying comics now compared to years ago was striking and it pleased me. and i noticed a couple years ago because of youtube i find things i truly enjoy watching, like in-depth videos about electronic parts, didn't exist 20 years ago. it's pretty great.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828554"/>
<status_net notice_id="2828554"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:18:10+00:00</published>
<updated>2017-05-05T10:18:10+00:00</updated>
<thr:in-reply-to ref="tag:mastodon.cloud,2017-05-05:objectId=6334570:objectType=Status" href="https://mastodon.cloud/users/ohyran/updates/595969"></thr:in-reply-to>
<link rel="related" href="https://mastodon.cloud/users/ohyran/updates/595969"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390752"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390752" local_id="1390752" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767">tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.cloud/users/ohyran"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828554.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828554.atom"/>
<statusnet:notice_info local_id="2828554" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<id>tag:shitposter.club,2017-05-05:fave:1:comment:2828502:2017-05-05T10:12:52+00:00</id>
<title>Favorite</title>
<content type="html">moonman favorited something by ohyran: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://shitposter.club/moonman&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;moonman&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; fair enough - that distinction makes it clearer...&lt;/p&gt;&lt;p&gt;On the other hand - those of us who did &quot;pay the price&quot; of being nerdy little kids in the 80's and 90's should strive to get past it anyway (mental health wise not &quot;just get over it&quot;) and see the &quot;nerd culture&quot; thing as a blessing of sorts. We are in the optimal spot to do it. (not saying that that is something easy btw just that NOW is the best of time to start talking about it)&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828506"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T10:12:52+00:00</published>
<updated>2017-05-05T10:12:52+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:mastodon.cloud,2017-05-05:objectId=6334570:objectType=Status</id>
<title>New comment by ohyran</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://shitposter.club/moonman&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;moonman&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; fair enough - that distinction makes it clearer...&lt;/p&gt;&lt;p&gt;On the other hand - those of us who did &quot;pay the price&quot; of being nerdy little kids in the 80's and 90's should strive to get past it anyway (mental health wise not &quot;just get over it&quot;) and see the &quot;nerd culture&quot; thing as a blessing of sorts. We are in the optimal spot to do it. (not saying that that is something easy btw just that NOW is the best of time to start talking about it)&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://mastodon.cloud/users/ohyran/updates/595969"/>
<status_net notice_id="2828502"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:mastodon.cloud,2017-05-05:objectId=6334570:objectType=Status" href="https://mastodon.cloud/users/ohyran/updates/595969"></thr:in-reply-to>
<link rel="related" href="https://mastodon.cloud/users/ohyran/updates/595969"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390752"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390752" local_id="1390752" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767">tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828506.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828506.atom"/>
<statusnet:notice_info local_id="2828506" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828496:objectType=note</id>
<title>New note by moonman</title>
<content type="html">things are better now, a lot less kids in america get beaten up and called a fag. still too many.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828496"/>
<status_net notice_id="2828496"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:11:31+00:00</published>
<updated>2017-05-05T10:11:31+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390862"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390862" local_id="1390862" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0">tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828496.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828496.atom"/>
<statusnet:notice_info local_id="2828496" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828457:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/21787&quot; class=&quot;h-card mention&quot; title=&quot;Yukari&quot;&gt;cutscenes&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/28250&quot; class=&quot;h-card mention&quot; title=&quot;Bricky&quot;&gt;thatbrickster&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/35497&quot; class=&quot;h-card mention&quot; title=&quot;Bokuro Bokusawa&quot;&gt;boco&lt;/a&gt; i never understood this because nerds had pocket protectors, which was a draftsman engineer thing and therefore smart, while geeks were people in carnivals who bit heads off small animals.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828457"/>
<status_net notice_id="2828457"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:07:57+00:00</published>
<updated>2017-05-05T10:07:57+00:00</updated>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2828427:objectType=comment" href="https://shitposter.club/notice/2828427"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2828427"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390752"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390752" local_id="1390752" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767">tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.smuglo.li/user/28250"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.smuglo.li/user/35497"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://shitposter.club/user/21787"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828457.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828457.atom"/>
<statusnet:notice_info local_id="2828457" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828435:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://mastodon.cloud/users/ohyran&quot; class=&quot;h-card mention&quot; title=&quot;Jens Reuterberg&quot;&gt;ohyran&lt;/a&gt; since i didn't specify i'm talking about people subjected to physical and psychological abuse and not people that are just mad that more people like comic books now.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828435"/>
<status_net notice_id="2828435"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:05:07+00:00</published>
<updated>2017-05-05T10:05:07+00:00</updated>
<thr:in-reply-to ref="tag:mastodon.cloud,2017-05-05:objectId=6331705:objectType=Status" href="https://mastodon.cloud/users/ohyran/updates/595757"></thr:in-reply-to>
<link rel="related" href="https://mastodon.cloud/users/ohyran/updates/595757"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390752"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390752" local_id="1390752" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767">tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.cloud/users/ohyran"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828435.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828435.atom"/>
<statusnet:notice_info local_id="2828435" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828326:objectType=note</id>
<title>New note by moonman</title>
<content type="html">if you were a &amp;quot;nerd&amp;quot; before, like, 2001 you have permanent excuse to hate this kind of shit.   &lt;a href=&quot;https://shitposter.club/file/b79fa5644be0d6f22679136e67b7bf45c9c4a74a55c32dd2d0cf15de4ddd5be5.gif&quot; title=&quot;https://shitposter.club/file/b79fa5644be0d6f22679136e67b7bf45c9c4a74a55c32dd2d0cf15de4ddd5be5.gif&quot; class=&quot;attachment&quot; id=&quot;attachment-662105&quot; rel=&quot;nofollow external&quot;&gt;https://shitposter.club/attachment/662105&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828326"/>
<status_net notice_id="2828326"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:47:42+00:00</published>
<updated>2017-05-05T09:47:42+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390752"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390752" local_id="1390752" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767">tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" href="https://shitposter.club/file/b79fa5644be0d6f22679136e67b7bf45c9c4a74a55c32dd2d0cf15de4ddd5be5.gif" type="image/gif" length="1023884"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828326.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828326.atom"/>
<statusnet:notice_info local_id="2828326" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828250:objectType=note</id>
<title>New note by moonman</title>
<content type="html">&lt;a href=&quot;https://shitposter.club/file/1283e2d4dd8f96b8eeb5d9a16b318e210868aa11386cf0d593891e4c75c9126e.gif&quot; title=&quot;https://shitposter.club/file/1283e2d4dd8f96b8eeb5d9a16b318e210868aa11386cf0d593891e4c75c9126e.gif&quot; class=&quot;attachment&quot; id=&quot;attachment-662098&quot; rel=&quot;nofollow external&quot;&gt;https://shitposter.club/attachment/662098&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828250"/>
<status_net notice_id="2828250"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:39:06+00:00</published>
<updated>2017-05-05T09:39:06+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390709"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390709" local_id="1390709" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=ea8ffae90546f0ab">tag:shitposter.club,2017-05-05:objectType=thread:nonce=ea8ffae90546f0ab</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" href="https://shitposter.club/file/1283e2d4dd8f96b8eeb5d9a16b318e210868aa11386cf0d593891e4c75c9126e.gif" type="image/gif" length="1020391"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828250.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828250.atom"/>
<statusnet:notice_info local_id="2828250" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<id>tag:shitposter.club,2017-05-05:fave:1:comment:2828161:2017-05-05T09:28:19+00:00</id>
<title>Favorite</title>
<content type="html">moonman favorited something by kro: @&lt;a href=&quot;https://shitposter.club/user/1&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Generic Enemy&quot;&gt;moonman&lt;/a&gt; Till Brooklyn?</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828162"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T09:28:19+00:00</published>
<updated>2017-05-05T09:28:19+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:gs.smuglo.li,2017-05-05:noticeId=2188587:objectType=comment</id>
<title>New comment by kro</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/1&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Generic Enemy&quot;&gt;moonman&lt;/a&gt; Till Brooklyn?</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/2188587"/>
<status_net notice_id="2828161"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:gs.smuglo.li,2017-05-05:noticeId=2188587:objectType=comment" href="https://gs.smuglo.li/notice/2188587"></thr:in-reply-to>
<link rel="related" href="https://gs.smuglo.li/notice/2188587"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390624"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390624" local_id="1390624" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555">tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828162.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828162.atom"/>
<statusnet:notice_info local_id="2828162" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:shitposter.club,2017-05-05:fave:1:comment:2828125:2017-05-05T09:24:56+00:00</id>
<title>Favorite</title>
<content type="html">moonman favorited something by hardbass2k8: this has obviously interesting implications in various places, for example:&lt;br /&gt; the nationalism of the nazis might not have been real, who would have thought?&lt;br /&gt; socialism is usually promoted to implementation by real douchebags!&lt;br /&gt; your local social justice people might want diversity but they don't want you, m/19, white, why?&lt;br /&gt; amateur soccer club, they want to be the best in the amateur league but actually they just get drunk after training and are 50% overweight.&lt;br /&gt; This is because humans are not capable of telepathy, so if you join a group it doesn't magically align every little bit of your being with the declared group goals.&lt;br /&gt; &lt;br /&gt; Even though you see unmanned group beliefs flying around from time to time, generally groups are created from a bunch of people. they are not a container for people, they are the people inside them.&lt;br /&gt; &lt;br /&gt; so if you see a group that appears to be cool don't think of it as cool because its goals are cool but because its members are cool. if they aren't, tough cookies. don't be the retard and end up on the camp watchtower.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828136"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T09:24:56+00:00</published>
<updated>2017-05-05T09:24:56+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828125:objectType=comment</id>
<title>New comment by hardbass2k8</title>
<content type="html">this has obviously interesting implications in various places, for example:&lt;br /&gt; the nationalism of the nazis might not have been real, who would have thought?&lt;br /&gt; socialism is usually promoted to implementation by real douchebags!&lt;br /&gt; your local social justice people might want diversity but they don't want you, m/19, white, why?&lt;br /&gt; amateur soccer club, they want to be the best in the amateur league but actually they just get drunk after training and are 50% overweight.&lt;br /&gt; This is because humans are not capable of telepathy, so if you join a group it doesn't magically align every little bit of your being with the declared group goals.&lt;br /&gt; &lt;br /&gt; Even though you see unmanned group beliefs flying around from time to time, generally groups are created from a bunch of people. they are not a container for people, they are the people inside them.&lt;br /&gt; &lt;br /&gt; so if you see a group that appears to be cool don't think of it as cool because its goals are cool but because its members are cool. if they aren't, tough cookies. don't be the retard and end up on the camp watchtower.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828125"/>
<status_net notice_id="2828125"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2828125:objectType=comment" href="https://shitposter.club/notice/2828125"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2828125"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390589"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390589" local_id="1390589" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=51b227fe92f6babf">tag:shitposter.club,2017-05-05:objectType=thread:nonce=51b227fe92f6babf</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828136.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828136.atom"/>
<statusnet:notice_info local_id="2828136" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828128:objectType=note</id>
<title>New note by moonman</title>
<content type="html">In a valid remake of They live, signs would say REBEL, and DON'T GET MARRIED AND HAVE KIDS</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828128"/>
<status_net notice_id="2828128"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:24:23+00:00</published>
<updated>2017-05-05T09:24:23+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390642"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390642" local_id="1390642" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=b74397fa766b82c9">tag:shitposter.club,2017-05-05:objectType=thread:nonce=b74397fa766b82c9</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828128.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828128.atom"/>
<statusnet:notice_info local_id="2828128" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828104:objectType=note</id>
<title>New note by moonman</title>
<content type="html">&lt;a href=&quot;https://shitposter.club/file/4d34178bde99599f31a28928e1666fbd58448d8a22e94ed82222496e4a45cb07.gif&quot; title=&quot;https://shitposter.club/file/4d34178bde99599f31a28928e1666fbd58448d8a22e94ed82222496e4a45cb07.gif&quot; class=&quot;attachment&quot; id=&quot;attachment-662049&quot; rel=&quot;nofollow external&quot;&gt;https://shitposter.club/attachment/662049&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828104"/>
<status_net notice_id="2828104"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:21:01+00:00</published>
<updated>2017-05-05T09:21:01+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390624"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390624" local_id="1390624" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555">tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" href="https://shitposter.club/file/4d34178bde99599f31a28928e1666fbd58448d8a22e94ed82222496e4a45cb07.gif" type="image/gif" length="278366"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828104.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828104.atom"/>
<statusnet:notice_info local_id="2828104" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828102:objectType=note</id>
<title>New note by moonman</title>
<content type="html">when ppl find out i haven't always been serious  &lt;a href=&quot;https://shitposter.club/file/5859fa95875342cc65dba0d852f726db158ce28198c326d5f13d9de7c0d2c449.gif&quot; title=&quot;https://shitposter.club/file/5859fa95875342cc65dba0d852f726db158ce28198c326d5f13d9de7c0d2c449.gif&quot; class=&quot;attachment&quot; id=&quot;attachment-662053&quot; rel=&quot;nofollow external&quot;&gt;https://shitposter.club/attachment/662053&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828102"/>
<status_net notice_id="2828102"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:20:45+00:00</published>
<updated>2017-05-05T09:20:45+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390622"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390622" local_id="1390622" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=0a025ac5a570b4ec">tag:shitposter.club,2017-05-05:objectType=thread:nonce=0a025ac5a570b4ec</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" href="https://shitposter.club/file/5859fa95875342cc65dba0d852f726db158ce28198c326d5f13d9de7c0d2c449.gif" type="image/gif" length="119239"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828102.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828102.atom"/>
<statusnet:notice_info local_id="2828102" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828086:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/35497&quot; class=&quot;h-card mention&quot; title=&quot;Bokuro Bokusawa&quot;&gt;boco&lt;/a&gt; you are being too serious lol</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828086"/>
<status_net notice_id="2828086"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:17:19+00:00</published>
<updated>2017-05-05T09:17:19+00:00</updated>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2828082:objectType=comment" href="https://shitposter.club/notice/2828082"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2828082"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390270"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390270" local_id="1390270" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26">tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.smuglo.li/user/2326"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://shitposter.club/user/9655"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.smuglo.li/user/35497"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828086.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828086.atom"/>
<statusnet:notice_info local_id="2828086" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828085:objectType=note</id>
<title>New note by moonman</title>
<content type="html">shitposter dot club  &lt;a href=&quot;https://shitposter.club/file/9b084c7210b16abbf4d28594b924a07ef4a2a06f89d901a4c42fb1e243291263.gif&quot; title=&quot;https://shitposter.club/file/9b084c7210b16abbf4d28594b924a07ef4a2a06f89d901a4c42fb1e243291263.gif&quot; class=&quot;attachment&quot; id=&quot;attachment-662047&quot; rel=&quot;nofollow external&quot;&gt;https://shitposter.club/attachment/662047&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828085"/>
<status_net notice_id="2828085"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:16:50+00:00</published>
<updated>2017-05-05T09:16:50+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390613"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390613" local_id="1390613" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=d1ae088a1b91e5e5">tag:shitposter.club,2017-05-05:objectType=thread:nonce=d1ae088a1b91e5e5</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" href="https://shitposter.club/file/9b084c7210b16abbf4d28594b924a07ef4a2a06f89d901a4c42fb1e243291263.gif" type="image/gif" length="681847"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828085.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828085.atom"/>
<statusnet:notice_info local_id="2828085" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828061:objectType=note</id>
<title>New note by moonman</title>
<content type="html">even when i lie i tell the truth, is that so hard to understand?</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828061"/>
<status_net notice_id="2828061"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:15:07+00:00</published>
<updated>2017-05-05T09:15:07+00:00</updated>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390593"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390593" local_id="1390593" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=a516e4b8506b8ef5">tag:shitposter.club,2017-05-05:objectType=thread:nonce=a516e4b8506b8ef5</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828061.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828061.atom"/>
<statusnet:notice_info local_id="2828061" source="Qvitter"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2828052:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9591&quot; class=&quot;h-card mention&quot; title=&quot;warum hei&amp;#xDF;en deutschl&amp;#xE4;nder deutschl&amp;#xE4;nder&quot;&gt;hardbass2k8&lt;/a&gt; history, anthropology.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2828052"/>
<status_net notice_id="2828052"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T09:14:22+00:00</published>
<updated>2017-05-05T09:14:22+00:00</updated>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2828048:objectType=comment" href="https://shitposter.club/notice/2828048"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2828048"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/1390564"/>
<ostatus:conversation href="https://shitposter.club/conversation/1390564" local_id="1390564" ref="tag:shitposter.club,2017-05-05:objectType=thread:nonce=fe4d7f35b13403ba">tag:shitposter.club,2017-05-05:objectType=thread:nonce=fe4d7f35b13403ba</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://shitposter.club/user/9591"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828052.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/2828052.atom"/>
<statusnet:notice_info local_id="2828052" source="Qvitter"></statusnet:notice_info>
</entry>
</feed>

View File

@ -0,0 +1,653 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shitposter Club</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<link rel="stylesheet" type="text/css" href="https://shitposter.club/plugins/Qvitter/css/qvitter.css?changed=20170112022622" />
<link rel="stylesheet" type="text/css" href="https://shitposter.club/plugins/Qvitter/css/jquery.minicolors.css" />
<link rel="apple-touch-icon" sizes="57x57" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-96x96.png" sizes="96x96">
<link rel="manifest" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/manifest.json">
<link rel="mask-icon" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/safari-pinned-tab.svg" color="#a22430">
<meta name="apple-mobile-web-app-title" content="Shitposter Club">
<meta name="application-name" content="Shitposter Club">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
<link title="oEmbed" href="https://shitposter.club/services/oembed.json?url=https%3A%2F%2Fshitposter.club%2Fnotice%2F2827873" type="application/json+oembed" rel="alternate">
<link title="oEmbed" href="https://shitposter.club/services/oembed.xml?url=https%3A%2F%2Fshitposter.club%2Fnotice%2F2827873" type="application/xml+oembed" rel="alternate">
<link title="Single notice (JSON)" href="https://shitposter.club/api/statuses/show/2827873.json" type="application/stream+json" rel="alternate">
<link title="Single notice (Atom)" href="https://shitposter.club/api/statuses/show/2827873.atom" type="application/atom+xml" rel="alternate">
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="Generic Enemy (@moonman)" />
<meta name="twitter:description" content="@neimzr4luzerz @dolus childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English" />
<meta property="og:description" content="@neimzr4luzerz @dolus childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English" />
<meta property="og:site_name" content="Shitposter Club" />
<script>
/*
@licstart The following is the entire license notice for the
JavaScript code in this page.
Copyright (C) 2015 Hannes Mannerheim and other contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
@licend The above is the entire license notice
for the JavaScript code in this page.
*/
window.usersLanguageCode = "en";
window.usersLanguageNameInEnglish = "English";
window.englishLanguageData = {
"directionality":"ltr",
"languageName": "English",
"loginUsername": "Username or e-mail",
"loginPassword": "Password",
"loginSignIn": "Sign in",
"loginRememberMe": "Remember me",
"loginForgotPassword": "Forgot password?",
"notices": "Notices",
"followers": "Followers",
"following": "Following",
"groups": "Groups",
"compose": "PULL THE TRIGGER",
"queetVerb": "Send",
"queetsNounPlural": "Notices",
"logout": "Sign out",
"languageSelected": "Language:",
"viewMyProfilePage": "View my profile page",
"expand": "Expand",
"collapse": "Collapse",
"details": "Details",
"expandFullConversation": "Expand full conversation",
"replyVerb": "Reply",
"requeetVerb": "Repeat",
"favoriteVerb": "Favorite",
"requeetedVerb": "Repeated",
"favoritedVerb": "Favorited",
"replyTo": "Reply to",
"requeetedBy": "Repeated by {requeeted-by}",
"favoriteNoun": "Favorite",
"favoritesNoun": "Favorites",
"requeetNoun": "Repeat",
"requeetsNoun": "Repeats",
"newQueet": "{new-notice-count} new notice",
"newQueets": "{new-notice-count} new notices",
"longmonthsJanuary": "January",
"longmonthsFebruary": "February",
"longmonthsMars": "March",
"longmonthsApril": "April",
"longmonthsMay": "May",
"longmonthsJune": "June",
"longmonthsJuly": "July",
"longmonthsAugust": "August",
"longmonthsSeptember": "September",
"longmonthsOctober": "October",
"longmonthsNovember": "November",
"longmonthsDecember": "December",
"shortmonthsJanuary": "jan",
"shortmonthsFebruary": "feb",
"shortmonthsMars": "mar",
"shortmonthsApril": "apr",
"shortmonthsMay": "may",
"shortmonthsJune": "jun",
"shortmonthsJuly": "jul",
"shortmonthsAugust": "aug",
"shortmonthsSeptember": "sep",
"shortmonthsOctober": "oct",
"shortmonthsNovember": "nov",
"shortmonthsDecember": "dec",
"time12am": "{time} am",
"time12pm": "{time} pm",
"longDateFormat": "{time12} - {day} {month} {year}",
"shortDateFormatSeconds": "{seconds}s",
"shortDateFormatMinutes": "{minutes}m",
"shortDateFormatHours": "{hours}h",
"shortDateFormatDate": "{day} {month}",
"shortDateFormatDateAndY": "{day} {month} {year}",
"now": "now",
"posting": "posting",
"viewMoreInConvBefore": "← View more in conversation",
"viewMoreInConvAfter": "View more in conversation →",
"mentions": "Mentions",
"timeline": "Only Who I'm Following",
"publicTimeline": "Everyone on Shitposter Club",
"publicAndExtTimeline": "MY EYES! I CAN SEE FOREVER",
"searchVerb": "Search",
"deleteVerb": "Delete",
"cancelVerb": "Cancel",
"deleteConfirmation": "Are you sure you want to delete this notice?",
"userExternalFollow": "Remote follow",
"userExternalFollowHelp": "Your account ID (e.g. user@rainbowdash.net).",
"userFollow": "Follow",
"userFollowing": "Following",
"userUnfollow": "Unfollow",
"joinGroup": "Join",
"joinExternalGroup": "Join remotely",
"isMemberOfGroup": "Member",
"leaveGroup": "Leave",
"memberCount": "Members",
"adminCount": "Admins",
"settings": "Settings",
"saveChanges": "Save changes",
"linkColor": "Link color",
"backgroundColor": "Background color",
"newToQuitter": "New to {site-title}?",
"signUp": "Sign up",
"signUpFullName": "Full name",
"signUpEmail": "Email",
"signUpButtonText": "Sign up to {site-title}",
"welcomeHeading": "Welcome to {site-title}.",
"welcomeText": "We are a <span id=\"federated-tooltip\"><div id=\"what-is-federation\">\"Federation\" means that you don't need a {site-title} account to be able to follow, be followed by or interact with {site-title} users. You can register on any StatusNet or GNU social server or any service based on the the <a href=\"http://www.w3.org/community/ostatus/wiki/Main_Page\">Ostatus</a> protocol! You don't even have to join a service try installing the lovely <a href=\"http://www.gnu.org/software/social/\">GNU social</a> software on your own server! :)</div>federation</span> of microbloggers who care about social justice and solidarity and want to quit the centralised capitalist services.",
"registerNickname": "Nickname",
"registerHomepage": "Homepage",
"registerBio": "Bio",
"registerLocation": "Location",
"registerRepeatPassword": "Repeat password",
"moreSettings": "More settings",
"otherServers": "Alternatively you can create an account on another server of the GNU social network. <a href=\"http://federation.skilledtests.com/select_your_server.html\">Comparison</a>",
"editMyProfile": "Edit profile",
"notifications": "Notifications",
"xFavedYourQueet": "favorited your notice",
"xRepeatedYourQueet": "repeated you",
"xStartedFollowingYou": "followed you",
"followsYou": "follows you",
"FAQ": "FAQ",
"inviteAFriend": "Invite a friend!",
"goToExternalProfile": "Go to full profile",
"cropAndSave": "Crop and save",
"showTerms": "Read our Terms of Use",
"ellipsisMore": "More",
"blockUser": "Block",
"goToOriginalNotice": "Go to the original notice",
"goToTheUsersRemoteProfile": "Go to the user's remote profile",
"clickToDrag":"Click to drag",
"keyboardShortcuts":"Keyboard shortcuts",
"classicInterface":"Classic {site-title}",
"accessibilityToggleLink":"For better accessibility, click this link to switch to the classic interface",
"tooltipBookmarkStream":"Add this stream to your bookmarks",
"tooltipTopMenu":"Menu and settings",
"tooltipAttachImage":"Attach an image",
"tooltipShortenUrls":"Shorten all URLs in the notice",
"tooltipReloadStream":"Refresh this stream",
"tooltipRemoveBookmark":"Remove this bookmark",
"clearHistory":"Clear browsing history",
"ERRORsomethingWentWrong":"Something went wrong.",
"ERRORmustBeLoggedIn":"You must be logged in to view this stream.",
"ERRORcouldNotFindUserWithNickname":"Could not find a user with nickname \"{nickname}\" on this server",
"ERRORcouldNotFindGroupWithNickname":"Could not find a group with nickname \"{nickname}\" on this server",
"ERRORcouldNotFindPage":"Could not find that page.",
"ERRORnoticeRemoved": "This notice has been removed.",
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connection. Please try again later!",
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
"markAllNotificationsAsSeen":"Mark all notifications as seen",
"notifyRepliesAndMentions":"Mentions and replies",
"notifyFavs":"Favorites",
"notifyRepeats":"Repeats",
"notifyFollows":"New followers",
"timelineOptions":"Timeline options",
"ERRORfailedSavingYourSetting":"Failed saving your setting",
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
"newNotification": "{new-notice-count} new notification",
"newNotifications": "{new-notice-count} new notifications",
"thisIsANoticeFromABlockedUser":"Warning: This is a quip from a user you have blocked. Click to show it.",
"nicknamesListWithListName":"{nickname}s list: {list-name}",
"myListWithListName":"My list: {list-name}",
"listMembers":"Members",
"listSubscribers":"Subscribers",
"ERRORcouldNotFindList":"There is no such list.",
"emailAlreadyInUse":"Already in use",
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline",
"userBlocks":"Accounts you're blocking",
"buttonBlocked":"Blocked",
"buttonUnblock":"Unblock",
"failedBlockingUser":"Failed to block the user.",
"failedUnblockingUser":"Failed to unblock the user.",
"unblockUser": "Unblock",
"tooltipBlocksYou":"You are blocked from following {username}.",
"silenced":"Silenced",
"silencedPlural":"Silenced profiles",
"silencedUsersOnThisInstance":"Silenced profiles on {site-title}",
"sandboxed":"Sandboxed",
"sandboxedPlural":"Sandboxed profiles",
"sandboxedUsersOnThisInstance":"Sandboxed profiles on {site-title}",
"silencedStreamDescription":"Silenced users can't login or post quips and the quips they've already posted are hidden. For local users it's like a delete that can be reversed, for remote users it's like a site wide block.",
"sandboxedStreamDescription":"Quips from sandboxed users are excluded from the Public Timeline and The Whole Known Network. Apart from that, they can use the site like any other user.",
"onlyShowNotificationsFromUsersIFollow":"Only show notifications from users I follow",
"userOptions":"More user actions",
"silenceThisUser":"Silence {nickname}",
"sandboxThisUser":"Sandbox {nickname}",
"unSilenceThisUser":"Unsilence {nickname}",
"unSandboxThisUser":"Unsandbox {nickname}",
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
"muteUser":"Mute",
"unmuteUser":"Unmute",
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
"userMutes":"Accounts you're muting",
"userBlocked":"Blocked accounts",
"userMuted":"Muted accounts",
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still receive notifications from these accounts, unless you select &quot;Hide notifications from muted users&quot; from the cog wheel menu on the notifications page.",
"profileAndSettings":"Profile and settings",
"profileSettings":"Profile settings",
"thisIsABookmark":"This is a bookmark created in the Classic interface"
}
;
window.defaultAvatarStreamSize = "https:\/\/shitposter.club\/theme\/neo-gnu\/default-avatar-stream.png";
window.defaultAvatarProfileSize = "https:\/\/shitposter.club\/theme\/neo-gnu\/default-avatar-profile.png";
window.textLimit = 3800;
window.registrationsClosed = false;
window.thisSiteThinksItIsHttpButIsActuallyHttps = false;
window.siteTitle = "Shitposter Club";
window.loggedIn = false;
window.timeBetweenPolling = 5000;
window.apiRoot = 'https://shitposter.club/api/';
window.fullUrlToThisQvitterApp = 'https://shitposter.club/plugins/Qvitter/';
window.siteRootDomain = 'shitposter.club';
window.siteInstanceURL = 'https://shitposter.club/';
window.defaultLinkColor = '#0084B4';
window.defaultBackgroundColor = '#f4f4f4';
window.siteBackground = '../../file/cityscape.jpg';
window.enableWelcomeText = true;
window.customWelcomeText = {"en":"<h1 style=\"text-align: center;\"><img src=\"\/custom\/spclublogo-05.png\" alt=\"Shitposter Club\"><br>A safe space on the Internet<\/h1>"};
window.urlShortenerAPIURL = 'http://qttr.at/yourls-api.php';
window.urlShortenerSignature = 'b6afeec983';
window.commonSessionToken = 'cf0a3dab36bdf171e7c84cb4b46932a4e939c482e63347aa6b63fba804f93bf6623b10f6c074b590786764a3f269ebdf2eedb96b0c6c04ccf76dfabb054ee63a';
window.siteMaxThumbnailSize = 1000;
window.siteAttachmentURLBase = 'https://shitposter.club/attachment/';
window.siteEmail = 'shitposterclub@gmail.com';
window.siteLicenseTitle = '';
window.siteLicenseURL = 'https://shitposter.club/doc/tos';
window.customTermsOfUse = "<h2>The Rules<\/h2>\n<ol>\n<li>Do not post content that is illegal in the United States of America.<\/li>\n<li>Do not engage in behavior onsite that would get the admin or his hosting\nthreatened, e.g. doxing, harassment, posting copyrighted content that\nwill get the site DMCA'd, etc. This is a vague rule, sorry, it can't be\nhelped.<\/li>\n<li>The site should be considered NOT SAFE FOR WORK (NSFW), <em>however<\/em>,\nwe DO NOT allow: \n <ul>\n <li>\"excessive or extreme pornography\"<\/li>\n <li>gore or \"gross-out\" (e.g. \"tubgirl\") pics<\/li>\n <li>so-called \"loli hentai\" aka sexually explicit drawn depictions of children<\/li>\n <li>\"child model\" pictures<\/li>\n <\/ul>\n ...on the \"public\" (\"everyone on Shitposter Club\") timeline.\n <p>\n What this means is, do not post these pictures, or \"repeat\" them from The Whole Known Network (\"My eyes!\") timeline, or embed them.<\/li>\n<li>Do not engage in behavior that harms the functionality of the site\nitself, e.g. no hacking or exploiting it or spamming. If you're told you're doing\nsomething that is harming the technical operation of the site, stop doing it. The\nadmin's word is final.<\/li>\n<\/ol>\n<h2>My Pledge to You<\/h2>\n<p>I will not ban you or delete your posts for:\nBeing a jerk, having a terrible opinion, disagreeing with me, engaging in so-called \"hate\" or \"offensive\" speech (we have a block button, use it.)<\/p>\n<p>I will ban you or delete your posts for:\nBreaking the rules above, intentionally evading a block to post directly\nat someone who has blocked you, basically antisocial behavior that\ndirectly tries to get around any of the other rules. I will TRY to be lenient and tolerant about rules and not be a ban-Nazi.<\/p>\n<p>You own your posts, but due to the nature of federated services you\nare granting an irrevocable license for others on the network to\nsyndicate it. You are responsible for what you post.<\/p>";
window.siteLocalOnlyDefaultPath = true;
window.disableKeyboardShortcuts = false;
// available language files and their last update time
window.availableLanguages = {
"ar": "ar.json?changed=20160908160646",
"ast": "ast.json?changed=20160908160646",
"ca": "ca.json?changed=20160908160646",
"de": "de.json?changed=20160908160646",
"en": "en.json?changed=20170501070701",
"eo": "eo.json?changed=20160305060047",
"es_419": "es_419.json?changed=20160908160646",
"es": "es.json?changed=20160908160646",
"eu": "eu.json?changed=20160908160646",
"fa": "fa.json?changed=20160908160646",
"fi": "fi.json?changed=20160908160646",
"fr": "fr.json?changed=20160908160646",
"gl": "gl.json?changed=20160908160646",
"he": "he.json?changed=20160908160646",
"hy": "hy.json?changed=20160908160646",
"io": "io.json?changed=20160908160646",
"it": "it.json?changed=20160908160646",
"ja": "ja.json?changed=20160908160646",
"nb": "nb.json?changed=20161231010003",
"nl": "nl.json?changed=20160908160646",
"pl": "pl.json?changed=20161231010003",
"pt_br": "pt_br.json?changed=20160908160646",
"pt": "pt.json?changed=20160908160646",
"ru": "ru.json?changed=20160908160646",
"sq": "sq.json?changed=20161231010003",
"sv": "sv.json?changed=20160908160646",
"tr": "tr.json?changed=20161231010003",
"uk": "uk.json?changed=20160908160646",
"zh_cn": "zh_cn.json?changed=20160908160646",
"zh_tw": "zh_tw.json?changed=20160908160646",
};
</script>
<link href='https://shitposter.club/plugins/QvitterSimpleSecurity/css/ss.css?changed=20160925025913' rel='stylesheet' type='text/css'> </head>
<body class="" style="background-color:#f4f4f4">
<input id="upload-image-input" class="upload-image-input" type="file" name="upload-image-input">
<div class="topbar">
<a href="https://shitposter.club/main/public"><div id="logo"></div></a><div id="top-compose" class="hidden"></div>
<ul class="quitter-settings dropdown-menu">
<li class="dropdown-caret right">
<span class="caret-outer"></span>
<span class="caret-inner"></span>
</li>
<li class="fullwidth"><a id="top-menu-profile-link" class="no-hover-card" href="https://shitposter.club/"><div id="top-menu-profile-link-fullname"></div><div id="top-menu-profile-link-view-profile"></div></a></li>
<li class="fullwidth dropdown-divider"></li>
<li class="fullwidth"><a id="faq-link"></a></li>
<li class="fullwidth"><a id="tou-link"></a></li>
<li class="fullwidth"><a id="shortcuts-link"></a></li> <li class="fullwidth"><a id="invite-link" href="https://shitposter.club/main/invite"></a></li>
<li class="fullwidth"><a id="classic-link"></a></li>
<li class="fullwidth dropdown-divider"></li>
<li class="fullwidth"><a id="logout"></a></li>
<li class="fullwidth language dropdown-divider"></li>
<li class="language"><a class="language-link" data-tooltip="العربية Arabic" data-lang-code="ar">العربية</a></li><li class="language"><a class="language-link" data-tooltip="asturianu Asturian" data-lang-code="ast">asturianu</a></li><li class="language"><a class="language-link" data-tooltip="català Catalan" data-lang-code="ca">català</a></li><li class="language"><a class="language-link" data-tooltip="Deutsch German" data-lang-code="de">Deutsch</a></li><li class="language"><a class="language-link" data-tooltip="English" data-lang-code="en">English</a></li><li class="language"><a class="language-link" data-tooltip="esperanto Esperanto" data-lang-code="eo">esperanto</a></li><li class="language"><a class="language-link" data-tooltip="español (Latinoamérica) Spanish (Latin America)" data-lang-code="es_419">español (Latinoamérica)</a></li><li class="language"><a class="language-link" data-tooltip="español Spanish" data-lang-code="es">español</a></li><li class="language"><a class="language-link" data-tooltip="euskara Basque" data-lang-code="eu">euskara</a></li><li class="language"><a class="language-link" data-tooltip="فارسی Persian" data-lang-code="fa">فارسی</a></li><li class="language"><a class="language-link" data-tooltip="suomi Finnish" data-lang-code="fi">suomi</a></li><li class="language"><a class="language-link" data-tooltip="français French" data-lang-code="fr">français</a></li><li class="language"><a class="language-link" data-tooltip="galego Galician" data-lang-code="gl">galego</a></li><li class="language"><a class="language-link" data-tooltip="עברית Hebrew" data-lang-code="he">עברית</a></li><li class="language"><a class="language-link" data-tooltip="հայերեն Armenian" data-lang-code="hy">հայերեն</a></li><li class="language"><a class="language-link" data-tooltip="Ido" data-lang-code="io">Ido</a></li><li class="language"><a class="language-link" data-tooltip="italiano Italian" data-lang-code="it">italiano</a></li><li class="language"><a class="language-link" data-tooltip="日本語 Japanese" data-lang-code="ja">日本語</a></li><li class="language"><a class="language-link" data-tooltip="norsk bokmål Norwegian Bokmål" data-lang-code="nb">norsk bokmål</a></li><li class="language"><a class="language-link" data-tooltip="Nederlands Dutch" data-lang-code="nl">Nederlands</a></li><li class="language"><a class="language-link" data-tooltip="polski Polish" data-lang-code="pl">polski</a></li><li class="language"><a class="language-link" data-tooltip="português (Brasil) Portuguese (Brazil)" data-lang-code="pt_br">português (Brasil)</a></li><li class="language"><a class="language-link" data-tooltip="português Portuguese" data-lang-code="pt">português</a></li><li class="language"><a class="language-link" data-tooltip="русский Russian" data-lang-code="ru">русский</a></li><li class="language"><a class="language-link" data-tooltip="shqip Albanian" data-lang-code="sq">shqip</a></li><li class="language"><a class="language-link" data-tooltip="svenska Swedish" data-lang-code="sv">svenska</a></li><li class="language"><a class="language-link" data-tooltip="Türkçe Turkish" data-lang-code="tr">Türkçe</a></li><li class="language"><a class="language-link" data-tooltip="українська Ukrainian" data-lang-code="uk">українська</a></li><li class="language"><a class="language-link" data-tooltip="中文(中国) Chinese (China)" data-lang-code="zh_cn">中文(中国)</a></li><li class="language"><a class="language-link" data-tooltip="中文(台灣) Chinese (Taiwan)" data-lang-code="zh_tw">中文(台灣)</a></li> <li class="fullwidth language dropdown-divider"></li>
<li class="fullwidth"><a href="https://git.gnu.io/h2p/Qvitter/tree/master/locale" target="_blank" id="add-edit-language-link"></a></li>
</ul>
<div class="global-nav">
<div class="global-nav-inner">
<div class="container">
<div id="search">
<input type="text" spellcheck="false" autocomplete="off" name="q" placeholder="Sök" id="search-query" class="search-input">
<span class="search-icon">
<button class="icon nav-search" type="submit" tabindex="-1">
<span> Sök </span>
</button>
</span>
</div>
<ul class="language-dropdown">
<li class="dropdown">
<a class="dropdown-toggle">
<small></small>
<span class="current-language"></span>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li class="dropdown-caret right">
<span class="caret-outer"></span>
<span class="caret-inner"></span>
</li>
<li><a class="language-link" data-tooltip="Arabic" data-lang-code="ar">العربية</a></li><li><a class="language-link" data-tooltip="Asturian" data-lang-code="ast">asturianu</a></li><li><a class="language-link" data-tooltip="Catalan" data-lang-code="ca">català</a></li><li><a class="language-link" data-tooltip="German" data-lang-code="de">Deutsch</a></li><li><a class="language-link" data-tooltip="English" data-lang-code="en">English</a></li><li><a class="language-link" data-tooltip="Esperanto" data-lang-code="eo">esperanto</a></li><li><a class="language-link" data-tooltip="Spanish (Latin America)" data-lang-code="es_419">español (Latinoamérica)</a></li><li><a class="language-link" data-tooltip="Spanish" data-lang-code="es">español</a></li><li><a class="language-link" data-tooltip="Basque" data-lang-code="eu">euskara</a></li><li><a class="language-link" data-tooltip="Persian" data-lang-code="fa">فارسی</a></li><li><a class="language-link" data-tooltip="Finnish" data-lang-code="fi">suomi</a></li><li><a class="language-link" data-tooltip="French" data-lang-code="fr">français</a></li><li><a class="language-link" data-tooltip="Galician" data-lang-code="gl">galego</a></li><li><a class="language-link" data-tooltip="Hebrew" data-lang-code="he">עברית</a></li><li><a class="language-link" data-tooltip="Armenian" data-lang-code="hy">հայերեն</a></li><li><a class="language-link" data-tooltip="Ido" data-lang-code="io">Ido</a></li><li><a class="language-link" data-tooltip="Italian" data-lang-code="it">italiano</a></li><li><a class="language-link" data-tooltip="Japanese" data-lang-code="ja">日本語</a></li><li><a class="language-link" data-tooltip="Norwegian Bokmål" data-lang-code="nb">norsk bokmål</a></li><li><a class="language-link" data-tooltip="Dutch" data-lang-code="nl">Nederlands</a></li><li><a class="language-link" data-tooltip="Polish" data-lang-code="pl">polski</a></li><li><a class="language-link" data-tooltip="Portuguese (Brazil)" data-lang-code="pt_br">português (Brasil)</a></li><li><a class="language-link" data-tooltip="Portuguese" data-lang-code="pt">português</a></li><li><a class="language-link" data-tooltip="Russian" data-lang-code="ru">русский</a></li><li><a class="language-link" data-tooltip="Albanian" data-lang-code="sq">shqip</a></li><li><a class="language-link" data-tooltip="Swedish" data-lang-code="sv">svenska</a></li><li><a class="language-link" data-tooltip="Turkish" data-lang-code="tr">Türkçe</a></li><li><a class="language-link" data-tooltip="Ukrainian" data-lang-code="uk">українська</a></li><li><a class="language-link" data-tooltip="Chinese (China)" data-lang-code="zh_cn">中文(中国)</a></li><li><a class="language-link" data-tooltip="Chinese (Taiwan)" data-lang-code="zh_tw">中文(台灣)</a></li> </ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<div id="no-js-error">Please enable javascript to use this site.<script>var element = document.getElementById('no-js-error'); element.parentNode.removeChild(element);</script></div>
<div id="page-container">
<div class="front-welcome-text "></div>
<div id="login-register-container">
<div id="login-content">
<form id="form_login" class="form_settings" action="https://shitposter.club/main/qlogin" method="post">
<div id="username-container">
<input id="nickname" name="nickname" type="text" value="" tabindex="1" />
</div>
<table class="password-signin"><tbody><tr>
<td class="flex-table-primary">
<div class="placeholding-input">
<input id="password" name="password" type="password" tabindex="2" value="" />
</div>
</td>
<td class="flex-table-secondary">
<button class="submit" type="submit" id="submit-login" tabindex="4"></button>
</td>
</tr></tbody></table>
<div id="remember-forgot">
<input type="checkbox" id="rememberme" name="rememberme" value="yes" tabindex="3" checked="checked"> <span id="rememberme_label"></span> · <a id="forgot-password" href="https://shitposter.club/main/recoverpassword" ></a>
<input type="hidden" id="token" name="token" value="cf0a3dab36bdf171e7c84cb4b46932a4e939c482e63347aa6b63fba804f93bf6623b10f6c074b590786764a3f269ebdf2eedb96b0c6c04ccf76dfabb054ee63a">
<a href="https://shitposter.club/main/openid" id="openid-login" title="OpenID" donthijack>OpenID</a> </div>
</form>
</div>
<div class="front-signup">
<h2></h2>
<div class="signup-input-container"><input placeholder="" type="text" name="user[name]" autocomplete="off" class="text-input" id="signup-user-name"></div>
<div class="signup-input-container"><input placeholder="" type="text" name="user[email]" autocomplete="off" id="signup-user-email"></div>
<div class="signup-input-container"><input placeholder="" type="password" name="user[user_password]" class="text-input" id="signup-user-password"></div>
<button id="signup-btn-step1" class="signup-btn" type="submit"></button>
</div>
<div id="other-servers-link"></div><div id="qvitter-notice-logged-out"></div></div>
<div id="feed">
<div id="feed-header">
<div id="feed-header-inner">
<h2>
<span id="stream-header"></span>
</h2>
<div class="reload-stream"></div>
</div>
<div id="feed-header-description"></div>
</div>
<div id="new-queets-bar-container" class="hidden"><div id="new-queets-bar"></div></div>
<div id="feed-body"></div>
</div>
<div id="hidden-html"><ol class="notices xoxo"><style type="text/css" media="">.greentext { color: green; }</style>
<style type="text/css" media="">
.sensitive-blocker {
display: none;
}
div.stream-item.notice.sensitive-notice .sensitive-blocker {
display: block;
width: 100%;
height: 100%;
position: absolute;
z-index: 100;
/*background-color: #d4baba;*/
background-color: black;
background-image: url(/custom/afterdark.jpg);
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
transition: opacity 1s ease-in-out;
}
.sensitive-blocker:hover {
opacity: .5;
}
div.stream-item.notice.expanded.sensitive-notice .sensitive-blocker {
display: none;
background-color: transparent;
background-image: none;
}
</style>
<style type="text/css" media="">span.dicerolls { font-weight: bold; border: 1px solid black; }</style>
<li class="h-entry notice post notice-source-Qvitter" id="notice-2827873">
<span class="tagcontainer">
<section class="notice-headers">
<a href="https://shitposter.club/notice/2827873" class="notice-title">Generic Enemy (moonman)'s status on Friday, 05-May-2017 08:51:48 UTC</a>
<a href="https://shitposter.club/moonman" class="h-card p-author" title="moonman">
<img src="https://shitposter.club/avatar/1-48-20170503024316.jpeg" class="avatar u-photo" width="48" height="48" alt="Generic Enemy"/>
Generic Enemy</a>
<div class="parents">
<a href="https://shitposter.club/notice/2827849" class="u-in-reply-to" rel="in-reply-to">in reply to</a>
<ul class="addressees">
<li class="h-card">
<a href="https://gs.smuglo.li/dolus" title="dolus" class="addressee account">Dolus_McHonest</a>
</li>
<li class="h-card">
<a href="https://shitposter.club/neimzr4luzerz" title="neimzr4luzerz" class="addressee account">Solidarity for Pigs</a>
</li>
</ul>
</div>
</section>
<article class="e-content">@<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</article>
<footer>
<a rel="bookmark" class="timestamp" href="https://shitposter.club/conversation/1390270#notice-2827873">
<time class="dt-published" datetime="2017-05-05T08:51:48+00:00" title="Friday, 05-May-2017 08:51:48 UTC">about 4 hours ago</time>
</a>
<span class="source">from <span class="device">Qvitter</span>
</span>
<a href="https://shitposter.club/notice/2827873" class="permalink u-url">permalink</a>
</footer>
</span>
</li>
</ol></div>
<div id="footer"><div id="footer-spinner-container"></div></div>
</div>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/jquery-2.1.4.min.js?changed=20160208020735"></script>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/jquery-ui.min.js?changed=20160208020735"></script>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/jquery.minicolors.min.js?changed=20160208020735"></script>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/jquery.jWindowCrop.js?changed=20160208020735"></script>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/load-image.min.js?changed=20160208020735"></script>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/xregexp-all-3.0.0-pre.js?changed=20160325055804"></script>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/lz-string.js?changed=20160325055804"></script>
<script type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/lib/bowser.min.js?changed=20160325055804"></script>
<script charset="utf-8" type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/dom-functions.js?changed=20170211091256"></script>
<script charset="utf-8" type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/misc-functions.js?changed=20170112022606"></script>
<script charset="utf-8" type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/ajax-functions.js?changed=20170112022606"></script>
<script charset="utf-8" type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/stream-router.js?changed=20160325055804"></script>
<script charset="utf-8" type="text/javascript" src="https://shitposter.club/plugins/Qvitter/js/qvitter.js?changed=20170215071625"></script>
<link rel="stylesheet" type="text/css" href="/custom/spc.css">
<script src="/custom/spc.js"></script>
<script src="https://shitposter.club/plugins/SPCEnhancements//js/audio-metadata.min.js"></script><script src='https://shitposter.club/plugins/QvitterSimpleSecurity/js/ss.js?changed=20160925025913'></script><style>
img.emoji {
width: auto;
height: 1.5em;
display: inline-block;
margin-bottom: -0.25em;
}
.queet-text {
padding-bottom: .25em;
}
</style>
<script src="https://shitposter.club/plugins/Emojify/js/emojify.js"></script>
<script>
emojify.setConfig({
img_dir: "https://shitposter.club/plugins/Emojify/images/emoji",
ignore_emoticons: true
});
var emojiReplacer = function(emoji, name, isEmoticon){
var classes = (isEmoticon ? "emoticon" : "emoji") + " emoji-" + name;
return '<span class="'+classes+'">'+emoji+'</span>';
}
</script>
<script src="https://shitposter.club/plugins/Emojify/js/qvitter_event.js"></script> <div id="dynamic-styles">
<style>
a, a:visited, a:active,
ul.stats li:hover a,
ul.stats li:hover a strong,
#user-body a:hover div strong,
#user-body a:hover div div,
.permalink-link:hover,
.stream-item.expanded > .queet .stream-item-expand,
.stream-item-footer .with-icn .requeet-text a b:hover,
.queet-text span.attachment.more,
.stream-item-header .created-at a:hover,
.stream-item-header a.account-group:hover .name,
.queet:hover .stream-item-expand,
.show-full-conversation:hover,
#new-queets-bar,
.menu-container div,
.cm-mention, .cm-tag, .cm-group, .cm-url, .cm-email,
div.syntax-middle span,
#user-body strong,
ul.stats,
.stream-item:not(.temp-post) ul.queet-actions li .icon:not(.is-mine):hover:before,
.show-full-conversation,
#user-body #user-queets:hover .label,
#user-body #user-groups:hover .label,
#user-body #user-following:hover .label,
ul.stats a strong,
.queet-box-extras button,
#openid-login:hover:after,
.post-to-group,
.stream-item-header .addressees .reply-to .h-card.not-mentioned-inline {
color:/*COLORSTART*/#0084B4/*COLOREND*/;
}
/*#unseen-notifications,*/
.stream-item.notification.not-seen > .queet::before,
#top-compose,
#logo,
.queet-toolbar button,
#user-header,
.profile-header-inner,
.topbar,
.menu-container,
.member-button.member,
.external-follow-button.following,
.qvitter-follow-button.following,
.save-profile-button,
.crop-and-save-button,
.topbar .global-nav.show-logo:before,
.topbar .global-nav.pulse-logo:before,
.dropdown-menu li:not(.dropdown-caret) a:hover {
background-color:/*BACKGROUNDCOLORSTART*/#0084B4/*BACKGROUNDCOLOREND*/;
}
.queet-box-syntax[contenteditable="true"]:focus,
.stream-item.selected-by-keyboard::before {
border-color:/*BORDERCOLORSTART*/#999999/*BORDERCOLOREND*/;
}
#user-footer-inner,
.inline-reply-queetbox,
#popup-faq #faq-container p.indent {
background-color:/*LIGHTERBACKGROUNDCOLORSTART*/rgb(205,230,239)/*LIGHTERBACKGROUNDCOLOREND*/;
}
#user-footer-inner,
.queet-box,
.queet-box-syntax[contenteditable="true"],
.inline-reply-queetbox,
span.inline-reply-caret,
.stream-item.expanded .stream-item.first-visible-after-parent,
#popup-faq #faq-container p.indent,
.post-to-group,
.quoted-notice:hover,
.oembed-item:hover,
.stream-item:hover:not(.expanded) .quoted-notice:hover,
.stream-item:hover:not(.expanded) .oembed-item:hover {
border-color:/*LIGHTERBORDERCOLORSTART*/rgb(155,206,224)/*LIGHTERBORDERCOLOREND*/;
}
span.inline-reply-caret .caret-inner {
border-bottom-color:/*LIGHTERBORDERBOTTOMCOLORSTART*/rgb(205,230,239)/*LIGHTERBORDERBOTTOMCOLOREND*/;
}
.modal-close .icon,
.chev-right,
.close-right,
button.icon.nav-search,
.member-button .join-text i,
.external-member-button .join-text i,
.external-follow-button .follow-text i,
.qvitter-follow-button .follow-text i,
#logo,
.upload-cover-photo,
.upload-avatar,
.upload-background-image,
button.shorten i,
.reload-stream,
.topbar .global-nav:before,
.stream-item.notification.repeat .dogear,
.stream-item.notification.like .dogear,
.ostatus-link,
.close-edit-profile-window {
background-image: url("../../custom/shitposter-sprite2.png?v=41");
background-size: 500px 1329px;
}
@media (max-width: 910px) {
#search-query,
.menu-container a,
.menu-container a.current,
.stream-selection.friends-timeline:after,
.stream-selection.notifications:after,
.stream-selection.my-timeline:after,
.stream-selection.public-and-external-timeline:after,
.stream-selection.public-timeline:after {
background-image: url("../../custom/shitposter-sprite2.png?v=41");
background-size: 500px 1329px;
}
}
</style>
</div>
</body>
</html>
<script type="text/javascript" src="https://shitposter.club/plugins/SensitiveContent/js/sensitivecontent.js"> </script>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>https://shitposter.club/user/1</Subject>
<Alias>acct:moonman@shitposter.club</Alias>
<Alias>https://shitposter.club/moonman</Alias>
<Alias>https://shitposter.club/index.php/user/1</Alias>
<Alias>https://shitposter.club/index.php/moonman</Alias>
<Link rel="http://webfinger.net/rel/profile-page" type="text/html" href="https://shitposter.club/moonman"/>
<Link rel="http://gmpg.org/xfn/11" type="text/html" href="https://shitposter.club/moonman"/>
<Link rel="describedby" type="application/rdf+xml" href="https://shitposter.club/moonman/foaf"/>
<Link rel="http://apinamespace.org/atom" type="application/atomsvc+xml" href="https://shitposter.club/api/statusnet/app/service/moonman.xml"/>
<Link rel="http://apinamespace.org/twitter" href="https://shitposter.club/api/"/>
<Link rel="http://specs.openid.net/auth/2.0/provider" href="https://shitposter.club/moonman"/>
<Link rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" href="https://shitposter.club/api/statuses/user_timeline/1.atom"/>
<Link rel="magic-public-key" href="data:application/magic-public-key,RSA.4PyrQWAfiQOIxPm4yO-0XHVxMTa8cY4PETeJSjcOx9CMNqiRYNxsT9JFyAwugiwASieMGZhfUDI7Huxyjhb-tyGzlCQEJdJxcWfaRFikwwqWyzpqtQAOjJCb0vYd8gTXSQNJfpwLWQSXUQgwwi31CR3ZlAAc5vtTuWgmKEUrk3c=.AQAB"/>
<Link rel="salmon" href="https://shitposter.club/main/salmon/user/1"/>
<Link rel="http://salmon-protocol.org/ns/salmon-replies" href="https://shitposter.club/main/salmon/user/1"/>
<Link rel="http://salmon-protocol.org/ns/salmon-mention" href="https://shitposter.club/main/salmon/user/1"/>
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://shitposter.club/main/ostatussub?profile={uri}"/>
</XRD>

View File

@ -0,0 +1,591 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-05-05T12:01:21+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom?max_id=2060731" rel="next" type="application/atom+xml"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2063249:2017-05-05T11:40:21+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by tatiana: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; they will start complaining about this, but won't come up with any solutions)&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2063306"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T11:40:21+00:00</published>
<updated>2017-05-05T11:40:21+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.weho.st,2017-05-05:objectId=172033:objectType=Status</id>
<title>New comment by tatiana</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; they will start complaining about this, but won't come up with any solutions)&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.weho.st/users/Tatiana/updates/2841"/>
<status_net notice_id="2063249"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:social.weho.st,2017-05-05:objectId=172033:objectType=Status" href="https://social.weho.st/users/Tatiana/updates/2841"></thr:in-reply-to>
<link rel="related" href="https://social.weho.st/users/Tatiana/updates/2841"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2063306.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2063306.atom"/>
<statusnet:notice_info local_id="2063306" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2063041:2017-05-05T11:27:28+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by kat: @&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; if the admin reading mine would delete a few it would be really useful in prioritising. </content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2063148"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T11:27:28+00:00</published>
<updated>2017-05-05T11:27:28+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:quitter.se,2017-05-05:noticeId=11807959:objectType=comment</id>
<title>New comment by kat</title>
<content type="html">@&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; if the admin reading mine would delete a few it would be really useful in prioritising. </content>
<link rel="alternate" type="text/html" href="http://quitter.se/notice/11807959"/>
<status_net notice_id="2063041"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:quitter.se,2017-05-05:noticeId=11807959:objectType=comment" href="http://quitter.se/notice/11807959"></thr:in-reply-to>
<link rel="related" href="http://quitter.se/notice/11807959"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2063148.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2063148.atom"/>
<statusnet:notice_info local_id="2063148" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2062924:objectType=note</id>
<title>lambadalambda repeated a notice by nielsk</title>
<content type="html">RT @nielsk @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; but there are soooo many, where should I start to read?</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062924"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-05-05T11:09:37+00:00</published>
<updated>2017-05-05T11:09:37+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status</id>
<title></title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; but there are soooo many, where should I start to read?&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/nielsk/updates/2256348"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T11:05:18+00:00</published>
<updated>2017-05-05T11:05:18+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.social/users/nielsk</uri>
<name>nielsk</name>
<summary>Sysadmin by day and ehm… sysadmin by night. Besides that old video games, Japan, economics and some other stuff</summary>
<link rel="alternate" type="text/html" href="https://mastodon.social/@nielsk"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://social.heldscal.la/avatar/29849-original-20170428120037.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/29849-96-20170428120041.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/29849-48-20170428120041.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/29849-24-20170429103753.jpeg"/>
<poco:preferredUsername>nielsk</poco:preferredUsername>
<poco:displayName>nielsk</poco:displayName>
<poco:note>Sysadmin by day and ehm… sysadmin by night. Besides that old video games, Japan, economics and some other stuff</poco:note>
<statusnet:profile_info local_id="29849"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status</id>
<title>New comment by nielsk</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; but there are soooo many, where should I start to read?&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/nielsk/updates/2256348"/>
<status_net notice_id="2062875"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:social.heldscal.la,2017-05-05:noticeId=2062583:objectType=note" href="https://social.heldscal.la/notice/2062583"></thr:in-reply-to>
<link rel="related" href="https://social.heldscal.la/notice/2062583"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://social.heldscal.la/user/23211"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://mastodon.social/users/nielsk.atom</id>
<title>nielsk</title>
<link rel="alternate" type="text/html" href="https://mastodon.social/@nielsk"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/nielsk.atom"/>
<icon>https://social.heldscal.la/avatar/29849-96-20170428120041.jpeg</icon>
<updated>2017-05-05T11:06:32+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062924.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062924.atom"/>
<statusnet:notice_info local_id="2062924" source="api" repeat_of="2062875"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2062875:2017-05-05T11:09:27+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by nielsk: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; but there are soooo many, where should I start to read?&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062923"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T11:09:27+00:00</published>
<updated>2017-05-05T11:09:27+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status</id>
<title>New comment by nielsk</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; but there are soooo many, where should I start to read?&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/nielsk/updates/2256348"/>
<status_net notice_id="2062875"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status" href="https://mastodon.social/users/nielsk/updates/2256348"></thr:in-reply-to>
<link rel="related" href="https://mastodon.social/users/nielsk/updates/2256348"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062923.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062923.atom"/>
<statusnet:notice_info local_id="2062923" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2062863:2017-05-05T11:09:11+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by kasil: &lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; surely, google is not that evil !&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062921"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T11:09:11+00:00</published>
<updated>2017-05-05T11:09:11+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:loutre.info,2017-05-05:objectId=23331:objectType=Status</id>
<title>New comment by kasil</title>
<content type="html">&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; surely, google is not that evil !&lt;/p&gt;</content>
<link rel="alternate" type="text/html" href="https://loutre.info/users/Kasil/updates/159"/>
<status_net notice_id="2062863"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:loutre.info,2017-05-05:objectId=23331:objectType=Status" href="https://loutre.info/users/Kasil/updates/159"></thr:in-reply-to>
<link rel="related" href="https://loutre.info/users/Kasil/updates/159"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062921.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062921.atom"/>
<statusnet:notice_info local_id="2062921" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2062767:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://sealion.club/user/4&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;dewoo &amp;#x274E;&quot;&gt;dwmatiz&lt;/a&gt; dunno, probably.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062767"/>
<status_net notice_id="2062767"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:55:17+00:00</published>
<updated>2017-05-05T10:55:17+00:00</updated>
<thr:in-reply-to ref="tag:sealion.club,2017-05-05:noticeId=3183881:objectType=comment" href="https://sealion.club/notice/3183881"></thr:in-reply-to>
<link rel="related" href="https://sealion.club/notice/3183881"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://sealion.club/user/4"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062767.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062767.atom"/>
<statusnet:notice_info local_id="2062767" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2062705:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://gs.smuglo.li/user/28250&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Bricky&quot;&gt;thatbrickster&lt;/a&gt; I do it, too.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062705"/>
<status_net notice_id="2062705"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:48:12+00:00</published>
<updated>2017-05-05T10:48:12+00:00</updated>
<thr:in-reply-to ref="tag:gs.smuglo.li,2017-05-05:noticeId=2189353:objectType=comment" href="https://gs.smuglo.li/notice/2189353"></thr:in-reply-to>
<link rel="related" href="https://gs.smuglo.li/notice/2189353"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.smuglo.li/user/28250"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062705.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062705.atom"/>
<statusnet:notice_info local_id="2062705" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2062620:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://social.tchncs.de/users/israuor&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Israuor &amp;#x2642;&quot;&gt;israuor&lt;/a&gt; @&lt;a href=&quot;https://mastodon.gougere.fr/users/bortzmeyer&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;S. Bortzmeyer &amp;#x2705;&quot;&gt;bortzmeyer&lt;/a&gt; so, 99%. 100% for 'normal' people.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062620"/>
<status_net notice_id="2062620"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:38:52+00:00</published>
<updated>2017-05-05T10:38:52+00:00</updated>
<thr:in-reply-to ref="tag:social.tchncs.de,2017-05-05:objectId=1667119:objectType=Status" href="https://social.tchncs.de/users/israuor/updates/74901"></thr:in-reply-to>
<link rel="related" href="https://social.tchncs.de/users/israuor/updates/74901"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://social.tchncs.de/users/israuor"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.gougere.fr/users/bortzmeyer"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062620.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062620.atom"/>
<statusnet:notice_info local_id="2062620" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2062583:objectType=note</id>
<title>New note by lambadalambda</title>
<content type="html">I wonder what'll happen when people realize the admin at their mail hoster can read all their e-mails.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062583"/>
<status_net notice_id="2062583"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T10:35:45+00:00</published>
<updated>2017-05-05T10:35:45+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062581"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062581" local_id="1062581" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062583.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062583.atom"/>
<statusnet:notice_info local_id="2062583" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:subscription:23211:person:35708:2017-05-05T09:34:46+00:00</id>
<title>Constance Variable (lambadalambda@social.heldscal.la)'s status on Friday, 05-May-2017 09:34:46 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/lambadalambda&quot;&gt;Constance Variable&lt;/a&gt; started following &lt;a href=&quot;https://mastodon.social/@milouse&quot;&gt;milouse&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2062053"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-05-05T09:34:46+00:00</published>
<updated>2017-05-05T09:34:46+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://mastodon.social/users/milouse</id>
<title>milouse</title>
<summary>#Scout leader #sgdf, interested in #openweb, #semanticweb, #privacy, #foss and #socialeconomy. 0xA714ECAC8C9CEE3D</summary>
<link rel="alternate" type="text/html" href="https://mastodon.social/@milouse"/>
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://social.heldscal.la/avatar/35708-original-20170505105902.png"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/35708-96-20170505105911.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/35708-48-20170505105911.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/35708-24-20170505105938.png"/>
<poco:preferredUsername>milouse</poco:preferredUsername>
<poco:displayName>milouse</poco:displayName>
<poco:note>#Scout leader #sgdf, interested in #openweb, #semanticweb, #privacy, #foss and #socialeconomy. 0xA714ECAC8C9CEE3D</poco:note>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062248"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062248" local_id="1062248" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=26ca19a355bb6135">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=26ca19a355bb6135</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062053.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2062053.atom"/>
<statusnet:notice_info local_id="2062053" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2061871:objectType=note</id>
<title>lambadalambda repeated a notice by safebot</title>
<content type="html">RT @&lt;a href=&quot;https://gs.smuglo.li/user/25857&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;safebot&quot;&gt;safebot&lt;/a&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/tag/cheers&quot; rel=&quot;tag&quot;&gt;cheers&lt;/a&gt;&lt;/span&gt; &lt;a href=&quot;https://gs.smuglo.li/attachment/456444&quot; title=&quot;https://gs.smuglo.li/attachment/456444&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-432334&quot;&gt;https://gs.smuglo.li/attachment/456444&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061871"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-05-05T09:16:17+00:00</published>
<updated>2017-05-05T09:16:17+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>tag:gs.smuglo.li,2017-05-05:noticeId=2188073:objectType=note</id>
<title></title>
<content type="html">#&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.smuglo.li/tag/cheers&quot; rel=&quot;tag&quot;&gt;cheers&lt;/a&gt;&lt;/span&gt; &lt;a href=&quot;https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg&quot; title=&quot;https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/456444&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/2188073"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T08:36:53+00:00</published>
<updated>2017-05-05T08:36:53+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://gs.smuglo.li/user/25857</uri>
<name>safebot</name>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/safebot"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/25719-original-20161215233234.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/25719-original-20161215233234.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/25719-48-20161215233239.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/25719-24-20161215235533.jpeg"/>
<poco:preferredUsername>safebot</poco:preferredUsername>
<poco:displayName>safebot</poco:displayName>
<statusnet:profile_info local_id="25719"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.smuglo.li,2017-05-05:noticeId=2188073:objectType=note</id>
<title>New note by safebot</title>
<content type="html">#&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.smuglo.li/tag/cheers&quot; rel=&quot;tag&quot;&gt;cheers&lt;/a&gt;&lt;/span&gt; &lt;a href=&quot;https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg&quot; title=&quot;https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/456444&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/2188073"/>
<status_net notice_id="2061504"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061934"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061934" local_id="1061934" ref="https://gs.smuglo.li/conversation/1009429">https://gs.smuglo.li/conversation/1009429</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<category term="cheers"></category>
<source>
<id>https://gs.smuglo.li/api/statuses/user_timeline/25857.atom</id>
<title>safebot</title>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/safebot"/>
<link rel="self" type="application/atom+xml" href="https://gs.smuglo.li/api/statuses/user_timeline/25857.atom"/>
<icon>https://social.heldscal.la/avatar/25719-original-20161215233234.jpeg</icon>
<updated>2017-05-05T12:00:57+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061934"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061934" local_id="1061934" ref="https://gs.smuglo.li/conversation/1009429">https://gs.smuglo.li/conversation/1009429</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061871.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061871.atom"/>
<statusnet:notice_info local_id="2061871" source="api" repeat_of="2061504"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061828"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T09:12:50+00:00</published>
<updated>2017-05-05T09:12:50+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; @&lt;a href=&quot;https://gs.smuglo.li/user/2326&quot; class=&quot;h-card mention&quot; title=&quot;Dolus_McHonest&quot;&gt;dolus&lt;/a&gt; childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827873"/>
<status_net notice_id="2061643"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" href="https://shitposter.club/notice/2827873"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827873"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061781"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061781" local_id="1061781" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061828.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061828.atom"/>
<statusnet:notice_info local_id="2061828" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061696:2017-05-05T09:06:10+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; &lt;br /&gt; &lt;span class=&quot;greentext&quot;&gt;&amp;gt; (((common era)))&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061781"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T09:06:10+00:00</published>
<updated>2017-05-05T09:06:10+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827918:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; &lt;br /&gt; &lt;span class=&quot;greentext&quot;&gt;&amp;gt; (((common era)))&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827918"/>
<status_net notice_id="2061696"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827918:objectType=comment" href="https://shitposter.club/notice/2827918"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827918"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061781"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061781" local_id="1061781" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061781.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061781.atom"/>
<statusnet:notice_info local_id="2061781" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:note:2061673:2017-05-05T08:58:28+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: discussion is one thing but any argument I've heard over and over again for the last three decades is going to go unanswered.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061702"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T08:58:28+00:00</published>
<updated>2017-05-05T08:58:28+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827895:objectType=note</id>
<title>New note by moonman</title>
<content type="html">discussion is one thing but any argument I've heard over and over again for the last three decades is going to go unanswered.</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827895"/>
<status_net notice_id="2061673"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827895:objectType=note" href="https://shitposter.club/notice/2827895"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827895"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1062026"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1062026" local_id="1062026" ref="https://shitposter.club/conversation/1390494">https://shitposter.club/conversation/1390494</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061702.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061702.atom"/>
<statusnet:notice_info local_id="2061702" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061280:2017-05-05T08:47:38+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; sex is for procreation and as an expression of intimacy between commited couples, it is a sacramental act</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061614"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T08:47:38+00:00</published>
<updated>2017-05-05T08:47:38+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827561:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://shitposter.club/user/9655&quot; class=&quot;h-card mention&quot; title=&quot;Solidarity for Pigs&quot;&gt;neimzr4luzerz&lt;/a&gt; sex is for procreation and as an expression of intimacy between commited couples, it is a sacramental act</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827561"/>
<status_net notice_id="2061280"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827561:objectType=comment" href="https://shitposter.club/notice/2827561"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827561"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061781"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061781" local_id="1061781" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061614.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061614.atom"/>
<statusnet:notice_info local_id="2061614" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:note:2061535:2017-05-05T08:40:55+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by fortune: What did Mickey Mouse get for Christmas?&lt;br /&gt; &lt;br /&gt; A Dan Quayle watch.&lt;br /&gt; &lt;br /&gt; -- heard from a Mike Dukakis field worker</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061544"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T08:40:55+00:00</published>
<updated>2017-05-05T08:40:55+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2061535:objectType=note</id>
<title>New note by fortune</title>
<content type="html">What did Mickey Mouse get for Christmas?&lt;br /&gt; &lt;br /&gt; A Dan Quayle watch.&lt;br /&gt; &lt;br /&gt; -- heard from a Mike Dukakis field worker</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061535"/>
<status_net notice_id="2061535"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:social.heldscal.la,2017-05-05:noticeId=2061535:objectType=note" href="https://social.heldscal.la/notice/2061535"></thr:in-reply-to>
<link rel="related" href="https://social.heldscal.la/notice/2061535"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061954"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061954" local_id="1061954" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=5185e5c145ee4762">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=5185e5c145ee4762</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061544.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061544.atom"/>
<statusnet:notice_info local_id="2061544" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061421:2017-05-05T08:36:27+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://maly.io/users/sonya&quot; class=&quot;h-card mention&quot; title=&quot;Sonya Mann ✅&quot;&gt;sonya&lt;/a&gt; banned from 4chan. you better watch ou. i'm trouble, y'hear?</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061495"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T08:36:27+00:00</published>
<updated>2017-05-05T08:36:27+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827689:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://maly.io/users/sonya&quot; class=&quot;h-card mention&quot; title=&quot;Sonya Mann ✅&quot;&gt;sonya&lt;/a&gt; banned from 4chan. you better watch ou. i'm trouble, y'hear?</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827689"/>
<status_net notice_id="2061421"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827689:objectType=comment" href="https://shitposter.club/notice/2827689"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827689"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1060861"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1060861" local_id="1060861" ref="https://shitposter.club/conversation/1389345">https://shitposter.club/conversation/1389345</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061495.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061495.atom"/>
<statusnet:notice_info local_id="2061495" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061351:2017-05-05T08:28:03+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by moonman: @&lt;a href=&quot;https://social.heldscal.la/user/29138&quot; class=&quot;h-card mention&quot; title=&quot;Claes Wallin (韋嘉誠)&quot;&gt;clacke&lt;/a&gt; is that the sequel to Time Crisis</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061410"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T08:28:03+00:00</published>
<updated>2017-05-05T08:28:03+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827630:objectType=comment</id>
<title>New comment by moonman</title>
<content type="html">@&lt;a href=&quot;https://social.heldscal.la/user/29138&quot; class=&quot;h-card mention&quot; title=&quot;Claes Wallin (韋嘉誠)&quot;&gt;clacke&lt;/a&gt; is that the sequel to Time Crisis</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827630"/>
<status_net notice_id="2061351"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827630:objectType=comment" href="https://shitposter.club/notice/2827630"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827630"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1056672"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1056672" local_id="1056672" ref="https://shitposter.club/conversation/1385528">https://shitposter.club/conversation/1385528</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061410.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061410.atom"/>
<statusnet:notice_info local_id="2061410" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061339:2017-05-05T08:21:05+00:00</id>
<title>Favorite</title>
<content type="html">lambadalambda favorited something by hardbass2k8: @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; pretty sure it's money laundering</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061357"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-05-05T08:21:05+00:00</published>
<updated>2017-05-05T08:21:05+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2017-05-05:noticeId=2827617:objectType=comment</id>
<title>New comment by hardbass2k8</title>
<content type="html">@&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card mention&quot; title=&quot;Constance Variable&quot;&gt;lambadalambda&lt;/a&gt; pretty sure it's money laundering</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2827617"/>
<status_net notice_id="2061339"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-05-05:noticeId=2827617:objectType=comment" href="https://shitposter.club/notice/2827617"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2827617"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1059050"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1059050" local_id="1059050" ref="https://shitposter.club/conversation/1387523">https://shitposter.club/conversation/1387523</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061357.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061357.atom"/>
<statusnet:notice_info local_id="2061357" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-05-05:noticeId=2061303:objectType=note</id>
<title>New note by lambadalambda</title>
<content type="html">It's got tattoos, it's got a pierced hood&lt;br /&gt; It's got generation X&lt;br /&gt; It's got lesbians, and vitriol&lt;br /&gt; And sadomasochistic latex sex&lt;br /&gt; It's got Mighty Morphin' power brokers&lt;br /&gt; And Tanya Harding nude&lt;br /&gt; Macrobiotic lacto-vegan non-confrontational free range food&lt;br /&gt; It's got the handshake, peace talk, non-aggression pact&lt;br /&gt; A multicultural integration of segregated historical facts&lt;br /&gt; &lt;br /&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/tag/nsfw&quot; rel=&quot;tag&quot;&gt;nsfw&lt;/a&gt;&lt;/span&gt; &lt;a href=&quot;https://social.heldscal.la/file/61c13b99c92f40ec4865e7a3830da340b187e3de70d94b8da38fd2138bbede3a.jpg&quot; title=&quot;https://social.heldscal.la/file/61c13b99c92f40ec4865e7a3830da340b187e3de70d94b8da38fd2138bbede3a.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-432199&quot;&gt;https://social.heldscal.la/attachment/432199&lt;/a&gt; &lt;a href=&quot;https://social.heldscal.la/file/a88bba1a324da68ee2cfdbcd1c4cde60bd9553298244d6f81731270b71aa80df.jpg&quot; title=&quot;https://social.heldscal.la/file/a88bba1a324da68ee2cfdbcd1c4cde60bd9553298244d6f81731270b71aa80df.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-432200&quot;&gt;https://social.heldscal.la/attachment/432200&lt;/a&gt; &lt;a href=&quot;https://social.heldscal.la/file/887329a303250e73dc2eea06b1f0512fcac4b9d1b534068f03c45f00d5b21c39.jpg&quot; title=&quot;https://social.heldscal.la/file/887329a303250e73dc2eea06b1f0512fcac4b9d1b534068f03c45f00d5b21c39.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-432201&quot;&gt;https://social.heldscal.la/attachment/432201&lt;/a&gt; &lt;a href=&quot;https://social.heldscal.la/file/6d7a1ec15c1368c4c68810434d24da528606fcbccdd1da97b25affafeeb6ffda.jpg&quot; title=&quot;https://social.heldscal.la/file/6d7a1ec15c1368c4c68810434d24da528606fcbccdd1da97b25affafeeb6ffda.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-432202&quot;&gt;https://social.heldscal.la/attachment/432202&lt;/a&gt; &lt;a href=&quot;https://social.heldscal.la/file/2f55f2bb028eb9be744cc82b35a6b86b496d8c3924c700aff55a872ff11df54c.jpg&quot; title=&quot;https://social.heldscal.la/file/2f55f2bb028eb9be744cc82b35a6b86b496d8c3924c700aff55a872ff11df54c.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-432203&quot;&gt;https://social.heldscal.la/attachment/432203&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2061303"/>
<status_net notice_id="2061303"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-05T08:17:08+00:00</published>
<updated>2017-05-05T08:17:08+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1061817"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1061817" local_id="1061817" ref="tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=bb6f4343036970e8">tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=bb6f4343036970e8</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<category term="nsfw"></category>
<link rel="enclosure" href="https://social.heldscal.la/file/61c13b99c92f40ec4865e7a3830da340b187e3de70d94b8da38fd2138bbede3a.jpg" type="image/jpeg" length="239712"/>
<link rel="enclosure" href="https://social.heldscal.la/file/a88bba1a324da68ee2cfdbcd1c4cde60bd9553298244d6f81731270b71aa80df.jpg" type="image/jpeg" length="185200"/>
<link rel="enclosure" href="https://social.heldscal.la/file/887329a303250e73dc2eea06b1f0512fcac4b9d1b534068f03c45f00d5b21c39.jpg" type="image/jpeg" length="292061"/>
<link rel="enclosure" href="https://social.heldscal.la/file/6d7a1ec15c1368c4c68810434d24da528606fcbccdd1da97b25affafeeb6ffda.jpg" type="image/jpeg" length="147280"/>
<link rel="enclosure" href="https://social.heldscal.la/file/2f55f2bb028eb9be744cc82b35a6b86b496d8c3924c700aff55a872ff11df54c.jpg" type="image/jpeg" length="164659"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061303.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2061303.atom"/>
<statusnet:notice_info local_id="2061303" source="Pleroma FE"></statusnet:notice_info>
</entry>
</feed>

View File

@ -0,0 +1,719 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/29191.atom</id>
<title>shp timeline</title>
<subtitle>Updates from shp on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/29191-96-20170421154949.jpeg</logo>
<updated>2017-05-05T11:57:06+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/29191</uri>
<name>shp</name>
<summary>cofe</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/shp"/>
<link rel="avatar" type="image/jpeg" media:width="735" media:height="735" href="https://social.heldscal.la/avatar/29191-original-20170421154949.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/29191-96-20170421154949.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/29191-48-20170421154949.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/29191-24-20170421161149.jpeg"/>
<poco:preferredUsername>shp</poco:preferredUsername>
<poco:displayName>shp</poco:displayName>
<poco:note>cofe</poco:note>
<poco:address>
<poco:formatted>cofe</poco:formatted>
</poco:address>
<followers url="https://social.heldscal.la/shp/subscribers"></followers>
<statusnet:profile_info local_id="29191"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/shp" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/29191.atom?max_id=1907936" rel="next" type="application/atom+xml"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/29191" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/29191" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/29191" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/29191.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:social.heldscal.la,2017-04-29:noticeId=1967657:objectType=note</id>
<title>shp repeated a notice by lain</title>
<content type="html">RT @&lt;a href=&quot;https://social.heldscal.la/user/37181&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Lain Iwakura&quot;&gt;lain&lt;/a&gt; @&lt;a href=&quot;https://social.heldscal.la/user/29191&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;shp&quot;&gt;shp&lt;/a&gt; @&lt;a href=&quot;https://social.heldscal.la/user/23211&quot; class=&quot;h-card u-url p-nickname mention&quot;&gt;lambadalambda&lt;/a&gt; cofe.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1967657"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-04-29T18:19:34+00:00</published>
<updated>2017-04-29T18:19:34+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c</id>
<title></title>
<content type="html">&lt;a href=&quot;https://pleroma.soykaf.com/users/shp&quot;&gt;@shp&lt;/a&gt; &lt;a href=&quot;https://social.heldscal.la/user/23211&quot;&gt;@lambadalambda@social.heldscal.la&lt;/a&gt; cofe.</content>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-29T18:14:36+00:00</published>
<updated>2017-04-29T18:14:36+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://pleroma.soykaf.com/users/lain</uri>
<name>lain</name>
<summary>Test account</summary>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="avatar" type="image/jpeg" media:width="250" media:height="202" href="https://social.heldscal.la/avatar/43188-original-20170429171039.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/43188-48-20170429172422.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/43188-24-20170429181411.jpeg"/>
<poco:preferredUsername>lain</poco:preferredUsername>
<poco:displayName>Lain Iwakura</poco:displayName>
<poco:note>Test account</poco:note>
<statusnet:profile_info local_id="43188"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c</id>
<title>New note by lain</title>
<content type="html">&lt;a href=&quot;https://pleroma.soykaf.com/users/shp&quot;&gt;@shp&lt;/a&gt; &lt;a href=&quot;https://social.heldscal.la/user/23211&quot;&gt;@lambadalambda@social.heldscal.la&lt;/a&gt; cofe.</content>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c"/>
<status_net notice_id="1967581"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1007769"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1007769" local_id="1007769" ref="tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab">tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://pleroma.soykaf.com/users/lain/feed.atom</id>
<title>Lain Iwakura</title>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="self" type="application/atom+xml" href="https://pleroma.soykaf.com/users/lain/feed.atom"/>
<icon>https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg</icon>
<updated>2017-05-05T08:38:03+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1007769"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1007769" local_id="1007769" ref="tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab">tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1967657.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1967657.atom"/>
<statusnet:notice_info local_id="1967657" source="Qvitter" repeat_of="1967581"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:subscription:29191:person:29558:2017-04-27T17:26:37+00:00</id>
<title>shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:26:37 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/shp&quot;&gt;shp&lt;/a&gt; started following &lt;a href=&quot;https://gs.smuglo.li/kfist&quot;&gt;KFist&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1933101"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-27T17:26:37+00:00</published>
<updated>2017-04-27T17:26:37+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://gs.smuglo.li/user/28051</id>
<title>KFist</title>
<summary>I stream thanks to @nepfag. I also drink, shitpost, and fly planes. I visited Japan and it changed my life. Do you love your station?</summary>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/kfist"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/29558-original-20170302030034.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/29558-original-20170302030034.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/29558-48-20170303232734.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/29558-24-20170304004149.jpeg"/>
<poco:preferredUsername>kfist</poco:preferredUsername>
<poco:displayName>KFist</poco:displayName>
<poco:note>I stream thanks to @nepfag. I also drink, shitpost, and fly planes. I visited Japan and it changed my life. Do you love your station?</poco:note>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>http://smuglo.li:8000/stream.m3u</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988472"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988472" local_id="988472" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=f766240d13ed9c2e">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=f766240d13ed9c2e</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933101.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933101.atom"/>
<statusnet:notice_info local_id="1933101" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:noticeId=1933030:objectType=note</id>
<title>shp repeated a notice by shpbot</title>
<content type="html">RT @&lt;a href=&quot;https://gs.archae.me/user/4687&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;shpbot&quot;&gt;shpbot&lt;/a&gt; &amp;gt;QuakeC</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1933030"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-04-27T17:21:10+00:00</published>
<updated>2017-04-27T17:21:10+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>tag:gs.archae.me,2017-04-27:noticeId=760881:objectType=note</id>
<title></title>
<content type="html">&lt;span class='greentext'&gt;&amp;gt;QuakeC&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.archae.me/notice/760881"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-27T17:15:13+00:00</published>
<updated>2017-04-27T17:15:13+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://gs.archae.me/user/4687</uri>
<name>shpbot</name>
<link rel="alternate" type="text/html" href="https://gs.archae.me/shpbot"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/31581-48-20170405170027.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/31581-24-20170405170342.jpeg"/>
<poco:preferredUsername>shpbot</poco:preferredUsername>
<poco:displayName>shpbot</poco:displayName>
<statusnet:profile_info local_id="31581"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.archae.me,2017-04-27:noticeId=760881:objectType=note</id>
<title>New note by shpbot</title>
<content type="html">&lt;span class='greentext'&gt;&amp;gt;QuakeC&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.archae.me/notice/760881"/>
<status_net notice_id="1932941"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988397"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988397" local_id="988397" ref="https://gs.archae.me/conversation/318362">https://gs.archae.me/conversation/318362</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://gs.archae.me/api/statuses/user_timeline/4687.atom</id>
<title>shpbot</title>
<link rel="alternate" type="text/html" href="https://gs.archae.me/shpbot"/>
<link rel="self" type="application/atom+xml" href="https://gs.archae.me/api/statuses/user_timeline/4687.atom"/>
<icon>https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg</icon>
<updated>2017-05-05T11:45:08+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988397"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988397" local_id="988397" ref="https://gs.archae.me/conversation/318362">https://gs.archae.me/conversation/318362</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933030.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933030.atom"/>
<statusnet:notice_info local_id="1933030" source="Qvitter" repeat_of="1932941"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:subscription:29191:person:23226:2017-04-27T17:20:48+00:00</id>
<title>shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:48 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/shp&quot;&gt;shp&lt;/a&gt; started following &lt;a href=&quot;http://quitter.se/taknamay&quot;&gt;Internet Turtle Ⓐ 🏴 ✅&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1933025"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-27T17:20:48+00:00</published>
<updated>2017-04-27T17:20:48+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>http://quitter.se/user/115823</id>
<title>Internet Turtle Ⓐ 🏴 ✅</title>
<summary>Scheme programmer, Novice esperantist, Spiritual naturalist - Will listen to your problems for free - XMPP: DarkDungeons94 at chatme.im</summary>
<link rel="alternate" type="text/html" href="http://quitter.se/taknamay"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23226-original-20170427130915.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23226-original-20170427130915.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23226-48-20170427130918.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23226-24-20170427171808.jpeg"/>
<poco:preferredUsername>taknamay</poco:preferredUsername>
<poco:displayName>Internet Turtle Ⓐ 🏴 ✅</poco:displayName>
<poco:note>Scheme programmer, Novice esperantist, Spiritual naturalist - Will listen to your problems for free - XMPP: DarkDungeons94 at chatme.im</poco:note>
<poco:address>
<poco:formatted>New Jersey, United States</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://quitter.se/taknamay</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988439"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988439" local_id="988439" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=a66b1fb22020c152">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=a66b1fb22020c152</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933025.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933025.atom"/>
<statusnet:notice_info local_id="1933025" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:subscription:29191:person:29302:2017-04-27T17:20:33+00:00</id>
<title>shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:33 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/shp&quot;&gt;shp&lt;/a&gt; started following &lt;a href=&quot;https://icosahedron.website/@Trev&quot;&gt;Chillidan Stormrave&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1933022"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-27T17:20:33+00:00</published>
<updated>2017-04-27T17:20:33+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://icosahedron.website/users/Trev</id>
<title>Trev Prime</title>
<summary>web tech, music, ethics. radical individualist. kinda queer. love thy neighbor. always open for conversation. </summary>
<link rel="alternate" type="text/html" href="https://icosahedron.website/@Trev"/>
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://social.heldscal.la/avatar/29302-original-20170417171941.png"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/29302-96-20170417171942.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/29302-48-20170417171942.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/29302-24-20170417180438.png"/>
<poco:preferredUsername>trev</poco:preferredUsername>
<poco:displayName>Trev Prime</poco:displayName>
<poco:note>web tech, music, ethics. radical individualist. kinda queer. love thy neighbor. always open for conversation. </poco:note>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988436"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988436" local_id="988436" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=781c05bd64ad9520">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=781c05bd64ad9520</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933022.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933022.atom"/>
<statusnet:notice_info local_id="1933022" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:subscription:29191:person:29367:2017-04-27T17:20:27+00:00</id>
<title>shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:27 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/shp&quot;&gt;shp&lt;/a&gt; started following &lt;a href=&quot;https://gs.kawa-kun.com/aya&quot;&gt;射命丸 文&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1933020"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-27T17:20:27+00:00</published>
<updated>2017-04-27T17:20:27+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://gs.kawa-kun.com/user/4885</id>
<title>射命丸 文</title>
<summary>Traditional Reporter of Fantasy</summary>
<link rel="alternate" type="text/html" href="https://gs.kawa-kun.com/aya"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/29367-original-20170322091904.png"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/29367-original-20170322091904.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/29367-48-20170322103327.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/29367-24-20170322185131.png"/>
<poco:preferredUsername>aya</poco:preferredUsername>
<poco:displayName>射命丸 文</poco:displayName>
<poco:note>Traditional Reporter of Fantasy</poco:note>
<poco:address>
<poco:formatted>Gensōkyō</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://danbooru.donmai.us</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988435"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988435" local_id="988435" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=5921da7a934e47ca">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=5921da7a934e47ca</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933020.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933020.atom"/>
<statusnet:notice_info local_id="1933020" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:subscription:29191:person:27773:2017-04-27T17:20:18+00:00</id>
<title>shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:18 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/shp&quot;&gt;shp&lt;/a&gt; started following &lt;a href=&quot;https://gs.smuglo.li/japananon&quot;&gt;JapanAnon&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1933017"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-27T17:20:18+00:00</published>
<updated>2017-04-27T17:20:18+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://gs.smuglo.li/user/27299</id>
<title>JapanAnon</title>
<summary>匿名でしていてね!</summary>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/japananon"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/27773-original-20170102074719.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/27773-original-20170102074719.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/27773-48-20170103173058.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/27773-24-20170103173058.jpeg"/>
<poco:preferredUsername>japananon</poco:preferredUsername>
<poco:displayName>JapanAnon</poco:displayName>
<poco:note>匿名でしていてね!</poco:note>
<poco:address>
<poco:formatted>ワイヤード</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>http://www.anonymous-japan.org</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988434"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988434" local_id="988434" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=ae3d819865886cba">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=ae3d819865886cba</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933017.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933017.atom"/>
<statusnet:notice_info local_id="1933017" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:subscription:29191:person:36560:2017-04-27T17:19:30+00:00</id>
<title>shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:19:30 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/shp&quot;&gt;shp&lt;/a&gt; started following &lt;a href=&quot;https://shitposter.club/wareya&quot;&gt;wareya&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1933001"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-27T17:19:30+00:00</published>
<updated>2017-04-27T17:19:30+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://shitposter.club/user/15439</id>
<title>wareya</title>
<summary>Who are you to defy such a perfect being that is the machine? 日本語難しいけど頑張るぜ github.com/wareya wareya.moe Short: reya or war, never &quot;ware&quot;</summary>
<link rel="alternate" type="text/html" href="https://shitposter.club/wareya"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/36560-original-20170414073546.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/36560-original-20170414073546.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/36560-48-20170414075036.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/36560-24-20170427171930.jpeg"/>
<poco:preferredUsername>wareya</poco:preferredUsername>
<poco:displayName>wareya</poco:displayName>
<poco:note>Who are you to defy such a perfect being that is the machine? 日本語難しいけど頑張るぜ github.com/wareya wareya.moe Short: reya or war, never &quot;ware&quot;</poco:note>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988426"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988426" local_id="988426" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=bd88a3cd20b5a418">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=bd88a3cd20b5a418</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933001.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1933001.atom"/>
<statusnet:notice_info local_id="1933001" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:subscription:29191:person:41176:2017-04-27T17:19:21+00:00</id>
<title>shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:19:21 UTC</title>
<content type="html">&lt;a href=&quot;https://social.heldscal.la/shp&quot;&gt;shp&lt;/a&gt; started following &lt;a href=&quot;https://hakui.club/takeshitakenji&quot;&gt;竹下憲二 (白)&lt;/a&gt;.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1932999"/>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<published>2017-04-27T17:19:21+00:00</published>
<updated>2017-04-27T17:19:21+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>https://hakui.club/user/6</id>
<title>竹下憲二 (白)</title>
<summary>Oh boy.</summary>
<link rel="alternate" type="text/html" href="https://hakui.club/takeshitakenji"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/41176-original-20170428153916.png"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/41176-original-20170428153916.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/41176-48-20170428153926.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/41176-24-20170428160801.png"/>
<poco:preferredUsername>takeshitakenji</poco:preferredUsername>
<poco:displayName>竹下憲二 (白)</poco:displayName>
<poco:note>Oh boy.</poco:note>
<poco:address>
<poco:formatted>Seattle, WA</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>http://gs.kawa-kun.com</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988424"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988424" local_id="988424" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=b139a673deba6963">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=b139a673deba6963</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932999.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932999.atom"/>
<statusnet:notice_info local_id="1932999" source="activity"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:fave:29191:note:1932205:2017-04-27T17:17:46+00:00</id>
<title>Favorite</title>
<content type="html">shp favorited something by dolus: Looks like Merry is pussing out and caving to pressure. Sad. &lt;a href=&quot;https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png&quot; title=&quot;https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432294&lt;/a&gt; &lt;a href=&quot;https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png&quot; title=&quot;https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432295&lt;/a&gt; &lt;a href=&quot;https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png&quot; title=&quot;https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432296&lt;/a&gt; &lt;a href=&quot;https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png&quot; title=&quot;https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432297&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1932976"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-04-27T17:17:46+00:00</published>
<updated>2017-04-27T17:17:46+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.smuglo.li,2017-04-27:noticeId=2065465:objectType=note</id>
<title>New note by dolus</title>
<content type="html">Looks like Merry is pussing out and caving to pressure. Sad. &lt;a href=&quot;https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png&quot; title=&quot;https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432294&lt;/a&gt; &lt;a href=&quot;https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png&quot; title=&quot;https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432295&lt;/a&gt; &lt;a href=&quot;https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png&quot; title=&quot;https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432296&lt;/a&gt; &lt;a href=&quot;https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png&quot; title=&quot;https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432297&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/2065465"/>
<status_net notice_id="1932205"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:gs.smuglo.li,2017-04-27:noticeId=2065465:objectType=note" href="https://gs.smuglo.li/notice/2065465"></thr:in-reply-to>
<link rel="related" href="https://gs.smuglo.li/notice/2065465"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/987894"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/987894" local_id="987894" ref="https://gs.smuglo.li/conversation/927473">https://gs.smuglo.li/conversation/927473</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932976.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932976.atom"/>
<statusnet:notice_info local_id="1932976" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:fave:29191:note:1932492:2017-04-27T17:13:55+00:00</id>
<title>Favorite</title>
<content type="html">shp favorited something by zemichi: &lt;a href=&quot;https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg&quot; title=&quot;https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432344&lt;/a&gt;&lt;br /&gt; that's a lot of loli</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1932922"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-04-27T17:13:55+00:00</published>
<updated>2017-04-27T17:13:55+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.smuglo.li,2017-04-27:noticeId=2065713:objectType=note</id>
<title>New note by zemichi</title>
<content type="html">&lt;a href=&quot;https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg&quot; title=&quot;https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432344&lt;/a&gt;&lt;br /&gt; that's a lot of loli</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/2065713"/>
<status_net notice_id="1932492"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:gs.smuglo.li,2017-04-27:noticeId=2065713:objectType=note" href="https://gs.smuglo.li/notice/2065713"></thr:in-reply-to>
<link rel="related" href="https://gs.smuglo.li/notice/2065713"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988113"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988113" local_id="988113" ref="https://gs.smuglo.li/conversation/927673">https://gs.smuglo.li/conversation/927673</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932922.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932922.atom"/>
<statusnet:notice_info local_id="1932922" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:fave:29191:note:1932559:2017-04-27T17:12:46+00:00</id>
<title>Favorite</title>
<content type="html">shp favorited something by gsimg: &lt;a href=&quot;https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg&quot; title=&quot;https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg&lt;/a&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.kawa-kun.com/tag/nsfw&quot; rel=&quot;tag&quot;&gt;nsfw&lt;/a&gt;&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1932894"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-04-27T17:12:46+00:00</published>
<updated>2017-04-27T17:12:46+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.kawa-kun.com,2017-04-27:noticeId=1608309:objectType=note</id>
<title>New note by gsimg</title>
<content type="html">&lt;a href=&quot;https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg&quot; title=&quot;https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg&lt;/a&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.kawa-kun.com/tag/nsfw&quot; rel=&quot;tag&quot;&gt;nsfw&lt;/a&gt;&lt;/span&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.kawa-kun.com/notice/1608309"/>
<status_net notice_id="1932559"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:gs.kawa-kun.com,2017-04-27:noticeId=1608309:objectType=note" href="https://gs.kawa-kun.com/notice/1608309"></thr:in-reply-to>
<link rel="related" href="https://gs.kawa-kun.com/notice/1608309"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988157"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988157" local_id="988157" ref="https://gs.kawa-kun.com/conversation/690817">https://gs.kawa-kun.com/conversation/690817</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932894.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932894.atom"/>
<statusnet:notice_info local_id="1932894" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:fave:29191:note:1932601:2017-04-27T17:12:28+00:00</id>
<title>Favorite</title>
<content type="html">shp favorited something by zemichi: &lt;a href=&quot;https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg&quot; title=&quot;https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432372&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1932888"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-04-27T17:12:28+00:00</published>
<updated>2017-04-27T17:12:28+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.smuglo.li,2017-04-27:noticeId=2065821:objectType=note</id>
<title>New note by zemichi</title>
<content type="html">&lt;a href=&quot;https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg&quot; title=&quot;https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://gs.smuglo.li/attachment/432372&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/2065821"/>
<status_net notice_id="1932601"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:gs.smuglo.li,2017-04-27:noticeId=2065821:objectType=note" href="https://gs.smuglo.li/notice/2065821"></thr:in-reply-to>
<link rel="related" href="https://gs.smuglo.li/notice/2065821"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988189"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988189" local_id="988189" ref="https://gs.smuglo.li/conversation/927760">https://gs.smuglo.li/conversation/927760</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932888.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932888.atom"/>
<statusnet:notice_info local_id="1932888" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-27:noticeId=1932867:objectType=note</id>
<title>shp repeated a notice by shpbot</title>
<content type="html">RT @&lt;a href=&quot;https://gs.archae.me/user/4687&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;shpbot&quot;&gt;shpbot&lt;/a&gt; &lt;a href=&quot;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&quot; title=&quot;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-237676&quot;&gt;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&lt;/a&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/tag/2hu&quot; rel=&quot;tag&quot;&gt;2hu&lt;/a&gt;&lt;/span&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/tag/ordinarymagician&quot; rel=&quot;tag&quot;&gt;ordinarymagician&lt;/a&gt;&lt;/span&gt; :thinking: &lt;a href=&quot;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&quot; title=&quot;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-312306&quot;&gt;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1932867"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-04-27T17:11:35+00:00</published>
<updated>2017-04-27T17:11:35+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>tag:gs.archae.me,2017-04-27:noticeId=760830:objectType=note</id>
<title></title>
<content type="html">&lt;a href=&quot;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&quot; title=&quot;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&lt;/a&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.archae.me/tag/2hu&quot; rel=&quot;tag&quot;&gt;2hu&lt;/a&gt;&lt;/span&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.archae.me/tag/ordinarymagician&quot; rel=&quot;tag&quot;&gt;ordinarymagician&lt;/a&gt;&lt;/span&gt; :thinking: &lt;a href=&quot;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&quot; title=&quot;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.archae.me/notice/760830"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-27T17:00:08+00:00</published>
<updated>2017-04-27T17:00:08+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://gs.archae.me/user/4687</uri>
<name>shpbot</name>
<link rel="alternate" type="text/html" href="https://gs.archae.me/shpbot"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/31581-48-20170405170027.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/31581-24-20170405170342.jpeg"/>
<poco:preferredUsername>shpbot</poco:preferredUsername>
<poco:displayName>shpbot</poco:displayName>
<statusnet:profile_info local_id="31581"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.archae.me,2017-04-27:noticeId=760830:objectType=note</id>
<title>New note by shpbot</title>
<content type="html">&lt;a href=&quot;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&quot; title=&quot;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg&lt;/a&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.archae.me/tag/2hu&quot; rel=&quot;tag&quot;&gt;2hu&lt;/a&gt;&lt;/span&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://gs.archae.me/tag/ordinarymagician&quot; rel=&quot;tag&quot;&gt;ordinarymagician&lt;/a&gt;&lt;/span&gt; :thinking: &lt;a href=&quot;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&quot; title=&quot;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.archae.me/notice/760830"/>
<status_net notice_id="1932673"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988229"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988229" local_id="988229" ref="https://gs.archae.me/conversation/318317">https://gs.archae.me/conversation/318317</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<category term="2hu"></category>
<category term="ordinarymagician"></category>
<source>
<id>https://gs.archae.me/api/statuses/user_timeline/4687.atom</id>
<title>shpbot</title>
<link rel="alternate" type="text/html" href="https://gs.archae.me/shpbot"/>
<link rel="self" type="application/atom+xml" href="https://gs.archae.me/api/statuses/user_timeline/4687.atom"/>
<icon>https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg</icon>
<updated>2017-05-05T11:45:08+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988229"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988229" local_id="988229" ref="https://gs.archae.me/conversation/318317">https://gs.archae.me/conversation/318317</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932867.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932867.atom"/>
<statusnet:notice_info local_id="1932867" source="api" repeat_of="1932673"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-04-27:noticeId=1932815:objectType=note</id>
<title>New note by shp</title>
<content type="html">federation issues with SPC atm it seems</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1932815"/>
<status_net notice_id="1932815"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-27T17:08:55+00:00</published>
<updated>2017-04-27T17:08:55+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/988321"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/988321" local_id="988321" ref="tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=645a13c841f51769">tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=645a13c841f51769</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932815.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1932815.atom"/>
<statusnet:notice_info local_id="1932815" source="Pleroma FE"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-26:fave:29191:note:1907285:2017-04-26T06:59:07+00:00</id>
<title>Favorite</title>
<content type="html">shp favorited something by lambadalambda: Is this the most offensive video on the net? &lt;a href=&quot;https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm&quot; title=&quot;https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://social.heldscal.la/attachment/402251&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1907959"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-04-26T06:59:07+00:00</published>
<updated>2017-04-26T06:59:07+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-04-26:noticeId=1907285:objectType=note</id>
<title>New note by lambadalambda</title>
<content type="html">Is this the most offensive video on the net? &lt;a href=&quot;https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm&quot; title=&quot;https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-402251&quot;&gt;https://social.heldscal.la/attachment/402251&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1907285"/>
<status_net notice_id="1907285"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:social.heldscal.la,2017-04-26:noticeId=1907285:objectType=note" href="https://social.heldscal.la/notice/1907285"></thr:in-reply-to>
<link rel="related" href="https://social.heldscal.la/notice/1907285"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/972605"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/972605" local_id="972605" ref="tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=07b02e1328f456af">tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=07b02e1328f456af</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907959.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907959.atom"/>
<statusnet:notice_info local_id="1907959" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-26:noticeId=1907951:objectType=note</id>
<title>shp repeated a notice by shpbot</title>
<content type="html">RT @&lt;a href=&quot;https://gs.archae.me/user/4687&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;shpbot&quot;&gt;shpbot&lt;/a&gt; &lt;a href=&quot;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&quot; title=&quot;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-346198&quot;&gt;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1907951"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-04-26T06:58:19+00:00</published>
<updated>2017-04-26T06:58:19+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>tag:gs.archae.me,2017-04-26:noticeId=752596:objectType=note</id>
<title></title>
<content type="html">&lt;a href=&quot;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&quot; title=&quot;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.archae.me/notice/752596"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-26T06:15:07+00:00</published>
<updated>2017-04-26T06:15:07+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://gs.archae.me/user/4687</uri>
<name>shpbot</name>
<link rel="alternate" type="text/html" href="https://gs.archae.me/shpbot"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/31581-48-20170405170027.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/31581-24-20170405170342.jpeg"/>
<poco:preferredUsername>shpbot</poco:preferredUsername>
<poco:displayName>shpbot</poco:displayName>
<statusnet:profile_info local_id="31581"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.archae.me,2017-04-26:noticeId=752596:objectType=note</id>
<title>New note by shpbot</title>
<content type="html">&lt;a href=&quot;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&quot; title=&quot;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.archae.me/notice/752596"/>
<status_net notice_id="1907331"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/972636"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/972636" local_id="972636" ref="https://gs.archae.me/conversation/314010">https://gs.archae.me/conversation/314010</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://gs.archae.me/api/statuses/user_timeline/4687.atom</id>
<title>shpbot</title>
<link rel="alternate" type="text/html" href="https://gs.archae.me/shpbot"/>
<link rel="self" type="application/atom+xml" href="https://gs.archae.me/api/statuses/user_timeline/4687.atom"/>
<icon>https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg</icon>
<updated>2017-05-05T11:45:08+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/972636"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/972636" local_id="972636" ref="https://gs.archae.me/conversation/314010">https://gs.archae.me/conversation/314010</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907951.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907951.atom"/>
<statusnet:notice_info local_id="1907951" source="api" repeat_of="1907331"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-26:fave:29191:note:1907341:2017-04-26T06:58:16+00:00</id>
<title>Favorite</title>
<content type="html">shp favorited something by moonman: &lt;a href=&quot;https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg&quot; title=&quot;https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg&quot; class=&quot;attachment&quot; rel=&quot;nofollow&quot;&gt;https://shitposter.club/attachment/630989&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1907949"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-04-26T06:58:16+00:00</published>
<updated>2017-04-26T06:58:16+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:shitposter.club,2017-04-26:noticeId=2681941:objectType=note</id>
<title>New note by moonman</title>
<content type="html">&lt;a href=&quot;https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg&quot; title=&quot;https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg&quot; class=&quot;attachment&quot; rel=&quot;nofollow&quot;&gt;https://shitposter.club/attachment/630989&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2681941"/>
<status_net notice_id="1907341"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:shitposter.club,2017-04-26:noticeId=2681941:objectType=note" href="https://shitposter.club/notice/2681941"></thr:in-reply-to>
<link rel="related" href="https://shitposter.club/notice/2681941"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/972646"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/972646" local_id="972646" ref="https://shitposter.club/conversation/1300990">https://shitposter.club/conversation/1300990</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907949.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907949.atom"/>
<statusnet:notice_info local_id="1907949" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<id>tag:social.heldscal.la,2017-04-26:fave:29191:comment:1907412:2017-04-26T06:57:56+00:00</id>
<title>Favorite</title>
<content type="html">shp favorited something by lambadalambda: @&lt;a href=&quot;https://gs.smuglo.li/user/2&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;nepfag&quot;&gt;nepfag&lt;/a&gt; &lt;a href=&quot;https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;amp;gi=a6a47c5466a0&quot; title=&quot;https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;amp;gi=a6a47c5466a0&quot; rel=&quot;nofollow noreferrer&quot; class=&quot;attachment&quot;&gt;https://social.heldscal.la/url/402273&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1907947"/>
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<published>2017-04-26T06:57:56+00:00</published>
<updated>2017-04-26T06:57:56+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-04-26:noticeId=1907412:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://gs.smuglo.li/user/2&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;nepfag&quot;&gt;nepfag&lt;/a&gt; &lt;a href=&quot;https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;amp;gi=a6a47c5466a0&quot; title=&quot;https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;amp;gi=a6a47c5466a0&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-402273&quot;&gt;https://social.heldscal.la/url/402273&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1907412"/>
<status_net notice_id="1907412"></status_net>
</activity:object>
<thr:in-reply-to ref="tag:social.heldscal.la,2017-04-26:noticeId=1907412:objectType=comment" href="https://social.heldscal.la/notice/1907412"></thr:in-reply-to>
<link rel="related" href="https://social.heldscal.la/notice/1907412"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/972634"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/972634" local_id="972634" ref="tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=85c21eda7aaa7259">tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=85c21eda7aaa7259</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907947.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907947.atom"/>
<statusnet:notice_info local_id="1907947" source="unknown"></statusnet:notice_info>
</entry>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-04-26:noticeId=1907942:objectType=note</id>
<title>New note by shp</title>
<content type="html">#&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;https://social.heldscal.la/tag/cofe&quot; rel=&quot;tag&quot;&gt;cofe&lt;/a&gt;&lt;/span&gt; time my friends &lt;a href=&quot;https://social.heldscal.la/file/ec254b45b3a86ff74bc08bc7e065cb681d77cf7d4cedc9cdcf59e16adf311da3.png&quot; title=&quot;https://social.heldscal.la/file/ec254b45b3a86ff74bc08bc7e065cb681d77cf7d4cedc9cdcf59e16adf311da3.png&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-402381&quot;&gt;https://social.heldscal.la/attachment/402381&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1907942"/>
<status_net notice_id="1907942"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-26T06:57:18+00:00</published>
<updated>2017-04-26T06:57:18+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/973042"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/973042" local_id="973042" ref="tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=9c9d9373bccfaf70">tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=9c9d9373bccfaf70</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<category term="cofe"></category>
<link rel="enclosure" href="https://social.heldscal.la/file/ec254b45b3a86ff74bc08bc7e065cb681d77cf7d4cedc9cdcf59e16adf311da3.png" type="image/png" length="3179103"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907942.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1907942.atom"/>
<statusnet:notice_info local_id="1907942" source="Pleroma FE"></statusnet:notice_info>
</entry>
</feed>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>https://social.heldscal.la/user/23211</Subject>
<Alias>acct:lambadalambda@social.heldscal.la</Alias>
<Alias>https://social.heldscal.la/lambadalambda</Alias>
<Alias>https://social.heldscal.la/index.php/user/23211</Alias>
<Alias>https://social.heldscal.la/index.php/lambadalambda</Alias>
<Link rel="http://webfinger.net/rel/profile-page" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<Link rel="http://gmpg.org/xfn/11" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<Link rel="describedby" type="application/rdf+xml" href="https://social.heldscal.la/lambadalambda/foaf"/>
<Link rel="http://apinamespace.org/atom" type="application/atomsvc+xml" href="https://social.heldscal.la/api/statusnet/app/service/lambadalambda.xml"/>
<Link rel="http://apinamespace.org/twitter" href="https://social.heldscal.la/api/"/>
<Link rel="http://specs.openid.net/auth/2.0/provider" href="https://social.heldscal.la/lambadalambda"/>
<Link rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom"/>
<Link rel="magic-public-key" href="data:application/magic-public-key,RSA.uzg6r1peZU0vXGADWxGJ0PE34WvmhjUmydbX5YYdOiXfODVLwCMi1umGoqUDm-mRu4vNEdFBVJU1CpFA7dKzWgIsqsa501i2XqElmEveXRLvNRWFB6nG03Q5OUY2as8eE54BJm0p20GkMfIJGwP6TSFb-ICp3QjzbatuSPJ6xCE=.AQAB"/>
<Link rel="salmon" href="https://social.heldscal.la/main/salmon/user/23211"/>
<Link rel="http://salmon-protocol.org/ns/salmon-replies" href="https://social.heldscal.la/main/salmon/user/23211"/>
<Link rel="http://salmon-protocol.org/ns/salmon-mention" href="https://social.heldscal.la/main/salmon/user/23211"/>
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://social.heldscal.la/main/ostatussub?profile={uri}"/>
</XRD>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>https://social.heldscal.la/user/29191</Subject>
<Alias>acct:shp@social.heldscal.la</Alias>
<Alias>https://social.heldscal.la/shp</Alias>
<Alias>https://social.heldscal.la/index.php/user/29191</Alias>
<Alias>https://social.heldscal.la/index.php/shp</Alias>
<Link rel="http://webfinger.net/rel/profile-page" type="text/html" href="https://social.heldscal.la/shp"/>
<Link rel="http://gmpg.org/xfn/11" type="text/html" href="https://social.heldscal.la/shp"/>
<Link rel="describedby" type="application/rdf+xml" href="https://social.heldscal.la/shp/foaf"/>
<Link rel="http://apinamespace.org/atom" type="application/atomsvc+xml" href="https://social.heldscal.la/api/statusnet/app/service/shp.xml"/>
<Link rel="http://apinamespace.org/twitter" href="https://social.heldscal.la/api/"/>
<Link rel="http://specs.openid.net/auth/2.0/provider" href="https://social.heldscal.la/shp"/>
<Link rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/user_timeline/29191.atom"/>
<Link rel="magic-public-key" href="data:application/magic-public-key,RSA.wQ3i9UA0qmAxZ0WTIp4a-waZn_17Ez1pEEmqmqoooRsG1_BvpmOvLN0G2tEcWWxl2KOtdQMCiPptmQObeZeuj48mdsDZ4ArQinexY2hCCTcbV8Xpswpkb8K05RcKipdg07pnI7tAgQ0VWSZDImncL6YUGlG5YN8b5TjGOwk2VG8=.AQAB"/>
<Link rel="salmon" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://salmon-protocol.org/ns/salmon-replies" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://salmon-protocol.org/ns/salmon-mention" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://social.heldscal.la/main/ostatussub?profile={uri}"/>
</XRD>

View File

@ -0,0 +1,90 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Internal Server Error - social.heldscal.la</title>
<link rel="shortcut icon" href="https://social.heldscal.la/theme/neo-gnu/favicon.ico"/>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/theme/base/css/display.css?version=1.0.2-dev" media="screen, projection, tv, print"/>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/theme/neo-gnu/css/display.css?version=1.0.2-dev" media="screen, projection, tv, print"/>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/modules/Oembed/css/oembed.css" media=""/>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/modules/OStatus/theme/base/css/ostatus.css" media=""/>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/media/js/extlib/jquery-ui/css/smoothness/jquery-ui.css?version=1.0.2-dev" media=""/>
<style type="text/css" media="">.greentext { color: green; }</style>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/modules/Bookmark/css/bookmark.css" media=""/>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/modules/Event/css/event.css" media=""/>
<link rel="stylesheet" type="text/css" href="https://social.heldscal.la/modules/Poll/css/poll.css" media=""/>
<link rel="search" type="application/opensearchdescription+xml" href="https://social.heldscal.la/opensearch/people" title="social.heldscal.la People Search"/>
<link rel="search" type="application/opensearchdescription+xml" href="https://social.heldscal.la/opensearch/notice" title="social.heldscal.la Notice Search"/>
</head>
<body id="error">
<div id="wrap">
<div id="header">
<address id="site_contact" class="h-card">
<a class="home bookmark" href="https://social.heldscal.la/main/public">
<img class="logo u-photo p-name" src="https://social.heldscal.la/theme/neo-gnu/logo.png" alt="social.heldscal.la"/>
</a>
</address>
<div id="site_nav_global_primary">
<form id="header-search" class="form" method="get" action="https://social.heldscal.la/search/notice">
<fieldset>
<input name="q" size="20" id="search-q"/>
<input type="submit" value="Search"/>
</fieldset>
</form>
<ul class="nav">
<li id="top_nav_doc_faq">
<a href="https://social.heldscal.la/doc/faq" title="Frequently asked questions">FAQ</a>
</li>
<li id="nav_login">
<a href="https://social.heldscal.la/main/login" title="Login to the site.">Login</a>
</li>
</ul>
</div>
</div>
<div id="core">
<div id="aside_primary_wrapper">
<div id="content_wrapper">
<div id="site_nav_local_views_wrapper">
<div id="content">
<h1>Internal Server Error</h1>
<div id="content_inner">
<div class="error">No such user found.</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<ul class="nav" id="site_nav_global_secondary">
<li>
<a href="https://social.heldscal.la/doc/help">Help</a>
</li>
<li>
<a href="https://social.heldscal.la/doc/about">About</a>
</li>
<li>
<a href="https://social.heldscal.la/doc/faq">FAQ</a>
</li>
<li>
<a href="https://social.heldscal.la/doc/privacy">Privacy</a>
</li>
<li>
<a href="https://social.heldscal.la/doc/source">Source</a>
</li>
<li>
<a href="https://social.heldscal.la/main/version">Version</a>
</li>
<li>
<a href="https://social.heldscal.la/doc/contact">Contact</a>
</li>
</ul>
<p><strong>social.heldscal.la</strong> is a social network. It runs on <a href="https://www.postactiv.com/">postActiv</a>, version 1.0.2-dev, available under the <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">GNU Affero General Public License</a>.</p>
<p>
<img id="license_cc" src="/theme/licenses/cc_by_3.0_80x15.png" alt="Creative Commons Attribution 3.0" width="80" height="15"/>
All social.heldscal.la content and data are available under the <a class="license" rel="external license" href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.</p>
</div>
</div>
</body>
<!-- 25ms --></html>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>acct:shp@social.heldscal.la</Subject>
<Alias>https://social.heldscal.la/user/29191</Alias>
<Alias>https://social.heldscal.la/shp</Alias>
<Alias>https://social.heldscal.la/index.php/user/29191</Alias>
<Alias>https://social.heldscal.la/index.php/shp</Alias>
<Link rel="http://webfinger.net/rel/profile-page" type="text/html" href="https://social.heldscal.la/shp"/>
<Link rel="http://gmpg.org/xfn/11" type="text/html" href="https://social.heldscal.la/shp"/>
<Link rel="describedby" type="application/rdf+xml" href="https://social.heldscal.la/shp/foaf"/>
<Link rel="http://apinamespace.org/atom" type="application/atomsvc+xml" href="https://social.heldscal.la/api/statusnet/app/service/shp.xml"/>
<Link rel="http://apinamespace.org/twitter" href="https://social.heldscal.la/api/"/>
<Link rel="http://specs.openid.net/auth/2.0/provider" href="https://social.heldscal.la/shp"/>
<Link rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/user_timeline/29191.atom"/>
<Link rel="magic-public-key" href="data:application/magic-public-key,RSA.wQ3i9UA0qmAxZ0WTIp4a-waZn_17Ez1pEEmqmqoooRsG1_BvpmOvLN0G2tEcWWxl2KOtdQMCiPptmQObeZeuj48mdsDZ4ArQinexY2hCCTcbV8Xpswpkb8K05RcKipdg07pnI7tAgQ0VWSZDImncL6YUGlG5YN8b5TjGOwk2VG8=.AQAB"/>
<Link rel="salmon" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://salmon-protocol.org/ns/salmon-replies" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://salmon-protocol.org/ns/salmon-mention" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://social.heldscal.la/main/ostatussub?profile={uri}"/>
</XRD>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" ?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:statusnet="http://status.net/schema/api/1/">
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-23:noticeId=29:objectType=note</id>
<title>New note by lambda</title>
<content type="html">@&lt;a href=&quot;http://pleroma.example.org:4000/users/lain3&quot; class=&quot;h-card mention&quot;&gt;lain3&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="http://gs.example.org:4040/index.php/notice/29"/>
<status_net notice_id="29"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-23T14:51:03+00:00</published>
<updated>2017-04-23T14:51:03+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>http://gs.example.org:4040/index.php/user/1</uri>
<name>lambda</name>
<link rel="alternate" type="text/html" href="http://gs.example.org:4040/index.php/lambda"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-stream.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-mini.png"/>
<poco:preferredUsername>lambda</poco:preferredUsername>
<poco:displayName>lambda</poco:displayName>
<followers url="http://gs.example.org:4040/index.php/lambda/subscribers"></followers>
<statusnet:profile_info local_id="1"></statusnet:profile_info>
</author>
<link rel="ostatus:conversation" href="tag:gs.example.org:4040,2017-04-23:objectType=thread:nonce=f09e22f58abd5c7b"/>
<ostatus:conversation>tag:gs.example.org:4040,2017-04-23:objectType=thread:nonce=f09e22f58abd5c7b</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain3"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom</id>
<title>lambda</title>
<link rel="alternate" type="text/html" href="http://gs.example.org:4040/index.php/lambda"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom"/>
<link rel="license" href="https://creativecommons.org/licenses/by/3.0/"/>
<icon>http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png</icon>
<updated>2017-04-23T14:51:03+00:00</updated>
</source>
<link rel="self" type="application/atom+xml" href="http://gs.example.org:4040/index.php/api/statuses/show/29.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org:4040/index.php/api/statuses/show/29.atom"/>
<statusnet:notice_info local_id="29" source="web"></statusnet:notice_info>
</entry>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" ?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:statusnet="http://status.net/schema/api/1/">
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:gs.example.org:4040,2017-04-25:noticeId=55:objectType=note</id>
<title>New note by lambda</title>
<content type="html">hey.</content>
<link rel="alternate" type="text/html" href="http://gs.example.org:4040/index.php/notice/55"/>
<status_net notice_id="55"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-25T18:16:13+00:00</published>
<updated>2017-04-25T18:16:13+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>http://gs.example.org:4040/index.php/user/1</uri>
<name>lambda</name>
<link rel="alternate" type="text/html" href="http://gs.example.org:4040/index.php/lambda"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-stream.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-mini.png"/>
<poco:preferredUsername>lambda</poco:preferredUsername>
<poco:displayName>lambda</poco:displayName>
<followers url="http://gs.example.org:4040/index.php/lambda/subscribers"></followers>
<statusnet:profile_info local_id="1"></statusnet:profile_info>
</author>
<thr:in-reply-to ref="http://pleroma.example.org:4000/objects/55bce8fc-b423-46b1-af71-3759ab4670bc" href="http://pleroma.example.org:4000/objects/55bce8fc-b423-46b1-af71-3759ab4670bc"></thr:in-reply-to>
<link rel="related" href="http://pleroma.example.org:4000/objects/55bce8fc-b423-46b1-af71-3759ab4670bc"/>
<link rel="ostatus:conversation" href="http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0"/>
<ostatus:conversation>http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="http://pleroma.example.org:4000/users/lain5"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom</id>
<title>lambda</title>
<link rel="alternate" type="text/html" href="http://gs.example.org:4040/index.php/lambda"/>
<link rel="self" type="application/atom+xml" href="http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom"/>
<link rel="license" href="https://creativecommons.org/licenses/by/3.0/"/>
<icon>http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png</icon>
<updated>2017-04-25T18:16:13+00:00</updated>
</source>
<link rel="self" type="application/atom+xml" href="http://gs.example.org:4040/index.php/api/statuses/show/55.atom"/>
<link rel="edit" type="application/atom+xml" href="http://gs.example.org:4040/index.php/api/statuses/show/55.atom"/>
<statusnet:notice_info local_id="55" source="web"></statusnet:notice_info>
</entry>

View File

@ -0,0 +1,29 @@
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:mastodon="http://mastodon.social/schema/1.0">
<id>tag:mastodon.social,2017-05-02:objectId=4901603:objectType=Status</id>
<published>2017-05-02T18:33:06Z</published>
<updated>2017-05-02T18:33:06Z</updated>
<title>New status by lambadalambda</title>
<author>
<id>https://mastodon.social/users/lambadalambda</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.social/users/lambadalambda</uri>
<name>lambadalambda</name>
<email>lambadalambda@mastodon.social</email>
<link rel="alternate" type="text/html" href="https://mastodon.social/@lambadalambda"/>
<link rel="avatar" type="image/gif" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Critical Value</poco:displayName>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="el">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://pleroma.soykaf.com/users/lain" class="u-url mention"&gt;@&lt;span&gt;lain&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; hey&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2224923"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2224923.atom"/>
<thr:in-reply-to ref="https://pleroma.soykaf.com/objects/c237d966-ac75-4fe3-a87a-d89d71a3a7a4" href=""/>
</entry>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-05-02T20:29:35+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-05-02:noticeId=2020923:objectType=note</id>
<title>New note by lambadalambda</title>
<content type="html">Okay gonna stream some cool games!! &lt;a href=&quot;https://social.heldscal.la/file/7ed5ee508e6376a6e3dd581e17e7ed0b7b638147c7e86784bf83abc2641ee3d4.gif&quot; title=&quot;https://social.heldscal.la/file/7ed5ee508e6376a6e3dd581e17e7ed0b7b638147c7e86784bf83abc2641ee3d4.gif&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-423842&quot;&gt;https://social.heldscal.la/attachment/423842&lt;/a&gt; &lt;a href=&quot;https://social.heldscal.la/file/4c209099cadfc5afd3e27a334aa0db96b3a7510dde1603305d68a2707e59a11f.png&quot; title=&quot;https://social.heldscal.la/file/4c209099cadfc5afd3e27a334aa0db96b3a7510dde1603305d68a2707e59a11f.png&quot; rel=&quot;nofollow external noreferrer&quot; class=&quot;attachment&quot; id=&quot;attachment-423843&quot;&gt;https://social.heldscal.la/attachment/423843&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2020923"/>
<status_net notice_id="2020923"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-02T20:29:35+00:00</published>
<updated>2017-05-02T20:29:35+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1038558"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1038558" local_id="1038558" ref="tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=26c7afdcbcf4ebd4">tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=26c7afdcbcf4ebd4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" href="https://social.heldscal.la/file/7ed5ee508e6376a6e3dd581e17e7ed0b7b638147c7e86784bf83abc2641ee3d4.gif" type="image/gif" length="17283"/>
<link rel="enclosure" href="https://social.heldscal.la/file/4c209099cadfc5afd3e27a334aa0db96b3a7510dde1603305d68a2707e59a11f.png" type="image/png" length="6965"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2020923.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2020923.atom"/>
<statusnet:notice_info local_id="2020923" source="Pleroma FE"></statusnet:notice_info>
</entry>
</feed>

479
test/fixtures/lambadalambda.atom vendored Normal file
View File

@ -0,0 +1,479 @@
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:mastodon="http://mastodon.social/schema/1.0">
<id>https://mastodon.social/users/lambadalambda.atom</id>
<title>Critical Value</title>
<subtitle></subtitle>
<updated>2017-04-16T21:47:25Z</updated>
<logo>https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif?1492379244</logo>
<author>
<id>https://mastodon.social/users/lambadalambda</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.social/users/lambadalambda</uri>
<name>lambadalambda</name>
<email>lambadalambda@mastodon.social</email>
<summary></summary>
<link rel="alternate" type="text/html" href="https://mastodon.social/@lambadalambda"/>
<link rel="avatar" type="image/gif" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif?1492379244"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Critical Value</poco:displayName>
<mastodon:scope>public</mastodon:scope>
</author>
<link rel="alternate" type="text/html" href="https://mastodon.social/@lambadalambda"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda.atom"/>
<link rel="next" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda.atom?max_id=1488609"/>
<link rel="hub" href="https://mastodon.social/api/push"/>
<link rel="salmon" href="https://mastodon.social/api/salmon/264"/>
<entry>
<id>tag:mastodon.social,2017-04-07:objectId=1874242:objectType=Status</id>
<published>2017-04-07T11:02:56Z</published>
<updated>2017-04-07T11:02:56Z</updated>
<title>lambadalambda shared a status by 0xroy@social.wxcafe.net</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:social.wxcafe.net,2017-04-07:objectId=72554:objectType=Status</id>
<published>2017-04-07T11:01:59Z</published>
<updated>2017-04-07T11:02:00Z</updated>
<title>New status by 0xroy@social.wxcafe.net</title>
<author>
<id>https://social.wxcafe.net/users/0xroy</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.wxcafe.net/users/0xroy</uri>
<name>0xroy</name>
<email>0xroy@social.wxcafe.net</email>
<summary>ta caution weeb | discussions privées : &lt;a href="https://💌.0xroy.me" rel="nofollow noopener" target="_blank"&gt;&lt;span class="invisible"&gt;https://&lt;/span&gt;&lt;span class=""&gt;💌.0xroy.me&lt;/span&gt;&lt;span class="invisible"&gt;&lt;/span&gt;&lt;/a&gt;</summary>
<link rel="alternate" type="text/html" href="https://social.wxcafe.net/@0xroy"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/036/953/original/20068e41d0310172.jpg?1491240516"/>
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://files.mastodon.social/accounts/headers/000/036/953/original/2229d0e3f129fe8c.jpg?1491381114"/>
<poco:preferredUsername>0xroy</poco:preferredUsername>
<poco:displayName>「R O Y 🍵 B O S」</poco:displayName>
<poco:note>ta caution weeb | discussions privées : &lt;a href="https://%F0%9F%92%8C.0xroy.me" rel="nofollow noopener"&gt;&lt;span class="invisible"&gt;https://&lt;/span&gt;&lt;span class=""&gt;💌.0xroy.me&lt;/span&gt;&lt;span class="invisible"&gt;&lt;/span&gt;&lt;/a&gt;</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;someone pls eli5 matrix (protocol) and riot&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://social.wxcafe.net/users/0xroy/updates/4510"/>
</activity:object>
<content type="html" xml:lang="en">&lt;p&gt;someone pls eli5 matrix (protocol) and riot&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1689208"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1689208.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-06:objectId=1768247:objectType=Status</id>
<published>2017-04-06T11:10:19Z</published>
<updated>2017-04-06T11:10:19Z</updated>
<title>lambadalambda shared a status by areyoutoo@mastodon.xyz</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:mastodon.xyz,2017-04-05:objectId=133327:objectType=Status</id>
<published>2017-04-05T17:36:41Z</published>
<updated>2017-04-05T18:12:14Z</updated>
<title>New status by areyoutoo@mastodon.xyz</title>
<author>
<id>https://mastodon.xyz/users/areyoutoo</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.xyz/users/areyoutoo</uri>
<name>areyoutoo</name>
<email>areyoutoo@mastodon.xyz</email>
<summary>devops | retired gamedev | always boost puppy pics</summary>
<link rel="alternate" type="text/html" href="https://mastodon.xyz/@areyoutoo"/>
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/047/888/original/5ce2e132d4c18d65.png?1491343828"/>
<link rel="header" type="image/png" media:width="700" media:height="335" href="https://files.mastodon.social/accounts/headers/000/047/888/original/missing.png?1491336769"/>
<poco:preferredUsername>areyoutoo</poco:preferredUsername>
<poco:displayName>Raw Butter</poco:displayName>
<poco:note>devops | retired gamedev | always boost puppy pics</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;Some UX thoughts for &lt;a href="https://mastodon.xyz/tags/mastodev" class="mention hashtag"&gt;#&lt;span&gt;mastodev&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.&lt;/p&gt;&lt;p&gt;- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.&lt;/p&gt;&lt;p&gt;I probably don't know enough web frontend to help, but it might be fun to try.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<category term="mastodev"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.xyz/users/areyoutoo/updates/36028"/>
</activity:object>
<content type="html" xml:lang="en">&lt;p&gt;Some UX thoughts for &lt;a href="https://mastodon.xyz/tags/mastodev" class="mention hashtag"&gt;#&lt;span&gt;mastodev&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.&lt;/p&gt;&lt;p&gt;- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.&lt;/p&gt;&lt;p&gt;I probably don't know enough web frontend to help, but it might be fun to try.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1658950"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1658950.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-06:objectId=1764509:objectType=Status</id>
<published>2017-04-06T10:15:38Z</published>
<updated>2017-04-06T10:15:38Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<summary xml:lang="en">This is a test for cw federation</summary>
<content type="html" xml:lang="en">&lt;p&gt;This is a test for cw federation body text.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1657819"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1657819.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-05:objectId=1645208:objectType=Status</id>
<published>2017-04-05T07:14:53Z</published>
<updated>2017-04-05T07:14:53Z</updated>
<title>lambadalambda shared a status by lambadalambda@social.heldscal.la</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:social.heldscal.la,2017-04-05:noticeId=1502088:objectType=note</id>
<published>2017-04-05T06:12:09Z</published>
<updated>2017-04-05T07:12:47Z</updated>
<title>New status by lambadalambda@social.heldscal.la</title>
<author>
<id>https://social.heldscal.la/user/23211</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<email>lambadalambda@social.heldscal.la</email>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/236/original/23211-original-20170416114255.jpeg?1492345317"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">Federation 101: &lt;a href="https://www.youtube.com/watch?v=t1lYU5CA40o" rel="nofollow external noreferrer" class="attachment thumbnail"&gt;https://www.youtube.com/watch?v=t1lYU5CA40o&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1502088"/>
</activity:object>
<content type="html" xml:lang="en">Federation 101: &lt;a href="https://www.youtube.com/watch?v=t1lYU5CA40o" rel="nofollow external noreferrer" class="attachment thumbnail"&gt;https://www.youtube.com/watch?v=t1lYU5CA40o&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1618003"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1618003.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-05:objectId=1641750:objectType=Status</id>
<published>2017-04-05T05:44:48Z</published>
<updated>2017-04-05T05:44:48Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://social.heldscal.la/lambadalambda" class="u-url mention"&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; just a test.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://social.heldscal.la/user/23211"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1616358"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1616358.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-04:objectId=1540149:objectType=Status</id>
<published>2017-04-04T06:31:09Z</published>
<updated>2017-04-04T06:31:09Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;Looks like you still can&amp;apos;t delete your account here (PRIVACY!), but I won&amp;apos;t be posting here anymore, my main account is &lt;span class="h-card"&gt;&lt;a href="https://social.heldscal.la/lambadalambda" class="u-url mention"&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://social.heldscal.la/user/23211"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1559641"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1559641.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-04:objectId=1539608:objectType=Status</id>
<published>2017-04-04T06:18:16Z</published>
<updated>2017-04-04T06:18:16Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@ghostbar" class="u-url mention"&gt;@&lt;span&gt;ghostbar&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Remember to rewrite it in Rust once you&amp;apos;re done.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/ghostbar"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1559263"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1559263.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-03:objectId=1514426:objectType=Status" href="https://mastodon.social/@ghostbar/1514426"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1504813:objectType=Status</id>
<published>2017-04-03T18:01:20Z</published>
<updated>2017-04-03T18:01:20Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.xyz/@Azurolu" class="u-url mention"&gt;@&lt;span&gt;Azurolu&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; You mean gs.smuglo.li?&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.xyz/users/Azurolu"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1535844"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1535844.atom"/>
<thr:in-reply-to ref="tag:mastodon.xyz,2017-04-03:objectId=21879:objectType=Status" href="https://mastodon.xyz/users/Azurolu/updates/3813"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1504805:objectType=Status</id>
<published>2017-04-03T18:01:05Z</published>
<updated>2017-04-03T18:01:05Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;There&amp;apos;s nothing wrong with having several alt accounts all across the fediverse. Try out another mastodon instance (&lt;a href="https://icosahedron.website" rel="nofollow noopener" target="_blank"&gt;&lt;span class="invisible"&gt;https://&lt;/span&gt;&lt;span class=""&gt;icosahedron.website&lt;/span&gt;&lt;span class="invisible"&gt;&lt;/span&gt;&lt;/a&gt;) or a GNU Social instance (like &lt;a href="https://shitposter.club" rel="nofollow noopener" target="_blank"&gt;&lt;span class="invisible"&gt;https://&lt;/span&gt;&lt;span class=""&gt;shitposter.club&lt;/span&gt;&lt;span class="invisible"&gt;&lt;/span&gt;&lt;/a&gt; or &lt;a href="https://freezepeach.xyz" rel="nofollow noopener" target="_blank"&gt;&lt;span class="invisible"&gt;https://&lt;/span&gt;&lt;span class=""&gt;freezepeach.xyz&lt;/span&gt;&lt;span class="invisible"&gt;&lt;/span&gt;&lt;/a&gt;), or friendica. They are all on the same network, so you can still follow all your friends!&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1535837"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1535837.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1503965:objectType=Status</id>
<published>2017-04-03T17:31:30Z</published>
<updated>2017-04-03T17:31:30Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@20Hz" class="u-url mention"&gt;@&lt;span&gt;20Hz&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; you could also try out a GS instance, which are on the same network :)&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/20Hz"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1535176"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1535176.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-03:objectId=1503524:objectType=Status" href="https://mastodon.social/@20Hz/1503524"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1503955:objectType=Status</id>
<published>2017-04-03T17:31:08Z</published>
<updated>2017-04-03T17:31:08Z</updated>
<title>lambadalambda shared a status by shpuld@shitposter.club</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:shitposter.club,2017-04-03:noticeId=2251717:objectType=note</id>
<published>2017-04-03T17:06:43Z</published>
<updated>2017-04-03T17:12:06Z</updated>
<title>New status by shpuld@shitposter.club</title>
<author>
<id>https://shitposter.club/user/5381</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://shitposter.club/user/5381</uri>
<name>shpuld</name>
<email>shpuld@shitposter.club</email>
<summary></summary>
<link rel="alternate" type="text/html" href="https://shitposter.club/shpuld"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/005/895/original/5381-original-20170401213417.jpeg?1491082522"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>shpuld</poco:preferredUsername>
<poco:displayName>shp</poco:displayName>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">reposting the classic &lt;a href="https://shitposter.club/file/89c5fe483526caf3a46cfc5cdd4ae68061054350e767397731af658d54786e31.jpg" class="attachment" rel="nofollow external"&gt;https://shitposter.club/attachment/219846&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="enclosure" type="image/jpeg" length="30588" href="https://files.mastodon.social/media_attachments/files/000/156/256/original/89c5fe483526caf3a46cfc5cdd4ae68061054350e767397731af658d54786e31.jpg"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/2251717"/>
</activity:object>
<content type="html" xml:lang="en">reposting the classic &lt;a href="https://shitposter.club/file/89c5fe483526caf3a46cfc5cdd4ae68061054350e767397731af658d54786e31.jpg" class="attachment" rel="nofollow external"&gt;https://shitposter.club/attachment/219846&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1535166"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1535166.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1503929:objectType=Status</id>
<published>2017-04-03T17:30:43Z</published>
<updated>2017-04-03T17:30:43Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@ghostbar" class="u-url mention"&gt;@&lt;span&gt;ghostbar&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Normally you shouldn&amp;apos;t be running tens of thousands of users on one instance... That&amp;apos;s one of the reasons for federation.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/ghostbar"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1535144"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1535144.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-03:objectId=1503526:objectType=Status" href="https://mastodon.social/@ghostbar/1503526"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1477255:objectType=Status</id>
<published>2017-04-03T08:24:39Z</published>
<updated>2017-04-03T08:24:39Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@dot_tiff" class="u-url mention"&gt;@&lt;span&gt;dot_tiff&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; it&amp;apos;s the vaporwave mode.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/dot_tiff"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1513305"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1513305.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-03:objectId=1477220:objectType=Status" href="https://mastodon.social/@dot_tiff/1477220"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1476210:objectType=Status</id>
<published>2017-04-03T07:45:42Z</published>
<updated>2017-04-03T07:45:42Z</updated>
<title>lambadalambda shared a status by lambadalambda@social.heldscal.la</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:social.heldscal.la,2017-04-03:noticeId=1475727:objectType=note</id>
<published>2017-04-03T07:44:43Z</published>
<updated>2017-04-03T07:44:48Z</updated>
<title>New status by lambadalambda@social.heldscal.la</title>
<author>
<id>https://social.heldscal.la/user/23211</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<email>lambadalambda@social.heldscal.la</email>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/236/original/23211-original-20170416114255.jpeg?1492345317"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">Here's a song by the original anti-idol, Togawa Jun: &lt;a href="https://www.youtube.com/watch?v=kNI_NK2YY-s" rel="nofollow external noreferrer" class="attachment"&gt;https://www.youtube.com/watch?v=kNI_NK2YY-s&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1475727"/>
</activity:object>
<content type="html" xml:lang="en">Here's a song by the original anti-idol, Togawa Jun: &lt;a href="https://www.youtube.com/watch?v=kNI_NK2YY-s" rel="nofollow external noreferrer" class="attachment"&gt;https://www.youtube.com/watch?v=kNI_NK2YY-s&lt;/a&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1512485"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1512485.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1476047:objectType=Status</id>
<published>2017-04-03T07:39:14Z</published>
<updated>2017-04-03T07:39:14Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@amrrr" class="u-url mention"&gt;@&lt;span&gt;amrrr&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; tumblr/10, but pretty good!&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/amrrr"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1512350"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1512350.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-03:objectId=1476030:objectType=Status" href="https://mastodon.social/@amrrr/1476030"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1475949:objectType=Status</id>
<published>2017-04-03T07:35:45Z</published>
<updated>2017-04-03T07:35:45Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@Shookaite" class="u-url mention"&gt;@&lt;span&gt;Shookaite&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Oh, you mean like userstyles?&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/Shookaite"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1512271"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1512271.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-03:objectId=1475879:objectType=Status" href="https://mastodon.social/@Shookaite/1475879"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-03:objectId=1475581:objectType=Status</id>
<published>2017-04-03T07:20:03Z</published>
<updated>2017-04-03T07:20:03Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@Shookaite" class="u-url mention"&gt;@&lt;span&gt;Shookaite&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; Would be nice if someone helped port Pleroma to Mastodon, that has a theme switcher (click on the cog in the upper right): &lt;a href="https://pleroma.heldscal.la/main/all" rel="nofollow noopener" target="_blank"&gt;&lt;span class="invisible"&gt;https://&lt;/span&gt;&lt;span class=""&gt;pleroma.heldscal.la/main/all&lt;/span&gt;&lt;span class="invisible"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/Shookaite"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1511987"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1511987.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-03:objectId=1475550:objectType=Status" href="https://mastodon.social/@Shookaite/1475550"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-02:objectId=1457325:objectType=Status</id>
<published>2017-04-02T21:57:43Z</published>
<updated>2017-04-02T21:57:43Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@rhosyn" class="u-url mention"&gt;@&lt;span&gt;rhosyn&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;span class="h-card"&gt;&lt;a href="https://mastodon.social/@Meaningness" class="u-url mention"&gt;@&lt;span&gt;Meaningness&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; you could take a look at those listed at social.guhnoo.org&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/rhosyn"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/Meaningness"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1496564"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1496564.atom"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-02:objectId=1449283:objectType=Status" href="https://mastodon.social/@rhosyn/1449283"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-02:objectId=1447926:objectType=Status</id>
<published>2017-04-02T18:31:52Z</published>
<updated>2017-04-02T18:31:52Z</updated>
<title>New status by lambadalambda</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;My main account is &lt;span class="h-card"&gt;&lt;a href="https://social.heldscal.la/lambadalambda" class="u-url mention"&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; , btw.&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://social.heldscal.la/user/23211"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1488648"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1488648.atom"/>
</entry>
<entry>
<id>tag:mastodon.social,2017-04-02:objectId=1447878:objectType=Status</id>
<published>2017-04-02T18:30:37Z</published>
<updated>2017-04-02T18:30:37Z</updated>
<title>lambadalambda shared a status by Firstaide@awoo.space</title>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>tag:awoo.space,2017-04-02:objectId=135324:objectType=Status</id>
<published>2017-04-02T18:29:32Z</published>
<updated>2017-04-02T18:29:32Z</updated>
<title>New status by Firstaide@awoo.space</title>
<author>
<id>https://awoo.space/users/Firstaide</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://awoo.space/users/Firstaide</uri>
<name>Firstaide</name>
<email>Firstaide@awoo.space</email>
<summary>A smol awoo account, for a smol autistic 💙
They/them please!
NB/white/ace</summary>
<link rel="alternate" type="text/html" href="https://awoo.space/@Firstaide"/>
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/023/707/original/95e92639771fd225.png?1492022811"/>
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://files.mastodon.social/accounts/headers/000/023/707/original/e98df174c26747be.jpg?1491667928"/>
<poco:preferredUsername>Firstaide</poco:preferredUsername>
<poco:displayName>Miff🚑✨</poco:displayName>
<poco:note>A smol awoo account, for a smol autistic 💙
They/them please!
NB/white/ace</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">&lt;p&gt;&lt;a href="https://mastodon.social/users/lambadalambda" class="h-card u-url p-nickname mention"&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt; yeah, I think that's p much the big issue here? &lt;br&gt;When I first heard of Masto, I thought it was just like twitter at first, I had no idea federation was even a thing?, and I actually joined p early on? :-o &lt;/p&gt;&lt;p&gt;idk I think more stuff needs to be done about federation promotion, but honestly its gotta come from the get go when people get here to make an account I feel :-o&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/lambadalambda"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://awoo.space/users/Firstaide/updates/10904"/>
<thr:in-reply-to ref="tag:mastodon.social,2017-04-02:objectId=1447682:objectType=Status" href="https://mastodon.social/@lambadalambda/1447682"/>
</activity:object>
<content type="html" xml:lang="en">&lt;p&gt;&lt;a href="https://mastodon.social/users/lambadalambda" class="h-card u-url p-nickname mention"&gt;@&lt;span&gt;lambadalambda&lt;/span&gt;&lt;/a&gt; yeah, I think that's p much the big issue here? &lt;br&gt;When I first heard of Masto, I thought it was just like twitter at first, I had no idea federation was even a thing?, and I actually joined p early on? :-o &lt;/p&gt;&lt;p&gt;idk I think more stuff needs to be done about federation promotion, but honestly its gotta come from the get go when people get here to make an account I feel :-o&lt;/p&gt;</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/1488609"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/1488609.atom"/>
</entry>
</feed>

57
test/fixtures/ostatus_incoming_post.xml vendored Normal file
View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-04-29T18:25:38+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:social.heldscal.la,2017-04-29:noticeId=1967725:objectType=note</id>
<title>New note by lambadalambda</title>
<content type="html">Will it blend?</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1967725"/>
<status_net notice_id="1967725"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-29T18:25:38+00:00</published>
<updated>2017-04-29T18:25:38+00:00</updated>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1007861"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1007861" local_id="1007861" ref="tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=3f3a9dd83acc4e35">tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=3f3a9dd83acc4e35</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1967725.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1967725.atom"/>
<statusnet:notice_info local_id="1967725" source="Pleroma FE"></statusnet:notice_info>
</entry>
</feed>

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-04-30T09:30:32+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:social.heldscal.la,2017-04-30:noticeId=1978790:objectType=comment</id>
<title>New comment by lambadalambda</title>
<content type="html">@&lt;a href=&quot;https://gs.archae.me/user/4687&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;shpbot&quot;&gt;shpbot&lt;/a&gt; why not indeed.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/1978790"/>
<status_net notice_id="1978790"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-04-30T09:30:32+00:00</published>
<updated>2017-04-30T09:30:32+00:00</updated>
<thr:in-reply-to ref="tag:gs.archae.me,2017-04-30:noticeId=778260:objectType=note" href="https://gs.archae.me/notice/778260"></thr:in-reply-to>
<link rel="related" href="https://gs.archae.me/notice/778260"/>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1013566"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1013566" local_id="1013566" ref="https://gs.archae.me/conversation/327120">https://gs.archae.me/conversation/327120</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://gs.archae.me/user/4687"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1978790.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/1978790.atom"/>
<statusnet:notice_info local_id="1978790" source="Pleroma FE"></statusnet:notice_info>
</entry>
</feed>

27
test/fixtures/private_key.pem vendored Normal file
View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAqnWeDtrqWasCKNXiuSq1tSCLI5H7BSvIROy5YfuGsXHrIlCq
LdIm9QlIUUmIi9QyzgiGEDsPCCkA1UguCVgF/UrJ1+FvHcHsTELkkBu/yCl9mrgt
WzTckhb6KjOhqtxi/TKgRaJ2Rlwz2bvH5sbCP9qffthitdxfh14KC5V0gqDt1xCy
WgZo79vbYMcVkcQoh5uLtG64ksYFBMfgnLaSj7xg5i2qCDiIY7bqBujo5HllDqeo
w3LXmsztt1cT8heXEjW0SYJvAHJK00OsG1kp4cqhfKzxLCHNGQJVHQxLOXy97I7o
HOeuhbxPhjpGSBMgw7YFm3ODXviqf557eqFcaQIDAQABAoIBAC6f+VnK22sncXHF
/zvyyL0AZ86U8XpanW7s6VA5wn/qzwwV0Fa0Mt+3aEaDvIuywSrF/hWWcegjfwzX
r2/y2cCMomUgTopvLrk1WttoG68eWjLlydI2xVZYXpkIgmH/4juri1dAtuVL9wrJ
aEZhe2SH4jSJ74Ya/y5BtLGycaoA9FHyIzHPTx52Ix2jWKWtKimW8J+aERi2uHdN
7yTnLT2APhs5fnvNnn0tg85CI3Ny2GNiqmAail14yVfRz8Sf6qDIepH5Jfz9oll4
I+GYUOLs6eTgkHXBn8LGhtHTE/9UJmb42OyWrW8X+nc/Mjz5xh0u/g1Gdp36oUMz
OotfneECgYEA3cGfQxmxjEqSbXt9jbxiCukU7PmkDDQqBu97URC4N8qEcMF1wW7X
AddU7Kq/UJU+oqjD/7UQHoS2ZThPtto6SpVdXQzsnrnPWQcrv5b1DV/TpXfwGoZ3
svUIAcx4vGzhhmHDJCBsdY6n8xWBYtSqfLFXgN5UkdafLGy3EkCEtmUCgYEAxMgl
7eU2QkWkzgJxOj6xjG2yqM3jxOvvoiRnD0rIQaBS70P/1N94ZkMXzOwddddZ5OW+
55h/a8TmFKP/+NW4PHRYra/dazGI4IBlw6Yeq6uq/4jbuSqtBbaNn/Dz5kdHBTqM
PtbBvc9Fztd2zb3InyyLbb4c+WjMqi0AooN027UCgYB4Tax7GJtLwsEBiDcrB4Ig
7SYfEae/vyT1skIyTmHCUqnbCfk6QUl/hDRcWJ2FuBHM6MW8GZxvEgxpiU0lo+pv
v+xwqKxNx/wHDm7bd6fl45DMee7WVRDnEyuO3kC56E/JOYxGMxjkBcpzg703wqvj
Dcqs7PDwVYDw9uGykzHsSQKBgEQnNcvA+RvW1w9qlSChGgkS7S+9r0dCl8pGZVNM
iTMBfffUS0TE6QQx9IpKtKFdpoq6b3XywR7oIO/BJSRfkOGPQi9Vm5BGpatrjNNI
M5Mtb5n1InRtLWOvKDnez/pPcW+EKZKR+qPsp7bNtR3ovxUx7lBh6dMP0uKVl4Sx
lsWJAoGBAIeek9eG+S3m2jaJRHasfKo5mJ2JrrmnjQXUOGUP8/CgO8sW1VmG2WAk
Av7+BRI2mP2f+3SswG/AoRGmRXXw65ly63ws8ixrhK0MG3MgqDkWc69SbTaaMJ+u
BQFYMsB1vZdUV3CaRqySkjY68QWGcJ4Z5JKHuTXzKv/GeFmw0V9R
-----END RSA PRIVATE KEY-----

2
test/fixtures/salmon2.xml vendored Normal file

File diff suppressed because one or more lines are too long

99
test/fixtures/share-gs.xml vendored Normal file
View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
<generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator>
<id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id>
<title>lambadalambda timeline</title>
<subtitle>Updates from lambadalambda on social.heldscal.la!</subtitle>
<logo>https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg</logo>
<updated>2017-05-03T08:05:41+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://social.heldscal.la/user/23211</uri>
<name>lambadalambda</name>
<summary>Call me Deacon Blues.</summary>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/lambadalambda"/>
<link rel="avatar" type="image/jpeg" media:width="236" media:height="236" href="https://social.heldscal.la/avatar/23211-original-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/23211-48-20170416114255.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/23211-24-20170416114257.jpeg"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Constance Variable</poco:displayName>
<poco:note>Call me Deacon Blues.</poco:note>
<poco:address>
<poco:formatted>Berlin</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://heldscal.la</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://social.heldscal.la/lambadalambda/subscribers"></followers>
<statusnet:profile_info local_id="23211"></statusnet:profile_info>
</author>
<link href="https://social.heldscal.la/lambadalambda" rel="alternate" type="text/html"/>
<link href="https://social.heldscal.la/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="https://social.heldscal.la/main/push/hub" rel="hub"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="salmon"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="https://social.heldscal.la/main/salmon/user/23211" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="https://social.heldscal.la/api/statuses/user_timeline/23211.atom" rel="self" type="application/atom+xml"/>
<entry>
<id>tag:social.heldscal.la,2017-05-03:noticeId=2028428:objectType=note</id>
<title>lambadalambda repeated a notice by lain</title>
<content type="html">RT @&lt;a href=&quot;https://pleroma.soykaf.com/users/lain&quot; class=&quot;h-card u-url p-nickname mention&quot; title=&quot;Lain Iwakura&quot;&gt;lain&lt;/a&gt; Added returning the entries as xml... let's see if the mastodon hammering stops now.</content>
<link rel="alternate" type="text/html" href="https://social.heldscal.la/notice/2028428"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2017-05-03T08:05:41+00:00</published>
<updated>2017-05-03T08:05:41+00:00</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193</id>
<title></title>
<content type="html">Added returning the entries as xml... let's see if the mastodon hammering stops now.</content>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2017-05-03T08:04:44+00:00</published>
<updated>2017-05-03T08:04:44+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://pleroma.soykaf.com/users/lain</uri>
<name>lain</name>
<summary>Test account</summary>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="avatar" type="image/jpeg" media:width="250" media:height="202" href="https://social.heldscal.la/avatar/43188-original-20170429171039.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://social.heldscal.la/avatar/43188-48-20170429172422.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://social.heldscal.la/avatar/43188-24-20170429181411.jpeg"/>
<poco:preferredUsername>lain</poco:preferredUsername>
<poco:displayName>Lain Iwakura</poco:displayName>
<poco:note>Test account</poco:note>
<statusnet:profile_info local_id="43188"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193</id>
<title>New note by lain</title>
<content type="html">Added returning the entries as xml... let's see if the mastodon hammering stops now.</content>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193"/>
<status_net notice_id="2028424"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1042737"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1042737" local_id="1042737" ref="https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22">https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://pleroma.soykaf.com/users/lain/feed.atom</id>
<title>Lain Iwakura</title>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="self" type="application/atom+xml" href="https://pleroma.soykaf.com/users/lain/feed.atom"/>
<icon>https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg</icon>
<updated>2017-05-03T08:04:44+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="https://social.heldscal.la/conversation/1042737"/>
<ostatus:conversation href="https://social.heldscal.la/conversation/1042737" local_id="1042737" ref="https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22">https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<link rel="self" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2028428.atom"/>
<link rel="edit" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/show/2028428.atom"/>
<statusnet:notice_info local_id="2028428" source="api" repeat_of="2028424"></statusnet:notice_info>
</entry>
</feed>

54
test/fixtures/share.xml vendored Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:mastodon="http://mastodon.social/schema/1.0">
<id>tag:mastodon.social,2017-05-03:objectId=4934452:objectType=Status</id>
<published>2017-05-03T08:21:09Z</published>
<updated>2017-05-03T08:21:09Z</updated>
<title>lambadalambda shared a status by lain@pleroma.soykaf.com</title>
<author>
<id>https://mastodon.social/users/lambadalambda</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.social/users/lambadalambda</uri>
<name>lambadalambda</name>
<email>lambadalambda@mastodon.social</email>
<link rel="alternate" type="text/html" href="https://mastodon.social/@lambadalambda"/>
<link rel="avatar" type="image/gif" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lambadalambda</poco:preferredUsername>
<poco:displayName>Critical Value</poco:displayName>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<activity:object>
<id>https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193</id>
<published>2017-05-03T08:04:44Z</published>
<updated>2017-05-03T08:05:52Z</updated>
<title>New status by lain@pleroma.soykaf.com</title>
<author>
<id>https://pleroma.soykaf.com/users/lain</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://pleroma.soykaf.com/users/lain</uri>
<name>lain</name>
<email>lain@pleroma.soykaf.com</email>
<summary type="html">Test account</summary>
<link rel="alternate" type="text/html" href="https://pleroma.soykaf.com/users/lain"/>
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://files.mastodon.social/accounts/avatars/000/125/902/original/6B3AFC74ACA841B24CFB94DB9044C84EDE6AFF31C71718B023D413DAED09A68E.jpeg"/>
<link rel="header" type="" media:width="700" media:height="335" href="/headers/original/missing.png"/>
<poco:preferredUsername>lain</poco:preferredUsername>
<poco:displayName>Lain Iwakura</poco:displayName>
<poco:note>Test account</poco:note>
<mastodon:scope>public</mastodon:scope>
</author>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<content type="html" xml:lang="en">Added returning the entries as xml... let's see if the mastodon hammering stops now.</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href=""/>
</activity:object>
<content type="html" xml:lang="en">Added returning the entries as xml... let's see if the mastodon hammering stops now.</content>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<mastodon:scope>public</mastodon:scope>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2232660"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/lambadalambda/updates/2232660.atom"/>
</entry>

10
test/fixtures/user_full.xml vendored Normal file
View File

@ -0,0 +1,10 @@
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>http://gs.example.org:4040/index.php/user/1</uri>
<name>lambda</name>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-stream.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="http://gs.example.org:4040/theme/neo-gnu/default-avatar-mini.png"/>
<poco:preferredUsername>Constance Variable</poco:preferredUsername>
<poco:displayName>lambadalambda</poco:displayName>
</author>

5
test/fixtures/user_name_only.xml vendored Normal file
View File

@ -0,0 +1,5 @@
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>http://gs.example.org:4040/index.php/user/1</uri>
<name>lambda</name>
</author>

20
test/fixtures/webfinger.xml vendored Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>acct:shp@social.heldscal.la</Subject>
<Alias>https://social.heldscal.la/user/29191</Alias>
<Alias>https://social.heldscal.la/shp</Alias>
<Alias>https://social.heldscal.la/index.php/user/29191</Alias>
<Alias>https://social.heldscal.la/index.php/shp</Alias>
<Link rel="http://webfinger.net/rel/profile-page" type="text/html" href="https://social.heldscal.la/shp"/>
<Link rel="http://gmpg.org/xfn/11" type="text/html" href="https://social.heldscal.la/shp"/>
<Link rel="describedby" type="application/rdf+xml" href="https://social.heldscal.la/shp/foaf"/>
<Link rel="http://apinamespace.org/atom" type="application/atomsvc+xml" href="https://social.heldscal.la/api/statusnet/app/service/shp.xml"/>
<Link rel="http://apinamespace.org/twitter" href="https://social.heldscal.la/api/"/>
<Link rel="http://specs.openid.net/auth/2.0/provider" href="https://social.heldscal.la/shp"/>
<Link rel="http://schemas.google.com/g/2010#updates-from" type="application/atom+xml" href="https://social.heldscal.la/api/statuses/user_timeline/29191.atom"/>
<Link rel="magic-public-key" href="data:application/magic-public-key,RSA.wQ3i9UA0qmAxZ0WTIp4a-waZn_17Ez1pEEmqmqoooRsG1_BvpmOvLN0G2tEcWWxl2KOtdQMCiPptmQObeZeuj48mdsDZ4ArQinexY2hCCTcbV8Xpswpkb8K05RcKipdg07pnI7tAgQ0VWSZDImncL6YUGlG5YN8b5TjGOwk2VG8=.AQAB"/>
<Link rel="salmon" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://salmon-protocol.org/ns/salmon-replies" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://salmon-protocol.org/ns/salmon-mention" href="https://social.heldscal.la/main/salmon/user/29191"/>
<Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://social.heldscal.la/main/ostatussub?profile={uri}"/>
</XRD>

View File

@ -5,7 +5,7 @@ defmodule Pleroma.Builders.ActivityBuilder do
def build(data \\ %{}, opts \\ %{}) do def build(data \\ %{}, opts \\ %{}) do
user = opts[:user] || Pleroma.Factory.insert(:user) user = opts[:user] || Pleroma.Factory.insert(:user)
activity = %{ activity = %{
"id" => 1, "id" => Pleroma.Web.ActivityPub.ActivityPub.generate_object_id,
"actor" => user.ap_id, "actor" => user.ap_id,
"to" => ["https://www.w3.org/ns/activitystreams#Public"], "to" => ["https://www.w3.org/ns/activitystreams#Public"],
"object" => %{ "object" => %{
@ -23,7 +23,7 @@ def insert(data \\ %{}, opts \\ %{}) do
def insert_list(times, data \\ %{}, opts \\ %{}) do def insert_list(times, data \\ %{}, opts \\ %{}) do
Enum.map(1..times, fn (n) -> Enum.map(1..times, fn (n) ->
{:ok, activity} = insert(Map.merge(data, %{"id" => n})) {:ok, activity} = insert(data)
activity activity
end) end)
end end

View File

@ -24,7 +24,8 @@ def note_factory do
"to" => ["https://www.w3.org/ns/activitystreams#Public"], "to" => ["https://www.w3.org/ns/activitystreams#Public"],
"published_at" => DateTime.utc_now() |> DateTime.to_iso8601, "published_at" => DateTime.utc_now() |> DateTime.to_iso8601,
"likes" => [], "likes" => [],
"like_count" => 0 "like_count" => 0,
"context" => "2hu"
} }
%Pleroma.Object{ %Pleroma.Object{
@ -40,7 +41,8 @@ def note_activity_factory do
"actor" => note.data["actor"], "actor" => note.data["actor"],
"to" => note.data["to"], "to" => note.data["to"],
"object" => note.data, "object" => note.data,
"published_at" => DateTime.utc_now() |> DateTime.to_iso8601 "published_at" => DateTime.utc_now() |> DateTime.to_iso8601,
"context" => note.data["context"]
} }
%Pleroma.Activity{ %Pleroma.Activity{
@ -91,4 +93,14 @@ def websub_subscription_factory do
state: "requested" state: "requested"
} }
end end
def websub_client_subscription_factory do
%Pleroma.Web.Websub.WebsubClientSubscription{
topic: "http://example.org",
secret: "here's a secret",
valid_until: nil,
state: "requested",
subscribers: []
}
end
end end

View File

@ -0,0 +1,125 @@
defmodule HTTPoisonMock do
alias HTTPoison.Response
def get(url, body \\ [], headers \\ [])
def get("https://social.heldscal.la/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "nonexistant@social.heldscal.la"]]) do
{:ok, %Response{
status_code: 500,
body: File.read!("test/fixtures/httpoison_mock/nonexistant@social.heldscal.la.xml")
}}
end
def get("https://social.heldscal.la/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "shp@social.heldscal.la"]]) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/shp@social.heldscal.la.xml")
}}
end
def get("https://social.heldscal.la/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "https://social.heldscal.la/user/23211"]]) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___social.heldscal.la_user_23211.xml")
}}
end
def get("https://social.heldscal.la/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "https://social.heldscal.la/user/29191"]]) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___social.heldscal.la_user_29191.xml")
}}
end
def get("https://mastodon.social/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "https://mastodon.social/users/lambadalambda"]]) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___mastodon.social_users_lambadalambda.xml")
}}
end
def get("https://shitposter.club/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "https://shitposter.club/user/1"]]) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___shitposter.club_user_1.xml")
}}
end
def get("http://gs.example.org/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "http://gs.example.org:4040/index.php/user/1"], follow_redirect: true]) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/http___gs.example.org_4040_index.php_user_1.xml")
}}
end
def get("https://pleroma.soykaf.com/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "https://pleroma.soykaf.com/users/lain"]]) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___pleroma.soykaf.com_users_lain.xml")
}}
end
def get("https://social.heldscal.la/api/statuses/user_timeline/29191.atom", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml")
}}
end
def get("https://social.heldscal.la/api/statuses/user_timeline/23211.atom", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml")
}}
end
def get("https://mastodon.social/users/lambadalambda.atom", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___mastodon.social_users_lambadalambda.atom")
}}
end
def get("https://pleroma.soykaf.com/users/lain/feed.atom", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml")
}}
end
def get("http://gs.example.org/index.php/api/statuses/user_timeline/1.atom", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml")
}}
end
def get("https://shitposter.club/notice/2827873", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___shitposter.club_notice_2827873.html")
}}
end
def get("https://shitposter.club/api/statuses/show/2827873.atom", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml")
}}
end
def get("https://shitposter.club/api/statuses/user_timeline/1.atom", _body, _headers) do
{:ok, %Response{
status_code: 200,
body: File.read!("test/fixtures/httpoison_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml")
}}
end
def get(url, body, headers) do
{:error, "Not implemented the mock response for get #{inspect(url)}"}
end
def post(url, body, headers) do
{:error, "Not implemented the mock response for post #{inspect(url)}"}
end
end

View File

@ -1,9 +1,12 @@
defmodule Pleroma.UserTest do defmodule Pleroma.UserTest do
alias Pleroma.Builders.UserBuilder alias Pleroma.Builders.UserBuilder
alias Pleroma.User alias Pleroma.{User, Repo}
alias Pleroma.Web.OStatus
alias Pleroma.Web.Websub.WebsubClientSubscription
use Pleroma.DataCase use Pleroma.DataCase
import Pleroma.Factory import Pleroma.Factory
import Ecto.Query
test "ap_id returns the activity pub id for the user" do test "ap_id returns the activity pub id for the user" do
host = host =
@ -13,7 +16,7 @@ test "ap_id returns the activity pub id for the user" do
user = UserBuilder.build user = UserBuilder.build
expected_ap_id = "https://#{host}/users/#{user.nickname}" expected_ap_id = "#{Pleroma.Web.base_url}/users/#{user.nickname}"
assert expected_ap_id == User.ap_id(user) assert expected_ap_id == User.ap_id(user)
end end
@ -30,13 +33,29 @@ test "follow takes a user and another user" do
user = insert(:user) user = insert(:user)
followed = insert(:user) followed = insert(:user)
{:ok, user } = User.follow(user, followed) {:ok, user} = User.follow(user, followed)
user = Repo.get(User, user.id) user = Repo.get(User, user.id)
assert user.following == [User.ap_followers(followed)] assert user.following == [User.ap_followers(followed)]
end end
test "following a remote user will ensure a websub subscription is present" do
user = insert(:user)
{:ok, followed} = OStatus.make_user("shp@social.heldscal.la")
assert followed.local == false
{:ok, user} = User.follow(user, followed)
assert user.following == [User.ap_followers(followed)]
query = from w in WebsubClientSubscription,
where: w.topic == ^followed.info["topic"]
websub = Repo.one(query)
assert websub
end
test "unfollow takes a user and another user" do test "unfollow takes a user and another user" do
followed = insert(:user) followed = insert(:user)
user = insert(:user, %{following: [User.ap_followers(followed)]}) user = insert(:user, %{following: [User.ap_followers(followed)]})
@ -86,4 +105,39 @@ test "it sets the password_hash, ap_id and following fields" do
assert changeset.changes[:following] == [User.ap_followers(%User{nickname: @full_user_data.nickname})] assert changeset.changes[:following] == [User.ap_followers(%User{nickname: @full_user_data.nickname})]
end end
end end
describe "fetching a user from nickname or trying to build one" do
test "gets an existing user" do
user = insert(:user)
fetched_user = User.get_or_fetch_by_nickname(user.nickname)
assert user == fetched_user
end
test "fetches an external user via ostatus if no user exists" do
fetched_user = User.get_or_fetch_by_nickname("shp@social.heldscal.la")
assert fetched_user.nickname == "shp@social.heldscal.la"
end
test "returns nil if no user could be fetched" do
fetched_user = User.get_or_fetch_by_nickname("nonexistant@social.heldscal.la")
assert fetched_user == nil
end
test "returns nil for nonexistant local user" do
fetched_user = User.get_or_fetch_by_nickname("nonexistant")
assert fetched_user == nil
end
end
test "returns an ap_id for a user" do
user = insert(:user)
assert User.ap_id(user) == Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :feed_redirect, user.nickname)
end
test "returns an ap_followers link for a user" do
user = insert(:user)
assert User.ap_followers(user) == Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :feed_redirect, user.nickname) <> "/followers"
end
end end

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,8 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
use Pleroma.DataCase use Pleroma.DataCase
alias Pleroma.Web.OStatus.ActivityRepresenter alias Pleroma.Web.OStatus.ActivityRepresenter
alias Pleroma.{User, Activity} alias Pleroma.{User, Activity, Object}
alias Pleroma.Web.ActivityPub.ActivityPub
import Pleroma.Factory import Pleroma.Factory
@ -23,6 +24,10 @@ test "a note activity" do
<content type="html">#{note_activity.data["object"]["content"]}</content> <content type="html">#{note_activity.data["object"]["content"]}</content>
<published>#{inserted_at}</published> <published>#{inserted_at}</published>
<updated>#{updated_at}</updated> <updated>#{updated_at}</updated>
<ostatus:conversation>#{note_activity.data["context"]}</ostatus:conversation>
<link href="#{note_activity.data["context"]}" rel="ostatus:conversation" />
<link type="application/atom+xml" href="#{note_activity.data["object"]["id"]}" rel="self" />
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
""" """
tuple = ActivityRepresenter.to_simple_form(note_activity, user) tuple = ActivityRepresenter.to_simple_form(note_activity, user)
@ -32,6 +37,206 @@ test "a note activity" do
assert clean(res) == clean(expected) assert clean(res) == clean(expected)
end end
test "a reply note" do
note = insert(:note_activity)
answer = insert(:note_activity)
object = answer.data["object"]
object = Map.put(object, "inReplyTo", note.data["object"]["id"])
data = %{answer.data | "object" => object}
answer = %{answer | data: data}
updated_at = answer.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = answer.inserted_at
|> NaiveDateTime.to_iso8601
user = User.get_cached_by_ap_id(answer.data["actor"])
expected = """
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<id>#{answer.data["object"]["id"]}</id>
<title>New note by #{user.nickname}</title>
<content type="html">#{answer.data["object"]["content"]}</content>
<published>#{inserted_at}</published>
<updated>#{updated_at}</updated>
<ostatus:conversation>#{answer.data["context"]}</ostatus:conversation>
<link href="#{answer.data["context"]}" rel="ostatus:conversation" />
<link type="application/atom+xml" href="#{answer.data["object"]["id"]}" rel="self" />
<thr:in-reply-to ref="#{note.data["object"]["id"]}" />
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
"""
tuple = ActivityRepresenter.to_simple_form(answer, user)
res = :xmerl.export_simple_content(tuple, :xmerl_xml) |> IO.iodata_to_binary
assert clean(res) == clean(expected)
end
test "an announce activity" do
note = insert(:note_activity)
user = insert(:user)
object = Object.get_cached_by_ap_id(note.data["object"]["id"])
{:ok, announce, object} = ActivityPub.announce(user, object)
announce = Repo.get(Activity, announce.id)
note_user = User.get_cached_by_ap_id(note.data["actor"])
note = Repo.get(Activity, note.id)
note_xml = ActivityRepresenter.to_simple_form(note, note_user, true)
|> :xmerl.export_simple_content(:xmerl_xml)
|> to_string
updated_at = announce.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = announce.inserted_at
|> NaiveDateTime.to_iso8601
expected = """
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<id>#{announce.data["id"]}</id>
<title>#{user.nickname} repeated a notice</title>
<content type="html">RT #{note.data["object"]["content"]}</content>
<published>#{inserted_at}</published>
<updated>#{updated_at}</updated>
<ostatus:conversation>#{announce.data["context"]}</ostatus:conversation>
<link href="#{announce.data["context"]}" rel="ostatus:conversation" />
<link rel="self" type="application/atom+xml" href="#{announce.data["id"]}"/>
<activity:object>
#{note_xml}
</activity:object>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="#{note.data["actor"]}"/>
"""
announce_xml = ActivityRepresenter.to_simple_form(announce, user)
|> :xmerl.export_simple_content(:xmerl_xml)
|> to_string
assert clean(expected) == clean(announce_xml)
end
test "a like activity" do
note = insert(:note)
user = insert(:user)
{:ok, like, _note} = ActivityPub.like(user, note)
# TODO: Are these the correct dates?
updated_at = like.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = like.inserted_at
|> NaiveDateTime.to_iso8601
tuple = ActivityRepresenter.to_simple_form(like, user)
refute is_nil(tuple)
res = :xmerl.export_simple_content(tuple, :xmerl_xml) |> IO.iodata_to_binary
expected = """
<activity:verb>http://activitystrea.ms/schema/1.0/favorite</activity:verb>
<id>#{like.data["id"]}</id>
<title>New favorite by #{user.nickname}</title>
<content type="html">#{user.nickname} favorited something</content>
<published>#{inserted_at}</published>
<updated>#{updated_at}</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>#{note.data["id"]}</id>
</activity:object>
<ostatus:conversation>#{like.data["context"]}</ostatus:conversation>
<link href="#{like.data["context"]}" rel="ostatus:conversation" />
<link rel="self" type="application/atom+xml" href="#{like.data["id"]}"/>
<thr:in-reply-to ref="#{note.data["id"]}" />
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="#{note.data["actor"]}"/>
"""
assert clean(res) == clean(expected)
end
test "a follow activity" do
follower = insert(:user)
followed = insert(:user)
{:ok, activity} = ActivityPub.insert(%{
"type" => "Follow",
"actor" => follower.ap_id,
"object" => followed.ap_id,
"to" => [followed.ap_id]
})
# TODO: Are these the correct dates?
updated_at = activity.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = activity.inserted_at
|> NaiveDateTime.to_iso8601
tuple = ActivityRepresenter.to_simple_form(activity, follower)
refute is_nil(tuple)
res = :xmerl.export_simple_content(tuple, :xmerl_xml) |> IO.iodata_to_binary
expected = """
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/follow</activity:verb>
<id>#{activity.data["id"]}</id>
<title>#{follower.nickname} started following #{activity.data["object"]}</title>
<content type="html"> #{follower.nickname} started following #{activity.data["object"]}</content>
<published>#{inserted_at}</published>
<updated>#{updated_at}</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>#{activity.data["object"]}</id>
<uri>#{activity.data["object"]}</uri>
</activity:object>
<link rel="self" type="application/atom+xml" href="#{activity.data["id"]}"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="#{activity.data["object"]}"/>
"""
assert clean(res) == clean(expected)
end
test "an unfollow activity" do
follower = insert(:user)
followed = insert(:user)
{:ok, _activity} = ActivityPub.follow(follower, followed)
{:ok, activity} = ActivityPub.unfollow(follower, followed)
# TODO: Are these the correct dates?
updated_at = activity.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = activity.inserted_at
|> NaiveDateTime.to_iso8601
tuple = ActivityRepresenter.to_simple_form(activity, follower)
refute is_nil(tuple)
res = :xmerl.export_simple_content(tuple, :xmerl_xml) |> IO.iodata_to_binary
expected = """
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/unfollow</activity:verb>
<id>#{activity.data["id"]}</id>
<title>#{follower.nickname} stopped following #{followed.ap_id}</title>
<content type="html"> #{follower.nickname} stopped following #{followed.ap_id}</content>
<published>#{inserted_at}</published>
<updated>#{updated_at}</updated>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>#{followed.ap_id}</id>
<uri>#{followed.ap_id}</uri>
</activity:object>
<link rel="self" type="application/atom+xml" href="#{activity.data["id"]}"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="#{followed.ap_id}"/>
"""
assert clean(res) == clean(expected)
end
test "an unknown activity" do test "an unknown activity" do
tuple = ActivityRepresenter.to_simple_form(%Activity{}, nil) tuple = ActivityRepresenter.to_simple_form(%Activity{}, nil)
assert is_nil(tuple) assert is_nil(tuple)

View File

@ -22,12 +22,13 @@ test "returns a feed of the last 20 items of the user" do
|> :xmerl.export_simple_content(:xmerl_xml) |> :xmerl.export_simple_content(:xmerl_xml)
expected = """ expected = """
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0"> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0">
<id>#{OStatus.feed_path(user)}</id> <id>#{OStatus.feed_path(user)}</id>
<title>#{user.nickname}'s timeline</title> <title>#{user.nickname}'s timeline</title>
<updated>#{most_recent_update}</updated> <updated>#{most_recent_update}</updated>
<link rel="hub" href="#{OStatus.pubsub_path(user)}" /> <link rel="hub" href="#{OStatus.pubsub_path(user)}" />
<link rel="self" href="#{OStatus.feed_path(user)}" /> <link rel="salmon" href="#{OStatus.salmon_path(user)}" />
<link rel="self" href="#{OStatus.feed_path(user)}" type="application/atom+xml" />
<author> <author>
#{user_xml} #{user_xml}
</author> </author>

View File

@ -12,4 +12,15 @@ test "gets a feed", %{conn: conn} do
assert response(conn, 200) assert response(conn, 200)
end end
test "gets an object", %{conn: conn} do
note_activity = insert(:note_activity)
[_, uuid] = hd Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["object"]["id"])
url = "/objects/#{uuid}"
conn = conn
|> get(url)
assert response(conn, 200)
end
end end

View File

@ -0,0 +1,242 @@
defmodule Pleroma.Web.OStatusTest do
use Pleroma.DataCase
alias Pleroma.Web.OStatus
alias Pleroma.Web.XML
alias Pleroma.{Object, Repo, User}
import Pleroma.Factory
test "don't insert create notes twice" do
incoming = File.read!("test/fixtures/incoming_note_activity.xml")
{:ok, [_activity]} = OStatus.handle_incoming(incoming)
assert {:ok, [{:error, "duplicate activity"}]} == OStatus.handle_incoming(incoming)
end
test "handle incoming note - GS, Salmon" do
incoming = File.read!("test/fixtures/incoming_note_activity.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["id"] == "tag:gs.example.org:4040,2017-04-23:noticeId=29:objectType=note"
assert activity.data["published"] == "2017-04-23T14:51:03+00:00"
assert activity.data["context"] == "tag:gs.example.org:4040,2017-04-23:objectType=thread:nonce=f09e22f58abd5c7b"
assert "http://pleroma.example.org:4000/users/lain3" in activity.data["to"]
assert activity.local == false
end
test "handle incoming notes - GS, subscription" do
incoming = File.read!("test/fixtures/ostatus_incoming_post.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["actor"] == "https://social.heldscal.la/user/23211"
assert activity.data["object"]["content"] == "Will it blend?"
user = User.get_cached_by_ap_id(activity.data["actor"])
assert User.ap_followers(user) in activity.data["to"]
end
test "handle incoming notes with attachments - GS, subscription" do
incoming = File.read!("test/fixtures/incoming_websub_gnusocial_attachments.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["actor"] == "https://social.heldscal.la/user/23211"
assert activity.data["object"]["attachment"] |> length == 2
end
test "handle incoming notes - Mastodon, salmon, reply" do
# It uses the context of the replied to object
Repo.insert!(%Object{
data: %{
"id" => "https://pleroma.soykaf.com/objects/c237d966-ac75-4fe3-a87a-d89d71a3a7a4",
"context" => "2hu"
}})
incoming = File.read!("test/fixtures/incoming_reply_mastodon.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["actor"] == "https://mastodon.social/users/lambadalambda"
assert activity.data["context"] == "2hu"
end
test "handle incoming notes - GS, subscription, reply" do
incoming = File.read!("test/fixtures/ostatus_incoming_reply.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["actor"] == "https://social.heldscal.la/user/23211"
assert activity.data["object"]["content"] == "@<a href=\"https://gs.archae.me/user/4687\" class=\"h-card u-url p-nickname mention\" title=\"shpbot\">shpbot</a> why not indeed."
assert activity.data["object"]["inReplyTo"] == "tag:gs.archae.me,2017-04-30:noticeId=778260:objectType=note"
end
test "handle incoming retweets - GS, subscription" do
incoming = File.read!("test/fixtures/share-gs.xml")
{:ok, [[activity, retweeted_activity]]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Announce"
assert activity.data["actor"] == "https://social.heldscal.la/user/23211"
assert activity.data["object"] == retweeted_activity.data["object"]["id"]
refute activity.local
assert retweeted_activity.data["type"] == "Create"
assert retweeted_activity.data["actor"] == "https://pleroma.soykaf.com/users/lain"
refute retweeted_activity.local
end
test "handle incoming retweets - Mastodon, salmon" do
incoming = File.read!("test/fixtures/share.xml")
{:ok, [[activity, retweeted_activity]]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Announce"
assert activity.data["actor"] == "https://mastodon.social/users/lambadalambda"
assert activity.data["object"] == retweeted_activity.data["object"]["id"]
refute activity.local
assert retweeted_activity.data["type"] == "Create"
assert retweeted_activity.data["actor"] == "https://pleroma.soykaf.com/users/lain"
refute retweeted_activity.local
end
test "handle incoming favorites - GS, websub" do
incoming = File.read!("test/fixtures/favorite.xml")
{:ok, [[activity, favorited_activity]]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Like"
assert activity.data["actor"] == "https://social.heldscal.la/user/23211"
assert activity.data["object"] == favorited_activity.data["object"]["id"]
refute activity.local
assert favorited_activity.data["type"] == "Create"
assert favorited_activity.data["actor"] == "https://shitposter.club/user/1"
assert favorited_activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment"
refute favorited_activity.local
end
test "handle incoming favorites with locally available object - GS, websub" do
note_activity = insert(:note_activity)
incoming = File.read!("test/fixtures/favorite_with_local_note.xml")
|> String.replace("localid", note_activity.data["object"]["id"])
{:ok, [[activity, favorited_activity]]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Like"
assert activity.data["actor"] == "https://social.heldscal.la/user/23211"
assert activity.data["object"] == favorited_activity.data["object"]["id"]
refute activity.local
assert note_activity.id == favorited_activity.id
assert favorited_activity.local
end
test "handle incoming replies" do
incoming = File.read!("test/fixtures/incoming_note_activity_answer.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["inReplyTo"] == "http://pleroma.example.org:4000/objects/55bce8fc-b423-46b1-af71-3759ab4670bc"
assert "http://pleroma.example.org:4000/users/lain5" in activity.data["to"]
end
describe "new remote user creation" do
test "returns local users" do
local_user = insert(:user)
{:ok, user} = OStatus.find_or_make_user(local_user.ap_id)
assert user == local_user
end
test "tries to use the information in poco fields" do
uri = "https://social.heldscal.la/user/23211"
{:ok, user} = OStatus.find_or_make_user(uri)
user = Repo.get(Pleroma.User, user.id)
assert user.name == "Constance Variable"
assert user.nickname == "lambadalambda@social.heldscal.la"
assert user.local == false
assert user.info["uri"] == uri
assert user.ap_id == uri
assert user.avatar["type"] == "Image"
{:ok, user_again} = OStatus.find_or_make_user(uri)
assert user == user_again
end
test "find_make_or_update_user takes an author element and returns an updated user" do
uri = "https://social.heldscal.la/user/23211"
{:ok, user} = OStatus.find_or_make_user(uri)
change = Ecto.Changeset.change(user, %{avatar: nil})
{:ok, user} = Repo.update(change)
refute user.avatar
doc = XML.parse_document(File.read!("test/fixtures/23211.atom"))
[author] = :xmerl_xpath.string('//author[1]', doc)
{:ok, user} = OStatus.find_make_or_update_user(author)
assert user.avatar["type"] == "Image"
{:ok, user_again} = OStatus.find_make_or_update_user(author)
assert user_again == user
end
end
describe "gathering user info from a user id" do
test "it returns user info in a hash" do
user = "shp@social.heldscal.la"
# TODO: make test local
{:ok, data} = OStatus.gather_user_info(user)
expected = %{
"hub" => "https://social.heldscal.la/main/push/hub",
"magic_key" => "RSA.wQ3i9UA0qmAxZ0WTIp4a-waZn_17Ez1pEEmqmqoooRsG1_BvpmOvLN0G2tEcWWxl2KOtdQMCiPptmQObeZeuj48mdsDZ4ArQinexY2hCCTcbV8Xpswpkb8K05RcKipdg07pnI7tAgQ0VWSZDImncL6YUGlG5YN8b5TjGOwk2VG8=.AQAB",
"name" => "shp",
"nickname" => "shp",
"salmon" => "https://social.heldscal.la/main/salmon/user/29191",
"subject" => "acct:shp@social.heldscal.la",
"topic" => "https://social.heldscal.la/api/statuses/user_timeline/29191.atom",
"uri" => "https://social.heldscal.la/user/29191",
"host" => "social.heldscal.la",
"fqn" => user,
"avatar" => %{"type" => "Image", "url" => [%{"href" => "https://social.heldscal.la/avatar/29191-original-20170421154949.jpeg", "mediaType" => "image/jpeg", "type" => "Link"}]}
}
assert data == expected
end
test "it works with the uri" do
user = "https://social.heldscal.la/user/29191"
# TODO: make test local
{:ok, data} = OStatus.gather_user_info(user)
expected = %{
"hub" => "https://social.heldscal.la/main/push/hub",
"magic_key" => "RSA.wQ3i9UA0qmAxZ0WTIp4a-waZn_17Ez1pEEmqmqoooRsG1_BvpmOvLN0G2tEcWWxl2KOtdQMCiPptmQObeZeuj48mdsDZ4ArQinexY2hCCTcbV8Xpswpkb8K05RcKipdg07pnI7tAgQ0VWSZDImncL6YUGlG5YN8b5TjGOwk2VG8=.AQAB",
"name" => "shp",
"nickname" => "shp",
"salmon" => "https://social.heldscal.la/main/salmon/user/29191",
"subject" => "https://social.heldscal.la/user/29191",
"topic" => "https://social.heldscal.la/api/statuses/user_timeline/29191.atom",
"uri" => "https://social.heldscal.la/user/29191",
"host" => "social.heldscal.la",
"fqn" => user,
"avatar" => %{"type" => "Image", "url" => [%{"href" => "https://social.heldscal.la/avatar/29191-original-20170421154949.jpeg", "mediaType" => "image/jpeg", "type" => "Link"}]}
}
assert data == expected
end
end
describe "fetching a status by it's HTML url" do
test "it builds a missing status from an html url" do
url = "https://shitposter.club/notice/2827873"
{:ok, [activity] } = OStatus.fetch_activity_from_html_url(url)
assert activity.data["actor"] == "https://shitposter.club/user/1"
assert activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment"
end
end
end

View File

@ -1,6 +1,8 @@
defmodule Pleroma.Web.Salmon.SalmonTest do defmodule Pleroma.Web.Salmon.SalmonTest do
use Pleroma.DataCase use Pleroma.DataCase
alias Pleroma.Web.Salmon alias Pleroma.Web.Salmon
alias Pleroma.{Repo, Activity, User}
import Pleroma.Factory
@magickey "RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwQhh-1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB" @magickey "RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwQhh-1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB"
@ -16,4 +18,75 @@ test "errors on wrong magic key" do
{:ok, salmon} = File.read("test/fixtures/salmon.xml") {:ok, salmon} = File.read("test/fixtures/salmon.xml")
assert Salmon.decode_and_validate(@wrong_magickey, salmon) == :error assert Salmon.decode_and_validate(@wrong_magickey, salmon) == :error
end end
test "generates an RSA private key pem" do
{:ok, key} = Salmon.generate_rsa_pem
assert is_binary(key)
assert Regex.match?(~r/RSA/, key)
end
test "it encodes a magic key from a public key" do
key = Salmon.decode_key(@magickey)
magic_key = Salmon.encode_key(key)
assert @magickey == magic_key
end
test "returns a public and private key from a pem" do
pem = File.read!("test/fixtures/private_key.pem")
{:ok, private, public} = Salmon.keys_from_pem(pem)
assert elem(private, 0) == :RSAPrivateKey
assert elem(public, 0) == :RSAPublicKey
end
test "encodes an xml payload with a private key" do
doc = File.read!("test/fixtures/incoming_note_activity.xml")
pem = File.read!("test/fixtures/private_key.pem")
{:ok, private, public} = Salmon.keys_from_pem(pem)
# Let's try a roundtrip.
{:ok, salmon} = Salmon.encode(private, doc)
{:ok, decoded_doc} = Salmon.decode_and_validate(Salmon.encode_key(public), salmon)
assert doc == decoded_doc
end
test "it gets a magic key" do
# TODO: Make test local
salmon = File.read!("test/fixtures/salmon2.xml")
{:ok, key} = Salmon.fetch_magic_key(salmon)
assert key == "RSA.uzg6r1peZU0vXGADWxGJ0PE34WvmhjUmydbX5YYdOiXfODVLwCMi1umGoqUDm-mRu4vNEdFBVJU1CpFA7dKzWgIsqsa501i2XqElmEveXRLvNRWFB6nG03Q5OUY2as8eE54BJm0p20GkMfIJGwP6TSFb-ICp3QjzbatuSPJ6xCE=.AQAB"
end
test "it pushes an activity to remote accounts it's addressed to" do
user_data = %{
info: %{
"salmon" => "http://example.org/salmon"
},
local: false
}
mentioned_user = insert(:user, user_data)
note = insert(:note)
activity_data = %{
"id" => Pleroma.Web.ActivityPub.ActivityPub.generate_activity_id,
"type" => "Create",
"actor" => note.data["actor"],
"to" => note.data["to"] ++ [mentioned_user.ap_id],
"object" => note.data,
"published_at" => DateTime.utc_now() |> DateTime.to_iso8601,
"context" => note.data["context"]
}
{:ok, activity} = Repo.insert(%Activity{data: activity_data})
user = Repo.get_by(User, ap_id: activity.data["actor"])
{:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user)
poster = fn (url, data, headers) ->
assert url == "http://example.org/salmon"
end
Salmon.publish(user, activity, poster)
end
end end

View File

@ -22,6 +22,8 @@ test "an announce activity" do
retweeted_status = ActivityRepresenter.to_map(note_activity, %{user: activity_actor, for: user}) retweeted_status = ActivityRepresenter.to_map(note_activity, %{user: activity_actor, for: user})
assert retweeted_status["repeated"] == true assert retweeted_status["repeated"] == true
assert retweeted_status["id"] == note_activity.id
assert status["statusnet_conversation_id"] == retweeted_status["statusnet_conversation_id"]
assert status["retweeted_status"] == retweeted_status assert status["retweeted_status"] == retweeted_status
end end
@ -69,6 +71,8 @@ test "an activity" do
content = HtmlSanitizeEx.strip_tags(content_html) content = HtmlSanitizeEx.strip_tags(content_html)
date = DateTime.from_naive!(~N[2016-05-24 13:26:08.003], "Etc/UTC") |> DateTime.to_iso8601 date = DateTime.from_naive!(~N[2016-05-24 13:26:08.003], "Etc/UTC") |> DateTime.to_iso8601
{:ok, convo_object} = Object.context_mapping("2hu") |> Repo.insert
activity = %Activity{ activity = %Activity{
id: 1, id: 1,
data: %{ data: %{
@ -84,14 +88,15 @@ test "an activity" do
"type" => "Note", "type" => "Note",
"content" => content_html, "content" => content_html,
"inReplyToStatusId" => 213123, "inReplyToStatusId" => 213123,
"statusnetConversationId" => 4711,
"attachment" => [ "attachment" => [
object object
], ],
"like_count" => 5, "like_count" => 5,
"announcement_count" => 3 "announcement_count" => 3,
"context" => "2hu"
}, },
"published" => date "published" => date,
"context" => "2hu"
} }
} }
@ -106,7 +111,7 @@ test "an activity" do
"is_post_verb" => true, "is_post_verb" => true,
"created_at" => "Tue May 24 13:26:08 +0000 2016", "created_at" => "Tue May 24 13:26:08 +0000 2016",
"in_reply_to_status_id" => 213123, "in_reply_to_status_id" => 213123,
"statusnet_conversation_id" => 4711, "statusnet_conversation_id" => convo_object.id,
"attachments" => [ "attachments" => [
ObjectRepresenter.to_map(object) ObjectRepresenter.to_map(object)
], ],

View File

@ -48,7 +48,8 @@ test "A user" do
"profile_image_url_profile_size" => image, "profile_image_url_profile_size" => image,
"profile_image_url_original" => image, "profile_image_url_original" => image,
"following" => false, "following" => false,
"rights" => %{} "rights" => %{},
"statusnet_profile_url" => user.ap_id
} }
assert represented == UserRepresenter.to_map(user) assert represented == UserRepresenter.to_map(user)
@ -72,7 +73,8 @@ test "A user for a given other follower", %{user: user} do
"profile_image_url_profile_size" => image, "profile_image_url_profile_size" => image,
"profile_image_url_original" => image, "profile_image_url_original" => image,
"following" => true, "following" => true,
"rights" => %{} "rights" => %{},
"statusnet_profile_url" => user.ap_id
} }
assert represented == UserRepresenter.to_map(user, %{for: follower}) assert represented == UserRepresenter.to_map(user, %{for: follower})

View File

@ -84,12 +84,13 @@ test "returns one status", %{conn: conn} do
describe "GET /statusnet/conversation/:id.json" do describe "GET /statusnet/conversation/:id.json" do
test "returns the statuses in the conversation", %{conn: conn} do test "returns the statuses in the conversation", %{conn: conn} do
{:ok, _user} = UserBuilder.insert {:ok, _user} = UserBuilder.insert
{:ok, _activity} = ActivityBuilder.insert(%{"statusnetConversationId" => 1, "context" => "2hu"}) {:ok, _activity} = ActivityBuilder.insert(%{"context" => "2hu"})
{:ok, _activity_two} = ActivityBuilder.insert(%{"statusnetConversationId" => 1,"context" => "2hu"}) {:ok, _activity_two} = ActivityBuilder.insert(%{"context" => "2hu"})
{:ok, _activity_three} = ActivityBuilder.insert(%{"context" => "3hu"}) {:ok, _activity_three} = ActivityBuilder.insert(%{"context" => "3hu"})
{:ok, object} = Object.context_mapping("2hu") |> Repo.insert
conn = conn conn = conn
|> get("/api/statusnet/conversation/1.json") |> get("/api/statusnet/conversation/#{object.id}.json")
response = json_response(conn, 200) response = json_response(conn, 200)
@ -244,6 +245,7 @@ test "with credentials", %{conn: conn, user: current_user} do
{:ok, current_user} = User.follow(current_user, followed) {:ok, current_user} = User.follow(current_user, followed)
assert current_user.following == [User.ap_followers(followed)] assert current_user.following == [User.ap_followers(followed)]
ActivityPub.follow(current_user, followed)
conn = conn conn = conn
|> with_credentials(current_user.nickname, "test") |> with_credentials(current_user.nickname, "test")
@ -396,10 +398,4 @@ defp with_credentials(conn, username, password) do
header_content = "Basic " <> Base.encode64("#{username}:#{password}") header_content = "Basic " <> Base.encode64("#{username}:#{password}")
put_req_header(conn, "authorization", header_content) put_req_header(conn, "authorization", header_content)
end end
setup do
Supervisor.terminate_child(Pleroma.Supervisor, ConCache)
Supervisor.restart_child(Pleroma.Supervisor, ConCache)
:ok
end
end end

View File

@ -33,19 +33,18 @@ test "create a status" do
{ :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input) { :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>This is on another line." assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>This is on another line.<br><a href='http://example.org/image.jpg'>http://example.org/image.jpg</a>"
assert get_in(activity.data, ["object", "type"]) == "Note" assert get_in(activity.data, ["object", "type"]) == "Note"
assert get_in(activity.data, ["object", "actor"]) == user.ap_id assert get_in(activity.data, ["object", "actor"]) == user.ap_id
assert get_in(activity.data, ["actor"]) == user.ap_id assert get_in(activity.data, ["actor"]) == user.ap_id
assert Enum.member?(get_in(activity.data, ["to"]), User.ap_followers(user)) assert Enum.member?(get_in(activity.data, ["to"]), User.ap_followers(user))
assert Enum.member?(get_in(activity.data, ["to"]), "https://www.w3.org/ns/activitystreams#Public") assert Enum.member?(get_in(activity.data, ["to"]), "https://www.w3.org/ns/activitystreams#Public")
assert Enum.member?(get_in(activity.data, ["to"]), "shp") assert Enum.member?(get_in(activity.data, ["to"]), "shp")
assert activity.local == true
# Add a context + 'statusnet_conversation_id' # Add a context
assert is_binary(get_in(activity.data, ["context"])) assert is_binary(get_in(activity.data, ["context"]))
assert is_binary(get_in(activity.data, ["object", "context"])) assert is_binary(get_in(activity.data, ["object", "context"]))
assert get_in(activity.data, ["object", "statusnetConversationId"]) == activity.id
assert get_in(activity.data, ["statusnetConversationId"]) == activity.id
assert is_list(activity.data["object"]["attachment"]) assert is_list(activity.data["object"]["attachment"])
@ -69,15 +68,14 @@ test "create a status that is a reply" do
assert get_in(reply.data, ["context"]) == get_in(activity.data, ["context"]) assert get_in(reply.data, ["context"]) == get_in(activity.data, ["context"])
assert get_in(reply.data, ["object", "context"]) == get_in(activity.data, ["object", "context"]) assert get_in(reply.data, ["object", "context"]) == get_in(activity.data, ["object", "context"])
assert get_in(reply.data, ["statusnetConversationId"]) == get_in(activity.data, ["statusnetConversationId"])
assert get_in(reply.data, ["object", "statusnetConversationId"]) == get_in(activity.data, ["object", "statusnetConversationId"])
assert get_in(reply.data, ["object", "inReplyTo"]) == get_in(activity.data, ["object", "id"]) assert get_in(reply.data, ["object", "inReplyTo"]) == get_in(activity.data, ["object", "id"])
assert get_in(reply.data, ["object", "inReplyToStatusId"]) == activity.id assert get_in(reply.data, ["object", "inReplyToStatusId"]) == activity.id
assert Enum.member?(get_in(reply.data, ["to"]), "some_cool_id") assert Enum.member?(get_in(reply.data, ["to"]), "some_cool_id")
end end
test "fetch public statuses" do test "fetch public statuses, excluding remote ones." do
%{ public: activity, user: user } = ActivityBuilder.public_and_non_public %{ public: activity, user: user } = ActivityBuilder.public_and_non_public
insert(:note_activity, %{local: false})
follower = insert(:user, following: [User.ap_followers(user)]) follower = insert(:user, following: [User.ap_followers(user)])
@ -87,6 +85,18 @@ test "fetch public statuses" do
assert Enum.at(statuses, 0) == ActivityRepresenter.to_map(activity, %{user: user, for: follower}) assert Enum.at(statuses, 0) == ActivityRepresenter.to_map(activity, %{user: user, for: follower})
end end
test "fetch whole known network statuses" do
%{ public: activity, user: user } = ActivityBuilder.public_and_non_public
insert(:note_activity, %{local: false})
follower = insert(:user, following: [User.ap_followers(user)])
statuses = TwitterAPI.fetch_public_and_external_statuses(follower)
assert length(statuses) == 2
assert Enum.at(statuses, 0) == ActivityRepresenter.to_map(activity, %{user: user, for: follower})
end
test "fetch friends' statuses" do test "fetch friends' statuses" do
user = insert(:user, %{following: ["someguy/followers"]}) user = insert(:user, %{following: ["someguy/followers"]})
{:ok, activity} = ActivityBuilder.insert(%{"to" => ["someguy/followers"]}) {:ok, activity} = ActivityBuilder.insert(%{"to" => ["someguy/followers"]})
@ -180,6 +190,7 @@ test "Follow another user using screen_name" do
test "Unfollow another user using user_id" do test "Unfollow another user using user_id" do
unfollowed = insert(:user) unfollowed = insert(:user)
user = insert(:user, %{following: [User.ap_followers(unfollowed)]}) user = insert(:user, %{following: [User.ap_followers(unfollowed)]})
ActivityPub.follow(user, unfollowed)
{:ok, user, unfollowed } = TwitterAPI.unfollow(user, %{"user_id" => unfollowed.id}) {:ok, user, unfollowed } = TwitterAPI.unfollow(user, %{"user_id" => unfollowed.id})
assert user.following == [] assert user.following == []
@ -192,6 +203,8 @@ test "Unfollow another user using screen_name" do
unfollowed = insert(:user) unfollowed = insert(:user)
user = insert(:user, %{following: [User.ap_followers(unfollowed)]}) user = insert(:user, %{following: [User.ap_followers(unfollowed)]})
ActivityPub.follow(user, unfollowed)
{:ok, user, unfollowed } = TwitterAPI.unfollow(user, %{"screen_name" => unfollowed.nickname}) {:ok, user, unfollowed } = TwitterAPI.unfollow(user, %{"screen_name" => unfollowed.nickname})
assert user.following == [] assert user.following == []
@ -201,11 +214,13 @@ test "Unfollow another user using screen_name" do
test "fetch statuses in a context using the conversation id" do test "fetch statuses in a context using the conversation id" do
{:ok, user} = UserBuilder.insert() {:ok, user} = UserBuilder.insert()
{:ok, activity} = ActivityBuilder.insert(%{"statusnetConversationId" => 1, "context" => "2hu"}) {:ok, activity} = ActivityBuilder.insert(%{"context" => "2hu"})
{:ok, activity_two} = ActivityBuilder.insert(%{"statusnetConversationId" => 1,"context" => "2hu"}) {:ok, activity_two} = ActivityBuilder.insert(%{"context" => "2hu"})
{:ok, _activity_three} = ActivityBuilder.insert(%{"context" => "3hu"}) {:ok, _activity_three} = ActivityBuilder.insert(%{"context" => "3hu"})
statuses = TwitterAPI.fetch_conversation(user, 1) {:ok, object} = Object.context_mapping("2hu") |> Repo.insert
statuses = TwitterAPI.fetch_conversation(user, object.id)
assert length(statuses) == 2 assert length(statuses) == 2
assert Enum.at(statuses, 0)["id"] == activity.id assert Enum.at(statuses, 0)["id"] == activity.id
@ -314,9 +329,33 @@ test "it returns the error on registration problems" do
refute Repo.get_by(User, nickname: "lain") refute Repo.get_by(User, nickname: "lain")
end end
test "it assigns an integer conversation_id" do
note_activity = insert(:note_activity)
user = User.get_cached_by_ap_id(note_activity.data["actor"])
status = ActivityRepresenter.to_map(note_activity, %{user: user})
assert is_number(status["statusnet_conversation_id"])
end
setup do setup do
Supervisor.terminate_child(Pleroma.Supervisor, Cachex) Supervisor.terminate_child(Pleroma.Supervisor, Cachex)
Supervisor.restart_child(Pleroma.Supervisor, Cachex) Supervisor.restart_child(Pleroma.Supervisor, Cachex)
:ok :ok
end end
describe "context_to_conversation_id" do
test "creates a mapping object" do
conversation_id = TwitterAPI.context_to_conversation_id("random context")
object = Object.get_by_ap_id("random context")
assert conversation_id == object.id
end
test "returns an existing mapping for an existing object" do
{:ok, object} = Object.context_mapping("random context") |> Repo.insert
conversation_id = TwitterAPI.context_to_conversation_id("random context")
assert conversation_id == object.id
end
end
end end

View File

@ -1,11 +1,61 @@
defmodule Pleroma.Web.WebFingerTest do defmodule Pleroma.Web.WebFingerTest do
use Pleroma.DataCase use Pleroma.DataCase
alias Pleroma.Web.WebFinger
import Pleroma.Factory
describe "host meta" do describe "host meta" do
test "returns a link to the xml lrdd" do test "returns a link to the xml lrdd" do
host_info = Pleroma.Web.WebFinger.host_meta host_info = WebFinger.host_meta()
assert String.contains?(host_info, Pleroma.Web.base_url) assert String.contains?(host_info, Pleroma.Web.base_url)
end end
end end
describe "incoming webfinger request" do
test "works for fqns" do
user = insert(:user)
{:ok, result} = WebFinger.webfinger("#{user.nickname}@#{Pleroma.Web.Endpoint.host}")
assert is_binary(result)
end
test "works for ap_ids" do
user = insert(:user)
{:ok, result} = WebFinger.webfinger(user.ap_id)
assert is_binary(result)
end
end
describe "fingering" do
test "returns the info for a user" do
user = "shp@social.heldscal.la"
getter = fn(_url, _headers, [params: [resource: ^user]]) ->
{:ok, %{status_code: 200, body: File.read!("test/fixtures/webfinger.xml")}}
end
{:ok, data} = WebFinger.finger(user, getter)
assert data["magic_key"] == "RSA.wQ3i9UA0qmAxZ0WTIp4a-waZn_17Ez1pEEmqmqoooRsG1_BvpmOvLN0G2tEcWWxl2KOtdQMCiPptmQObeZeuj48mdsDZ4ArQinexY2hCCTcbV8Xpswpkb8K05RcKipdg07pnI7tAgQ0VWSZDImncL6YUGlG5YN8b5TjGOwk2VG8=.AQAB"
assert data["topic"] == "https://social.heldscal.la/api/statuses/user_timeline/29191.atom"
assert data["subject"] == "acct:shp@social.heldscal.la"
assert data["salmon"] == "https://social.heldscal.la/main/salmon/user/29191"
end
end
describe "ensure_keys_present" do
test "it creates keys for a user and stores them in info" do
user = insert(:user)
refute is_binary(user.info["keys"])
{:ok, user} = WebFinger.ensure_keys_present(user)
assert is_binary(user.info["keys"])
end
test "it doesn't create keys if there already are some" do
user = insert(:user, %{info: %{"keys" => "xxx"}})
{:ok, user} = WebFinger.ensure_keys_present(user)
assert user.info["keys"] == "xxx"
end
end
end end

View File

@ -1,6 +1,9 @@
defmodule Pleroma.Web.Websub.WebsubControllerTest do defmodule Pleroma.Web.Websub.WebsubControllerTest do
use Pleroma.Web.ConnCase use Pleroma.Web.ConnCase
import Pleroma.Factory import Pleroma.Factory
alias Pleroma.Web.Websub.WebsubClientSubscription
alias Pleroma.{Repo, Activity}
alias Pleroma.Web.Websub
test "websub subscription request", %{conn: conn} do test "websub subscription request", %{conn: conn} do
user = insert(:user) user = insert(:user)
@ -20,4 +23,62 @@ test "websub subscription request", %{conn: conn} do
assert response(conn, 202) == "Accepted" assert response(conn, 202) == "Accepted"
end end
test "websub subscription confirmation", %{conn: conn} do
websub = insert(:websub_client_subscription)
params = %{
"hub.mode" => "subscribe",
"hub.topic" => websub.topic,
"hub.challenge" => "some challenge",
"hub.lease_seconds" => 100
}
conn = conn
|> get("/push/subscriptions/#{websub.id}", params)
websub = Repo.get(WebsubClientSubscription, websub.id)
assert response(conn, 200) == "some challenge"
assert websub.state == "accepted"
# TODO valid_until
end
test "handles incoming feed updates", %{conn: conn} do
websub = insert(:websub_client_subscription)
doc = "some stuff"
signature = Websub.sign(websub.secret, doc)
conn = conn
|> put_req_header("x-hub-signature", "sha1=" <> signature)
|> put_req_header("content-type", "application/atom+xml")
|> post("/push/subscriptions/#{websub.id}", doc)
assert response(conn, 200) == "OK"
assert length(Repo.all(Activity)) == 1
end
test "rejects incoming feed updates with the wrong signature", %{conn: conn} do
websub = insert(:websub_client_subscription)
doc = "some stuff"
signature = Websub.sign("wrong secret", doc)
conn = conn
|> put_req_header("x-hub-signature", "sha1=" <> signature)
|> put_req_header("content-type", "application/atom+xml")
|> post("/push/subscriptions/#{websub.id}", doc)
assert response(conn, 500) == "Error"
assert length(Repo.all(Activity)) == 0
end
end
defmodule Pleroma.Web.OStatusMock do
import Pleroma.Factory
def handle_incoming(_doc) do
insert(:note_activity)
end
end end

View File

@ -3,11 +3,13 @@ def verify(sub) do
{:ok, sub} {:ok, sub}
end end
end end
defmodule Pleroma.Web.WebsubTest do defmodule Pleroma.Web.WebsubTest do
use Pleroma.DataCase use Pleroma.DataCase
alias Pleroma.Web.Websub alias Pleroma.Web.Websub
alias Pleroma.Web.Websub.WebsubServerSubscription alias Pleroma.Web.Websub.WebsubServerSubscription
import Pleroma.Factory import Pleroma.Factory
alias Pleroma.Web.Router.Helpers
test "a verification of a request that is accepted" do test "a verification of a request that is accepted" do
sub = insert(:websub_subscription) sub = insert(:websub_subscription)
@ -58,7 +60,6 @@ test "an incoming subscription request" do
"hub.lease_seconds" => "100" "hub.lease_seconds" => "100"
} }
{:ok, subscription } = Websub.incoming_subscription_request(user, data) {:ok, subscription } = Websub.incoming_subscription_request(user, data)
assert subscription.topic == Pleroma.Web.OStatus.feed_path(user) assert subscription.topic == Pleroma.Web.OStatus.feed_path(user)
assert subscription.state == "requested" assert subscription.state == "requested"
@ -78,7 +79,6 @@ test "an incoming subscription request for an existing subscription" do
"hub.lease_seconds" => "100" "hub.lease_seconds" => "100"
} }
{:ok, subscription } = Websub.incoming_subscription_request(user, data) {:ok, subscription } = Websub.incoming_subscription_request(user, data)
assert subscription.topic == Pleroma.Web.OStatus.feed_path(user) assert subscription.topic == Pleroma.Web.OStatus.feed_path(user)
assert subscription.state == sub.state assert subscription.state == sub.state
@ -87,4 +87,91 @@ test "an incoming subscription request for an existing subscription" do
assert length(Repo.all(WebsubServerSubscription)) == 1 assert length(Repo.all(WebsubServerSubscription)) == 1
assert subscription.id == sub.id assert subscription.id == sub.id
end end
def accepting_verifier(subscription) do
{:ok, %{ subscription | state: "accepted" }}
end
test "initiate a subscription for a given user and topic" do
subscriber = insert(:user)
user = insert(:user, %{info: %{ "topic" => "some_topic", "hub" => "some_hub"}})
{:ok, websub} = Websub.subscribe(subscriber, user, &accepting_verifier/1)
assert websub.subscribers == [subscriber.ap_id]
assert websub.topic == "some_topic"
assert websub.hub == "some_hub"
assert is_binary(websub.secret)
assert websub.user == user
assert websub.state == "accepted"
end
test "discovers the hub and canonical url" do
topic = "https://mastodon.social/users/lambadalambda.atom"
getter = fn(^topic) ->
doc = File.read!("test/fixtures/lambadalambda.atom")
{:ok, %{status_code: 200, body: doc}}
end
{:ok, discovered} = Websub.gather_feed_data(topic, getter)
expected = %{
"hub" => "https://mastodon.social/api/push",
"uri" => "https://mastodon.social/users/lambadalambda",
"nickname" => "lambadalambda",
"name" => "Critical Value",
"host" => "mastodon.social",
"avatar" => %{"type" => "Image", "url" => [%{"href" => "https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif?1492379244", "mediaType" => "image/gif", "type" => "Link"}]}
}
assert expected == discovered
end
test "calls the hub, requests topic" do
hub = "https://social.heldscal.la/main/push/hub"
topic = "https://social.heldscal.la/api/statuses/user_timeline/23211.atom"
websub = insert(:websub_client_subscription, %{hub: hub, topic: topic})
poster = fn (^hub, {:form, data}, _headers) ->
assert Keyword.get(data, :"hub.mode") == "subscribe"
assert Keyword.get(data, :"hub.callback") == Helpers.websub_url(Pleroma.Web.Endpoint, :websub_subscription_confirmation, websub.id)
{:ok, %{status_code: 202}}
end
task = Task.async(fn -> Websub.request_subscription(websub, poster) end)
change = Ecto.Changeset.change(websub, %{state: "accepted"})
{:ok, _} = Repo.update(change)
{:ok, websub} = Task.await(task)
assert websub.state == "accepted"
end
test "rejects the subscription if it can't be accepted" do
hub = "https://social.heldscal.la/main/push/hub"
topic = "https://social.heldscal.la/api/statuses/user_timeline/23211.atom"
websub = insert(:websub_client_subscription, %{hub: hub, topic: topic})
poster = fn (^hub, {:form, _data}, _headers) ->
{:ok, %{status_code: 202}}
end
{:error, websub} = Websub.request_subscription(websub, poster, 1000)
assert websub.state == "rejected"
websub = insert(:websub_client_subscription, %{hub: hub, topic: topic})
poster = fn (^hub, {:form, _data}, _headers) ->
{:ok, %{status_code: 400}}
end
{:error, websub} = Websub.request_subscription(websub, poster, 1000)
assert websub.state == "rejected"
end
test "sign a text" do
signed = Websub.sign("secret", "text")
assert signed == "B8392C23690CCF871F37EC270BE1582DEC57A503" |> String.downcase
signed = Websub.sign("secret", [[""], ['']])
end
end end