Merge branch 'develop' into feature/activitypub

This commit is contained in:
lain 2018-03-08 12:37:06 +01:00
commit 611ca385de
5 changed files with 38 additions and 24 deletions

View file

@ -50,7 +50,8 @@
name: "Pleroma",
email: "example@example.com",
limit: 5000,
registrations_open: true
registrations_open: true,
federating: true
config :pleroma, :media_proxy,
enabled: false,

View file

@ -99,7 +99,7 @@ def update_changeset(struct, params \\ %{}) do
|> cast(params, [:bio, :name])
|> unique_constraint(:nickname)
|> validate_format(:nickname, ~r/^[a-zA-Z\d]+$/)
|> validate_length(:bio, min: 1, max: 5000)
|> validate_length(:bio, max: 1000)
|> validate_length(:name, min: 1, max: 100)
end
@ -134,13 +134,13 @@ def reset_password(user, data) do
def register_changeset(struct, params \\ %{}) do
changeset = struct
|> cast(params, [:bio, :email, :name, :nickname, :password, :password_confirmation])
|> validate_required([:bio, :email, :name, :nickname, :password, :password_confirmation])
|> validate_required([:email, :name, :nickname, :password, :password_confirmation])
|> validate_confirmation(:password)
|> unique_constraint(:email)
|> unique_constraint(:nickname)
|> validate_format(:nickname, ~r/^[a-zA-Z\d]+$/)
|> validate_format(:email, @email_regex)
|> validate_length(:bio, min: 1, max: 1000)
|> validate_length(:bio, max: 1000)
|> validate_length(:name, min: 1, max: 100)
if changeset.valid? do

View file

@ -10,6 +10,8 @@ defmodule Pleroma.Web.Federator do
@websub Application.get_env(:pleroma, :websub)
@ostatus Application.get_env(:pleroma, :ostatus)
@httpoison Application.get_env(:pleroma, :httpoison)
@instance Application.get_env(:pleroma, :instance)
@federating Keyword.get(@instance, :federating)
@max_jobs 10
def start_link do
@ -107,10 +109,12 @@ def handle(type, _) do
end
def enqueue(type, payload, priority \\ 1) do
if Mix.env == :test do
handle(type, payload)
else
GenServer.cast(__MODULE__, {:enqueue, type, payload, priority})
if @federating do
if Mix.env == :test do
handle(type, payload)
else
GenServer.cast(__MODULE__, {:enqueue, type, payload, priority})
end
end
end

View file

@ -3,6 +3,9 @@ defmodule Pleroma.Web.Router do
alias Pleroma.{Repo, User, Web.Router}
@instance Application.get_env(:pleroma, :instance)
@federating Keyword.get(@instance, :federating)
def user_fetcher(username) do
{:ok, Repo.get_by(User, %{nickname: username})}
end
@ -228,13 +231,16 @@ def user_fetcher(username) do
get "/objects/:uuid", OStatus.OStatusController, :object
get "/activities/:uuid", OStatus.OStatusController, :activity
get "/notice/:id", OStatus.OStatusController, :notice
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
get "/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation
post "/push/subscriptions/:id", Websub.WebsubController, :websub_incoming
if @federating do
post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming
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
pipeline :activitypub do
@ -242,17 +248,19 @@ def user_fetcher(username) do
plug Pleroma.Web.Plugs.HTTPSignaturePlug
end
scope "/", Pleroma.Web.ActivityPub do
pipe_through :activitypub
post "/users/:nickname/inbox", ActivityPubController, :inbox
post "/inbox", ActivityPubController, :inbox
end
if @federating do
scope "/", Pleroma.Web.ActivityPub do
pipe_through :activitypub
post "/users/:nickname/inbox", ActivityPubController, :inbox
post "/inbox", ActivityPubController, :inbox
end
scope "/.well-known", Pleroma.Web do
pipe_through :well_known
scope "/.well-known", Pleroma.Web do
pipe_through :well_known
get "/host-meta", WebFinger.WebFingerController, :host_meta
get "/webfinger", WebFinger.WebFingerController, :webfinger
get "/host-meta", WebFinger.WebFingerController, :host_meta
get "/webfinger", WebFinger.WebFingerController, :webfinger
end
end
scope "/", Pleroma.Web.MastodonAPI do

View file

@ -102,13 +102,14 @@ test "test if a user is following another user" do
email: "email@example.com"
}
test "it requires a bio, email, name, nickname and password" do
test "it requires an email, name, nickname and password, bio is optional" do
@full_user_data
|> Map.keys
|> Enum.each(fn (key) ->
params = Map.delete(@full_user_data, key)
changeset = User.register_changeset(%User{}, params)
assert changeset.valid? == false
assert (if key == :bio, do: changeset.valid?, else: not changeset.valid?)
end)
end