Mark Felder
9c8055d4b3
Pleroma.Web.PleromaAPI.MascotController: dialyzer errors
...
lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:25:no_return
Function update/2 has no local return.
lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:27:call
The function call will not succeed.
Pleroma.Web.ActivityPub.ActivityPub.upload(_file :: atom() | %{:content_type => _, _ => _}, [{:actor, <<_::56, _::size(8)>>}, ...]) ::
:ok
def a() do
:ok
end
will never return since the 2nd arguments differ
from the success typing arguments:
(any(), [
{:activity_type | :description | :filters | :size_limit | :type | :uploader,
atom() | binary() | [atom()] | non_neg_integer()}
])
lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:31:call
The function call will not succeed.
Phoenix.Controller.json(
_conn :: %{
:assigns => %{:user => _, _ => _},
:body_params => %{:file => _, _ => _},
_ => _
},
_attachment :: any()
)
breaks the contract
(Plug.Conn.t(), term()) :: Plug.Conn.t()
lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:34:call
The function call will not succeed.
Plug.Conn.put_status(
_conn :: %{
:assigns => %{:user => _, _ => _},
:body_params => %{:file => _, _ => _},
_ => _
},
:unsupported_media_type
)
breaks the contract
(t(), status()) :: t()
lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:34:call
The function call will not succeed.
Plug.Conn.put_status(
_conn :: %{
:assigns => %{:user => _, _ => _},
:body_params => %{:file => _, _ => _},
_ => _
},
:unsupported_media_type
)
breaks the contract
(t(), status()) :: t()
lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:38:unused_fun
Function render_attachment/1 will never be called.
2024-01-28 15:52:09 -05:00
Mark Felder
563aebd5ce
Pleroma.Web.Plugs.UploadedMedia: dialyzer error
...
lib/pleroma/web/plugs/uploaded_media.ex:98:call
The function call will not succeed.
Pleroma.ReverseProxy.call(
_conn :: %Plug.Conn{
:adapter => {atom(), _},
:assigns => %{atom() => _},
:body_params => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:cookies => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:halted => boolean(),
:host => binary(),
:method => binary(),
:owner => pid(),
:params => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:path_info => [binary()],
:path_params => %{binary() => binary() | [any()] | map()},
:port => char(),
:private => %{atom() => _},
:query_params => %Plug.Conn.Unfetched{
:aspect => atom(),
binary() => binary() | [any()] | map()
},
:query_string => binary(),
:remote_ip =>
{byte(), byte(), byte(), byte()}
| {char(), char(), char(), char(), char(), char(), char(), char()},
:req_cookies => %Plug.Conn.Unfetched{:aspect => atom(), binary() => binary()},
:req_headers => [{_, _}],
:request_path => binary(),
:resp_body =>
nil
| binary()
| maybe_improper_list(
binary() | maybe_improper_list(any(), binary() | []) | byte(),
binary() | []
),
:resp_cookies => %{binary() => map()},
:resp_headers => [{_, _}],
:scheme => :http | :https,
:script_name => [binary()],
:secret_key_base => nil | binary(),
:state =>
:chunked | :file | :sent | :set | :set_chunked | :set_file | :unset | :upgraded,
:status => nil | non_neg_integer()
},
_url :: any(),
_proxy_opts :: [{:http, [{:follow_redirect, true} | {:pool, :upload}, ...]}, ...]
)
breaks the contract
(Plug.Conn.t(), url :: String.t(), [option()]) :: Plug.Conn.t()
2024-01-28 14:22:35 -05:00
Mark Felder
60d89cb404
Pleroma.Web.AdminAPI.ConfigController: dialyzer error
...
lib/pleroma/web/admin_api/controllers/config_controller.ex:162:call
The function call will not succeed.
Phoenix.Controller.render(
_conn :: %{:body_params => %{:configs => _, _ => _}, _ => _},
<<105, 110, 100, 101, 120, 46, 106, 115, 111, 110>>,
%{:configs => [any()], :need_reboot => _}
)
will never return since the success typing is:
(
%Plug.Conn{
:adapter => {atom(), _},
:assigns => %{atom() => _},
:body_params => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:cookies => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:halted => boolean(),
:host => binary(),
:method => binary(),
:owner => pid(),
:params => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:path_info => [binary()],
:path_params => %{binary() => binary() | [any()] | map()},
:port => char(),
:private => %{atom() => _},
:query_params => %Plug.Conn.Unfetched{
:aspect => atom(),
binary() => binary() | [any()] | map()
},
:query_string => binary(),
:remote_ip =>
{byte(), byte(), byte(), byte()}
| {char(), char(), char(), char(), char(), char(), char(), char()},
:req_cookies => %Plug.Conn.Unfetched{:aspect => atom(), binary() => binary()},
:req_headers => [{_, _}],
:request_path => binary(),
:resp_body =>
nil
| binary()
| maybe_improper_list(
binary() | maybe_improper_list(any(), binary() | []) | byte(),
binary() | []
),
:resp_cookies => %{binary() => map()},
:resp_headers => [{_, _}],
:scheme => :http | :https,
:script_name => [binary()],
:secret_key_base => nil | binary(),
:state =>
:chunked | :file | :sent | :set | :set_chunked | :set_file | :unset | :upgraded,
:status => nil | non_neg_integer()
},
atom() | binary(),
atom() | binary() | [{_, _}] | map()
) :: %Plug.Conn{
:adapter => {atom(), _},
:assigns => %{atom() => _},
:body_params => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:cookies => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:halted => boolean(),
:host => binary(),
:method => binary(),
:owner => pid(),
:params => %Plug.Conn.Unfetched{:aspect => atom(), binary() => _},
:path_info => [binary()],
:path_params => %{binary() => binary() | [any()] | map()},
:port => char(),
:private => %{atom() => _},
:query_params => %Plug.Conn.Unfetched{
:aspect => atom(),
binary() => binary() | [any()] | map()
},
:query_string => binary(),
:remote_ip =>
{byte(), byte(), byte(), byte()}
| {char(), char(), char(), char(), char(), char(), char(), char()},
:req_cookies => %Plug.Conn.Unfetched{:aspect => atom(), binary() => binary()},
:req_headers => [{_, _}],
:request_path => binary(),
:resp_body =>
nil
| binary()
| maybe_improper_list(
binary() | maybe_improper_list(any(), binary() | []) | byte(),
binary() | []
),
:resp_cookies => %{binary() => map()},
:resp_headers => [{_, _}],
:scheme => :http | :https,
:script_name => [binary()],
:secret_key_base => nil | binary(),
:state => :sent,
:status => nil | non_neg_integer()
}
and the contract is
(Plug.Conn.t(), binary() | atom(), Keyword.t() | map()) :: Plug.Conn.t()
2024-01-27 16:42:30 -05:00
Mark Felder
26a95e5787
Pleroma.Web.PleromaAPI.NotificationController: dialyzer errors
...
lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex:53:call
The function call will not succeed.
Phoenix.Controller.json(
_conn :: %{
:assigns => %{:user => _, _ => _},
:body_params => %{:list => _, _ => _},
_ => _
},
<<106, 111, 98, 32, 115, 116, 97, 114, 116, 101, 100>>
)
breaks the contract
(Plug.Conn.t(), term()) :: Plug.Conn.t()
2024-01-27 16:15:03 -05:00
Mark Felder
52e18a6249
Pleroma.Web.PleromaAPI.UserImportController: Dialyzer errors
...
lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex:53:call
The function call will not succeed.
Phoenix.Controller.json(
_conn :: %{
:assigns => %{:user => _, _ => _},
:body_params => %{:list => _, _ => _},
_ => _
},
<<106, 111, 98, 32, 115, 116, 97, 114, 116, 101, 100>>
)
breaks the contract
(Plug.Conn.t(), term()) :: Plug.Conn.t()
2024-01-27 15:57:21 -05:00
Mark Felder
17f4251b19
Pleroma.Web.TwitterAPI.UtilController: dialyzer fixes
...
lib/pleroma/web/twitter_api/controllers/util_controller.ex:158:call
The function call will not succeed.
Phoenix.Controller.json(_conn :: %{:body_params => %{:ap_id => _, :profile => _, _ => _}, _ => _}, %{
:error =>
<<67, 111, 117, 108, 100, 110, 39, 116, 32, 102, 105, 110, 100, 32, 117, 115, 101, 114>>
})
breaks the contract
(Plug.Conn.t(), term()) :: Plug.Conn.t()
2024-01-27 15:47:07 -05:00
Mark Felder
8b02c85810
Pleroma.Web.AdminAPI.MediaProxyCacheController: dialyzer errors
...
lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex:64:call
The function call will not succeed.
Phoenix.Controller.json(
_conn :: %{
:assigns => %{:user => _, _ => _},
:body_params => %{:urls => _, _ => _},
_ => _
},
%{}
)
breaks the contract
(Plug.Conn.t(), term()) :: Plug.Conn.t()
2024-01-27 15:41:14 -05:00
Mark Felder
5c193a34a2
Pleroma.Web.ActivityPub.SideEffects: dialyzer errors
...
lib/pleroma/web/activity_pub/side_effects.ex:544:call
The function call will not succeed.
Pleroma.Web.ActivityPub.SideEffects.delete_object(
_object :: %Pleroma.Activity{
:__meta__ => _,
:actor => _,
:bookmark => _,
:data => map(),
:id => _,
:inserted_at => _,
:local => _,
:notifications => _,
:object => _,
:pagination_id => _,
:recipients => _,
:report_notes => _,
:thread_muted? => _,
:updated_at => _,
:user_actor => _
}
)
breaks the contract
(Pleroma.Object.t()) :: :ok | {:error, Ecto.Changeset.t()}
2024-01-27 15:05:12 -05:00
Mark Felder
b6a1e7fb31
Pleroma.Web.ActivityPub.SideEffects: dialyzer errors
...
lib/pleroma/web/activity_pub/side_effects.ex:622:callback_type_mismatch
Type mismatch for @callback handle_after_transaction/1 in Pleroma.Web.ActivityPub.SideEffects.Handling behaviour.
Expected type:
map()
Actual type:
Keyword.t()
lib/pleroma/web/activity_pub/side_effects.ex:622:callback_arg_type_mismatch
The inferred type for the 1st argument is not a
supertype of the expected type for the handle_after_transaction/1 callback
in the Pleroma.Web.ActivityPub.SideEffects.Handling behaviour.
Success type:
Keyword.t()
Behaviour callback type:
map()
2024-01-27 15:02:20 -05:00
Mark Felder
5f5bd64b83
Pleroma.Web.ActivityPub.SideEffects: dialyzer errors
...
lib/pleroma/web/activity_pub/side_effects.ex:328:pattern_match
The pattern can never match the type.
Pattern:
{:actor, _}
Type:
{:error, boolean()}
lib/pleroma/web/activity_pub/side_effects.ex:328:pattern_match
The pattern can never match the type.
Pattern:
{:actor, _}
Type:
nil
2024-01-27 14:55:29 -05:00
Mark Felder
94d7e28cbe
Pleroma.Web.ActivityPub.ObjectValidator: dialyzer error
...
lib/pleroma/web/activity_pub/object_validator.ex:165:pattern_match
The pattern can never match the type.
Pattern:
{:local, _}
Type:
{:error,
%Ecto.Changeset{
:action => atom(),
:changes => %{atom() => _},
:constraints => [
%{
:constraint =>
binary()
| %Regex{
:opts => binary() | [any()],
:re_pattern => _,
:re_version => _,
:source => binary()
},
:error_message => binary(),
:error_type => atom(),
:field => atom(),
:match => :exact | :prefix | :suffix,
:type => :check | :exclusion | :foreign_key | :unique
}
],
:data => nil | map(),
:empty_values => _,
:errors => Keyword.t({binary(), Keyword.t()}),
:filters => %{atom() => _},
:params => nil | %{binary() => _},
:prepare => [(_ -> any())],
:repo => atom(),
:repo_opts => Keyword.t(),
:required => [atom()],
:types =>
nil
| %{
atom() =>
atom()
| {:array | :assoc | :embed | :in | :map | :maybe | :param, _}
| {:parameterized, atom(), _}
},
:valid? => boolean(),
:validations => Keyword.t()
}}
2024-01-27 14:29:48 -05:00
Mark Felder
5c08153fc5
Pleroma.Gun.ConnectionPool.Reclaimer: dialyzer error
...
lib/pleroma/gun/connection_pool/reclaimer.ex:12:call
The function call will not succeed.
:gen_server.start(Pleroma.Gun.ConnectionPool.Reclaimer, [], [
{:name, {:via, Registry, {Pleroma.Gun.ConnectionPool, <<_::72>>}}},
...
])
will never return since the success typing is:
(atom(), any(), [
{:debug, [:log | :statistics | :trace | {_, _}]}
| {:hibernate_after, timeout()}
| {:spawn_opt, [:link | :monitor | {_, _}]}
| {:timeout, timeout()}
]) :: :ignore | {:error, _} | {:ok, pid() | {pid(), reference()}}
and the contract is
(Module :: module(), Args :: term(), Options :: [start_opt()]) :: start_ret()
2024-01-27 14:25:16 -05:00
Mark Felder
9f357d88c2
Pleroma.Emoji: dialyzer error
...
lib/pleroma/emoji.ex:54:unknown_type
Unknown type: Emoji.t/0.
2024-01-27 14:00:17 -05:00
Mark Felder
948d5a93a0
Pleroma.Object: dialyzer error
...
lib/pleroma/object.ex:245:call
The function call will not succeed.
Pleroma.Object.cleanup_attachments(any(), %{<<_::48>> => %Pleroma.Object{:data => map(), atom() => _}})
breaks the contract
(boolean(), %{:object => map()}) :: {:ok, Oban.Job.t() | nil}
2024-01-27 13:58:50 -05:00
Mark Felder
2062e126f1
Pleroma.Web.ActivityPub.Builder: fix dialyzer error
...
lib/pleroma/web/activity_pub/builder.ex:115:pattern_match
The pattern can never match the type.
Pattern:
_emojo = %{:file => _path}
Type:
nil | binary()
2024-01-27 10:41:09 -05:00
Mark Felder
3fbe8ada93
Pleroma.ReverseProxy: dialyzer errors
...
lib/pleroma/reverse_proxy.ex:225:pattern_match
The pattern can never match the type.
Pattern:
:done
Type:
{:ok, :no_duration_limit, :no_duration_limit}
lib/pleroma/reverse_proxy.ex:226:pattern_match
The pattern can never match the type.
Pattern:
{:error, _error}
Type:
{:ok, :no_duration_limit, :no_duration_limit}
lib/pleroma/reverse_proxy.ex:391:pattern_match
The pattern can never match the type.
Pattern:
__duration = nil, _max
Type:
integer(), _
2024-01-27 10:28:49 -05:00
Mark Felder
6fcecbd48b
Formatting
2024-01-27 10:09:20 -05:00
Mark Felder
b2ab479488
Pleroma.Helpers.QtFastStart: Dialzyer error
...
lib/pleroma/helpers/qt_fast_start.ex:129:improper_list_constr
List construction (cons) will produce an improper list, because its second argument is <<_::32>>.
lib/pleroma/helpers/qt_fast_start.ex:129:improper_list_constr
List construction (cons) will produce an improper list, because its second argument is <<_::64>>.
2024-01-26 21:03:41 -05:00
Mark Felder
6e0945354d
Pleroma.ModerationLog: fix invalid type
2024-01-26 21:03:41 -05:00
Mark Felder
e834343496
Pleroma.Search.SearchBackend: dialyzer error
...
Incorrect spec. Both search backends return :ok so that is what should be the spec.
lib/pleroma/search/database_search.ex:56:callback_type_mismatch
Type mismatch for @callback remove_from_index/1 in Pleroma.Search.SearchBackend behaviour.
Expected type:
{:error, _} | {:ok, _}
Actual type:
:ok
2024-01-26 21:03:41 -05:00
Mark Felder
1b40ebfa20
Pleroma.Signature: dialyzer error
...
lib/pleroma/signature.ex:30:pattern_match
The pattern can never match the type.
Pattern:
%{<<97, 112, 95, 105, 100>> => _ap_id}
Type:
{:error, _} | {:ok, map()}
2024-01-26 21:03:41 -05:00
Mark Felder
87cf7010fc
Pleroma.Upload: dialyzer error
...
I have opted to set this to :upper as this retains the same behavior but clears up the error.
lib/pleroma/upload.ex:178:call
The function call will not succeed.
Base.encode16(binary(), [{:lower, true}])
breaks the contract
(binary(), [{:case, encode_case()}]) :: binary()
2024-01-26 21:03:23 -05:00
Mark Felder
06b8923d42
RichMedia.Parser.TTL.AwsSignedUrl: dialyzer fix
...
lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex:9:callback_type_mismatch
Type mismatch for @callback ttl/2 in Pleroma.Web.RichMedia.Parser.TTL behaviour.
Expected type:
nil | integer()
Actual type:
{:error, <<_::64, _::size(8)>>} | {:ok, integer()}
2024-01-26 17:37:32 -05:00
Mark Felder
28af5e3bd7
TwitterAPI.UtilController: fix dialyzer errors
...
lib/pleroma/web/twitter_api/controllers/util_controller.ex:300:pattern_match
The pattern can never match the type.
Pattern:
{:error, :no_such_alias}
Type:
{:not_found, nil}
lib/pleroma/web/twitter_api/controllers/util_controller.ex:304:pattern_match
The pattern can never match the type.
Pattern:
{:error, _error}
Type:
{:not_found, nil}
2024-01-26 17:22:27 -05:00
Mark Felder
5b95abaeea
Credo.Check.Readability.PredicateFunctionNames
...
This check was recently improved in Credo and it does make sense for readability.
The offending functions in Pleroma have been renamed and a couple missing the ? suffix have been fixed as well.
2024-01-26 16:59:58 -05:00
Mark Felder
18d38486a5
InetCidr.parse/2 is deprecated
2024-01-26 15:57:50 -05:00
Haelwenn (lanodan) Monnier
799891d359
Transmogrifier: Cleanup obsolete handling of "contentMap": null
2024-01-26 17:10:10 +01:00
Haelwenn (lanodan) Monnier
acef2a4a40
CommonFixes: Use Maps.filter_empty_values on fix_object_defaults
2024-01-26 16:19:25 +01:00
Haelwenn (lanodan) Monnier
0de1a7629c
Maps: Add filter_empty_values/1
2024-01-26 16:18:29 +01:00
Mark Felder
3a8594e927
MastodonAPI.Controller.StatusController: fix dialyzer error
...
lib/pleroma/web/mastodon_api/controllers/status_controller.ex:333:pattern_match
The pattern can never match the type.
Pattern:
{:ok, _activity}
Type:
{:error, _}
2024-01-22 18:37:29 -05:00
Mark Felder
115b2ad638
MRF.KeywordPolicy: fix dialyzer error
...
lib/pleroma/web/activity_pub/mrf/keyword_policy.ex:13:neg_guard_fail
Guard test:
not is_binary(_string :: binary())
can never succeed.
2024-01-22 18:37:29 -05:00
Mark Felder
0dd65246ea
MRF.HashtagPolicy: fix dialyzer error
...
lib/pleroma/web/activity_pub/mrf/hashtag_policy.ex:87:exact_eq
The test <<_::32>> == <<_::48>> can never evaluate to 'true'.
2024-01-22 18:37:19 -05:00
Mark Felder
5f71928f6b
MRF.InlineQuotePolicy: fix dialyzer error
...
lib/pleroma/web/activity_pub/mrf/inline_quote_policy.ex:60:callback_type_mismatch
Type mismatch for @callback config_description/0 in Pleroma.Web.ActivityPub.MRF.Policy behaviour.
Expected type:
%{
:description => binary(),
:key => atom(),
:label => binary(),
:related_policy => binary(),
:children => [map()]
}
Actual type:
%{
:children => [
%{
:description => <<_::808>>,
:key => :template,
:suggestions => [any(), ...],
:type => :string
},
...
],
:description => <<_::336>>,
:key => :mrf_inline_quote,
:label => <<_::184>>,
:related_policy => <<_::360>>,
:type => :group
}
2024-01-22 18:37:13 -05:00
Mark Felder
a7fa6f18dc
Pleroma.Migrators.Support.BaseMigrator: Fix dialyzer errors
...
lib/pleroma/migrators/context_objects_deletion_migrator.ex:13:exact_eq
The test :error | float() == 0 can never evaluate to 'true'.
lib/pleroma/migrators/hashtags_table_migrator.ex:13:exact_eq
The test :error | float() == 0 can never evaluate to 'true'.
2024-01-22 18:37:13 -05:00
Mark Felder
6ce7011a2e
Pleroma.Gun.ConnectionPool.WorkerSupervisor: fix dialyzer error
...
lib/pleroma/gun/connection_pool/worker_supervisor.ex:24:guard_fail
The guard clause:
when _ :: true === nil
can never succeed.
2024-01-22 18:37:13 -05:00
Mark Felder
65d49ac090
Pleroma.HTTP.AdapterHelper: fix dialyzer errors
...
lib/pleroma/http/adapter_helper.ex:18:unknown_type
Unknown type: Connection.host/0.
lib/pleroma/http/adapter_helper.ex:19:unknown_type
Unknown type: Connection.host/0.
lib/pleroma/http/adapter_helper.ex:19:unknown_type
Unknown type: Connection.proxy_type/0.
2024-01-22 18:37:13 -05:00
Mark Felder
c74c5f479a
Pleroma.Migrators.Support.BaseMigratorState: fix dialyzer error
...
lib/pleroma/migrators/support/base_migrator_state.ex:10:unknown_type
Unknown type: Pleroma.DataMigration.t/0.
2024-01-22 18:37:13 -05:00
Mark Felder
36355d3ed9
Pleroma.Web.ActivityPub.Builder: fix dialyzer error
...
lib/pleroma/web/activity_pub/builder.ex:205:unknown_type
Unknown type: Pleroma.Web.CommonAPI.ActivityDraft.t/0.
2024-01-22 18:37:13 -05:00
Mark Felder
39da451b6d
Pleroma.Web.ActivityPub.Builder: fix dialyzer errors
...
lib/pleroma/web/activity_pub/builder.ex:35:unknown_type
Unknown type: Activity.t/0.
lib/pleroma/web/activity_pub/builder.ex:40:unknown_type
Unknown type: Activity.t/0.
lib/pleroma/web/activity_pub/builder.ex:144:unknown_type
Unknown type: Activity.t/0.
________________________________________________________________________________
lib/pleroma/web/activity_pub/builder.ex:204:unknown_type
Unknown type: Pleroma.Web.CommonAPI.ActivityDraft.t/0.
2024-01-22 18:37:13 -05:00
Mark Felder
10f3a2833f
Pleroma.User.Query: fix dialyzer error
...
lib/pleroma/user/query.ex:74:unknown_type
Unknown type: Query.t/0.
2024-01-22 18:37:13 -05:00
Mark Felder
40feac086f
Pleroma.User: fix dialyzer errors
...
lib/pleroma/user.ex:1514:unknown_type
Unknown type: Pleroma.UserRelationship.t/0.
lib/pleroma/user.ex:2629:unknown_type
Unknown type: Pleroma.UserRelationship.t/0.
lib/pleroma/user.ex:2638:unknown_type
Unknown type: Pleroma.UserRelationship.t/0.
2024-01-22 18:37:13 -05:00
Mark Felder
1361856213
Pleroma.User.Backup: fix some dialyzer errors
...
lib/pleroma/user/backup.ex:207:call
The function call will not succeed.
:zip.create(
string(),
[:"\"actor.json\"", :"\"outbox.json\"", :"\"likes.json\"", :"\"bookmarks.json\""],
[{:cwd, binary()}, ...]
)
will never return since the success typing is:
(
atom() | [atom() | [any()] | char()],
[
atom()
| [atom() | [any()] | char()]
| {atom() | [atom() | [any()] | char()], binary()}
| {atom() | [atom() | [any()] | char()], binary(),
{:file_info, :undefined | non_neg_integer(),
:device | :directory | :other | :regular | :symlink | :undefined,
:none | :read | :read_write | :undefined | :write,
:undefined | non_neg_integer() | {_, _}, :undefined | non_neg_integer() | {_, _},
:undefined | non_neg_integer() | {_, _}, :undefined | non_neg_integer(),
:undefined | non_neg_integer(), :undefined | non_neg_integer(),
:undefined | non_neg_integer(), :undefined | non_neg_integer(),
:undefined | non_neg_integer(), :undefined | non_neg_integer()}}
],
[
:cooked
| :memory
| :verbose
| {:comment, string()}
| {:compress, :all | [[any()]] | {:add, [any()]} | {:del, [any()]}}
| {:cwd, string()}
| {:uncompress, :all | [[any()]] | {:add, [any()]} | {:del, [any()]}}
]
) ::
{:error, _}
| {:ok,
atom() | [atom() | [any()] | char()] | {atom() | [atom() | [any()] | char()], binary()}}
and the contract is
(name, fileList, options) :: retValue
when name: :file.name(),
fileList: [:FileSpec],
fileSpec:
:file.name() | {:file.name(), binary()} | {:file.name(), binary(), :file.file_info()},
options: [:Option],
option: create_option(),
retValue:
{:ok, FileName :: filename()}
| {:ok, {FileName :: filename(), binary()}}
| {:error, Reason :: term()}
2024-01-22 18:37:13 -05:00
Mark Felder
38ebefce9c
Announcement: fix dialyzer errors and add typespec for the changeset
...
It was possible for this to raise (no_local_return) because the data key could be missing from the params
2024-01-22 18:37:13 -05:00
Mark Felder
eb4dd50f53
Use config to control inclusion of test emoji
2024-01-22 18:37:13 -05:00
Mark Felder
6df93e61c4
Use config to determine sending to the streamer registry instead of MIX_ENV compile time function definition
2024-01-22 18:37:13 -05:00
Mark Felder
653b14e1c7
Use config to control Uploader callback timeout
2024-01-22 18:37:13 -05:00
Mark Felder
0ac010ba3f
Replace custom fifo implementation with Exile
...
This is for streaming media to ffmpeg thumbnailer. The existing implementation relies on undocumented behavior.
Erlang open_port/2 does not officially support passing a string of a file path for opening. The specs clearly state you are to provide one of the following for open_port/2:
{spawn, Command :: string() | binary()} |
{spawn_driver, Command :: string() | binary()} |
{spawn_executable, FileName :: file:name_all()} |
{fd, In :: integer() >= 0, Out :: integer() >= 0}
Our method technically works but is strongly discouraged as it can block the scheduler and dialyzer throws errors as it recognizes we're breaking the contract and some of the functions we wrote may never return.
This is indirectly covered by the Erlang FAQ section "9.12 Why can't I open devices (e.g. a serial port) like normal files?"
https://www.erlang.org/faq/problems#idm1127
2024-01-22 10:13:17 -05:00
Mark Felder
dcd0102800
Credo
2024-01-20 19:39:13 -05:00
Mark Felder
2330100371
Use config to control starting all HTTP pools in test env
2024-01-20 19:10:57 -05:00
Mark Felder
17877f612e
Use config to control streamer registry
2024-01-20 18:51:20 -05:00
Mark Felder
4bb57d4f25
Use config to control background migrators
2024-01-20 18:47:25 -05:00
Mark Felder
c7eda0b24a
Use config to control loading of custom modules
2024-01-20 18:43:53 -05:00
Mark Felder
029aaf3d74
Use config to control max_restarts
2024-01-20 18:41:04 -05:00
Mark Felder
65ac513776
Dialyzer: fix pattern match coverage
2024-01-20 17:58:47 -05:00
Mark Felder
88042109a3
Dialyzer: fix pattern match coverage
2024-01-20 17:56:32 -05:00
Mark Felder
7f649a7a19
Dialyzer: remove function that will never match
2024-01-20 17:50:21 -05:00
Mark Felder
2fbb67add7
Fix typo in typespec
2024-01-20 17:48:12 -05:00
Mark Felder
ea26add540
Fix incorrect type definition for maybe_direct_follow/2
2024-01-20 17:43:34 -05:00
Mark Felder
38d01ff511
Fix invalid types
2024-01-20 17:37:27 -05:00
Mark Felder
83eece7764
Fix invalid type
...
lib/pleroma/web/auth/authenticator.ex:8:unknown_type
Unknown type: User.t/0.
2024-01-20 17:33:37 -05:00
Mark Felder
4f07116108
Fix invalid type
...
lib/pleroma/web/activity_pub/publisher.ex:31:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:32:19 -05:00
Mark Felder
ec5ae83da6
Fix invalid types
...
lib/pleroma/web/activity_pub/mrf/policy.ex:6:unknown_type
Unknown type: Map.t/0.
lib/pleroma/web/activity_pub/mrf/policy.ex:7:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:31:07 -05:00
Mark Felder
2061a1d917
Fix invalid type
...
lib/pleroma/uploaders/uploader.ex:43:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:29:27 -05:00
Mark Felder
551e90cd52
Fix invalid type
...
lib/pleroma/upload.ex:89:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:28:54 -05:00
Mark Felder
f050a75b92
Fix invalid types due to typos
...
lib/pleroma/web/feed/feed_view.ex:135:unknown_type
Unknown type: NativeDateTime.t/0.
lib/pleroma/web/feed/feed_view.ex:148:unknown_type
Unknown type: NativeDateTime.t/0.
2024-01-20 17:22:40 -05:00
Mark Felder
e5120a2703
Fix invalid type due to typos
...
lib/pleroma/web/o_auth/authorization.ex:61:unknown_type
Unknown type: Authtorizatiton.t/0.
2024-01-20 17:21:12 -05:00
Mark Felder
65dfaa6cb9
Fix invalid type due to late aliasing
...
lib/pleroma/web/o_auth/token/query.ex:12:unknown_type
Unknown type: Token.t/0.
2024-01-20 17:18:16 -05:00
Mark Felder
09ae0ab24a
Fix invalid type
...
lib/pleroma/web/rich_media/parser.ex:105:unknown_type
Unknown type: Integer.t/0.
2024-01-20 17:16:10 -05:00
Mark Felder
467a65af90
Fix invalid types
...
lib/pleroma/web/rich_media/parser/ttl.ex:6:unknown_type
Unknown type: Integer.t/0.
lib/pleroma/web/rich_media/parser/ttl.ex:6:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:14:56 -05:00
Mark Felder
e3f52ee13f
Fix invalid types
...
lib/pleroma/web/streamer.ex:37:unknown_type
Unknown type: Map.t/0.
________________________________________________________________________________
lib/pleroma/web/streamer.ex:63:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:14:10 -05:00
Mark Felder
593c7e26d4
Fix invalid type
...
lib/pleroma/migrators/hashtags_table_migrator.ex:103:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:13:27 -05:00
Mark Felder
559aeb5dd0
Add missing type Pleroma.Emoji.t()
...
lib/pleroma/emoji/loader.ex:23:unknown_type
Unknown type: Pleroma.Emoji.t/0.
2024-01-20 17:08:18 -05:00
Mark Felder
8ed506a370
Fix invalid type
...
lib/pleroma/docs/json.ex:21:unknown_type
Unknown type: Map.t/0.
2024-01-20 17:05:55 -05:00
Mark Felder
0b7d214211
Fix invalid typespec references to Ecto.Changeset.t()
2024-01-20 16:47:50 -05:00
Mark Felder
dc8045d766
FlakeId.Ecto.CompatType.t() does not exist
...
This type is not exported and usable. FlakeId intends to return the type as :uuid, so we replace it in the typespecs with Ecto.UUID.t() which assuages the dialyzer errors
e.g.,
lib/pleroma/bookmark.ex:25:unknown_type
Unknown type: FlakeId.Ecto.CompatType.t/0.
2024-01-20 16:36:01 -05:00
Mark Felder
b16a01ba9d
Pleroma.ApplicationRequirements: fix dialyzer errors
...
lib/pleroma/application_requirements.ex:19:unknown_type
Unknown type: Pleroma.ApplicationRequirements.VerifyError.t/0.
lib/pleroma/application_requirements.ex:199:pattern_match_cov
The pattern
variable_result
can never match, because previous clauses completely cover the type
:ok.
2024-01-20 16:10:11 -05:00
Mark Felder
df1d390a49
Pleroma.Activity.Queries: fix dialyzer error
...
lib/pleroma/activity/queries.ex:12:unknown_type
Unknown type: Activity.t/0.
2024-01-20 16:01:32 -05:00
Mark Felder
2a28377be0
Fix mix task pleroma.instance dialyzer error
...
lib/mix/tasks/pleroma/instance.ex:356:pattern_match_cov
The pattern
:variable_
can never match, because previous clauses completely cover the type
%{
:anonymize => boolean(),
:dedupe => boolean(),
:read_description => boolean(),
:strip_location => boolean()
}.
2024-01-20 15:55:33 -05:00
Haelwenn
3c65a2899d
Merge branch 'handle_object_fetch_failures' into 'develop'
...
Handle object fetch failures gracefully
See merge request pleroma/pleroma!4015
2024-01-19 18:43:00 +00:00
marcin mikołajczak
b39403a48f
Update API docs for my changes
...
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2024-01-17 17:13:21 +01:00
Haelwenn
4c20713ecd
Merge branch 'otp26' into 'develop'
...
OTP26 support
See merge request pleroma/pleroma!4025
2024-01-17 09:51:56 +00:00
Haelwenn
9b39bc6aa8
Merge branch 'mrf-regex-error' into 'develop'
...
MRF: Log sensible regex error for subdomain_match
See merge request pleroma/pleroma!4026
2024-01-15 08:24:54 +00:00
Haelwenn
c29430b018
Merge branch 'mrf-steal-emoji-extname' into 'develop'
...
MRF.StealEmojiPolicy: Properly add fallback extension to filenames missing one
See merge request pleroma/pleroma!4029
2024-01-15 08:24:24 +00:00
Mark Felder
12c052551b
Allow the Remote Fetcher to attempt fetching an unreachable instance
2024-01-14 14:05:43 -05:00
tusooa
d3a4f5b7d7
Merge branch 'nil-contentMap' into 'develop'
...
Support objects with a nil contentMap (firefish)
Closes #3231
See merge request pleroma/pleroma!4030
2024-01-13 22:23:21 +00:00
feld
9cc46c5538
Merge branch 'qtfaststart-fix' into 'develop'
...
Fix MediaProxy crashing on some videos
See merge request pleroma/pleroma!4024
2024-01-13 04:35:32 +00:00
Mint
3c30eadd5e
Fix duplicate inbox deliveries
2024-01-11 20:48:35 +03:00
Haelwenn (lanodan) Monnier
7651198508
Support objects with a nil contentMap (firefish)
...
Closes: https://git.pleroma.social/pleroma/pleroma/-/issues/3231
2024-01-11 07:16:45 +01:00
Haelwenn (lanodan) Monnier
4ca65c6182
MRF.StealEmojiPolicy: Properly add fallback extension to filenames missing one
2024-01-07 19:37:35 +01:00
Ekaterina Vaartis
29158681f9
Fetch count before downloading the pack and use that as page size
2024-01-07 17:07:50 +03:00
Ekaterina Vaartis
69e4ebbb8e
Make remote emoji packs API use specifically the V1 URL
...
Akkoma does not understand it without V1, and it works either way with
normal pleroma, so no reason to not do this
2024-01-07 15:30:52 +03:00
Alexander Tumin
32d8e0d496
Fix authentication check on account rendering when bio is defined
2024-01-04 16:57:48 +03:00
Haelwenn (lanodan) Monnier
6af49270a9
MRF: Log sensible error for subdomains_regex
2024-01-02 15:37:41 +01:00
Mark Felder
1b5168ae02
Phoenix detects the webfinger requests with content-type application/jrd+json as "jrd" now
2023-12-29 23:18:45 -05:00
Haelwenn
f74f5e0a56
Merge branch 'publisher' into 'develop'
...
Discard some failed publisher jobs
See merge request pleroma/pleroma!4022
2023-12-29 23:18:34 +00:00
Mark Felder
50edef5bc1
Change QTFastStart to recover gracefully if it encounters an error during bitstring matching
...
This fixes issues with internal errors when trying to serve the video
2023-12-29 14:12:44 -05:00
Mark Felder
833117f573
Fix tests
...
Need to handle the edge case of no valid HTTP response which has no status code
2023-12-29 13:04:06 -05:00
feld
8ac4458630
Merge branch 'finch-redirects' into 'develop'
...
Fix following redirects with Finch
See merge request pleroma/pleroma!4023
2023-12-29 17:00:58 +00:00
lain
a6fc97ffec
Merge branch 'bugfix/chat-attachment-empty-array' into 'develop'
...
ChatMessage: Tolerate attachment field set to an empty array
Closes #3224
See merge request pleroma/pleroma!4020
2023-12-29 08:12:27 +00:00
Mark Felder
4afe211e50
Return the full tuple from Tesla
2023-12-29 01:04:05 -05:00
Mark Felder
2950397d47
Fix following redirects with Finch
2023-12-29 00:50:50 -05:00
Mark Felder
141702538b
Discard on a 404 as well
2023-12-29 00:31:05 -05:00
Mark Felder
7ebca7ecfa
Activity publishing failures will prevent the job from retrying if the publishing request returns a 403 or 410
2023-12-29 00:25:33 -05:00
Mark Felder
77949d4590
Make the Publisher log error less noisy
2023-12-29 00:25:11 -05:00
Mark Felder
f17f92105b
Oban jobs should be discarded on permanent errors
2023-12-28 23:52:59 -05:00
Haelwenn (lanodan) Monnier
39dc6c65ef
ChatMessage: Tolerate attachment field set to an empty array
...
Closes: https://git.pleroma.social/pleroma/pleroma/-/issues/3224
2023-12-29 05:32:47 +01:00
Mark Felder
aa070c7daf
Handle 401s as I have observed it in the wild
2023-12-28 23:09:33 -05:00
Mark Felder
efd50759d5
Log errors when publishing activities
2023-12-28 22:59:27 -05:00
Mark Felder
08ba9a15b2
Fix the Federator perform/2 Oban callback
2023-12-28 22:51:47 -05:00
Mark Felder
3acfdb6f8a
Retire the Pleroma.Web.Federator.Publisher module
2023-12-28 14:53:09 -05:00
Mark Felder
1d816222e0
Remove support for multiple federation publisher modules
...
This also unravels some needless indirection.
2023-12-28 11:55:19 -05:00
Haelwenn
ddc321a094
Merge branch 'tusooa/3205-group-actor' into 'develop'
...
Implement group actors
See merge request pleroma/pleroma!3969
2023-12-28 10:46:53 +00:00
Mark Felder
ad0a5deb67
Prevent requeuing Remote Fetcher jobs that exceed thread depth
2023-12-27 22:28:41 -05:00
Mark Felder
a2708f7fe3
Leverage existing atoms as return errors for the object fetcher
2023-12-27 22:01:59 -05:00
Mark Felder
287f2c9719
Formatting
2023-12-27 21:55:07 -05:00
Mark Felder
882267e3ec
Remove duplicate log messages from Transmogrifier
...
Object fetch errors are logged in the fetcher module
2023-12-27 21:39:29 -05:00
Mark Felder
becb070603
Conslidate log messages for object fetcher failures and leverage Logger.metadata
2023-12-27 21:22:51 -05:00
Mark Felder
6c9929b809
Set Logger level to error
2023-12-27 20:18:14 -05:00
marcin mikołajczak
017e35fbf1
Fix some more typos
...
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2023-12-28 00:17:04 +01:00
marcin mikołajczak
f53197c82a
Fix operation name typo
...
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2023-12-27 23:52:46 +01:00
Mark Felder
d4c77103d1
Fix detection of user follower collection being private
...
We were overzealous with matching on a raw error from the object fetch that should have never been relied on like this. If we can't fetch successfully we should assume that the collection is private.
Building a more expressive and universal error struct to match on may be something to consider.
2023-12-27 15:27:39 -05:00
Mark Felder
1a337dcc18
These functions in Pleroma.Instances should be defdelegates to Pleroma.Instances.Instance
2023-12-27 12:44:16 -05:00
tusooa
b273025fd7
Add pleroma:group_actors to instance features
2023-12-27 12:28:11 -05:00
tusooa
e34a975dd9
Do not boost if group is blocking poster
2023-12-27 12:28:10 -05:00
tusooa
5459bbc1ef
Allow group actors to boost posts
2023-12-27 12:28:04 -05:00
tusooa
7a58ddfa48
Allow local user to have group actor type
...
https://git.pleroma.social/pleroma/pleroma/-/issues/3205
2023-12-27 12:27:37 -05:00
Mark Felder
73c4c6d7de
Revert "Mark instances as unreachable when returning a 403 from an object fetch"
...
This reverts commit d472bafec1
.
2023-12-26 17:20:36 -05:00
Mark Felder
9c0040124a
Skip remote fetch jobs for unreachable instances
2023-12-26 16:28:05 -05:00
Mark Felder
5f6966cd9f
Remove mistaken duplicate fetch
2023-12-26 16:23:41 -05:00
Mark Felder
c6b38441f1
Cancel remote fetch jobs for deleted objects
2023-12-26 16:05:44 -05:00
Mark Felder
67dd81e825
Consolidate the HTTP status code checking into the private get_object/1
2023-12-26 16:05:28 -05:00
Mark Felder
d472bafec1
Mark instances as unreachable when returning a 403 from an object fetch
...
This is a definite sign the instance is blocked and they are enforcing authorized_fetch
2023-12-26 15:54:21 -05:00
Mark Felder
603e9f6a92
Fix Transmogrifier tests
...
These tests relied on the removed Fetcher.fetch_object_from_id!/2 function injecting the error tuple into a log message with the exact words "Object containment failed."
We will keep this behavior by generating a similar log message, but perhaps this should do a better job of matching on the error tuple returned by Transmogrifier.handle_incoming/1
2023-12-26 14:22:06 -05:00
Mark Felder
ea0ec5fbcf
Remove Fetcher.fetch_object_from_id!/2
...
It was only being called once and can be replaced with a case statement.
2023-12-26 14:20:35 -05:00
marcin mikołajczak
28e5e65676
Merge remote-tracking branch 'origin/develop' into webfinger-fix
...
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2023-12-22 13:29:56 +01:00
lain
5f1d707367
Merge branch 'bad_inbox_request' into 'develop'
...
Return a 400 from a bad delivery attempt to the inbox
Closes #2884
See merge request pleroma/pleroma!4009
2023-12-22 11:04:25 +00:00
Haelwenn
bd50892c25
Merge branch 'instance-v2' into 'develop'
...
Implement api/v2/instance route
See merge request pleroma/pleroma!3939
2023-12-21 21:14:46 +00:00
marcin mikołajczak
4f2fb8dc5e
Use consistent terminology
...
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2023-12-21 00:13:13 +01:00
marcin mikołajczak
39d3df86c8
Use consistent terminology
...
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2023-12-21 00:10:30 +01:00
Mark Felder
9896b64f54
Elixir 1.15: Chase the Logger.warn deprecation
2023-12-20 20:16:26 +00:00
Mark Felder
f43f33e307
Return a 400 from a bad delivery attempt to the inbox
...
This stops the backend from generating 500 errors from these events.
2023-12-19 13:56:17 -05:00
Mark Felder
e2066994b1
Fix Web Push notification delivery
...
Finch does not automatically append header content-type: octet-stream for binary payloads.
2023-12-19 10:56:55 -05:00
Lain Soykaf
c1423ddca3
ActivityPub.Publisher: Filter inboxes
2023-12-17 11:15:58 +04:00
Lain Soykaf
c212fc1dcf
User: Ignore non-local users when setting 'last active at'
2023-12-16 20:32:13 +04:00
Lain Soykaf
3fbc80eb58
B ActivityPub.Publisher: Prioritize direct mentions
2023-12-16 20:26:08 +04:00
Yonle
cb1b52d980
ap userview: add outbox field.
...
Signed-off-by: Yonle <yonle@lecturify.net>
2023-12-15 09:55:06 +04:00
lain
29d202e1df
Merge branch 'add-opengraph-rich-media-proxy' into 'develop'
...
Add media proxy to opengraph rich media cards
See merge request pleroma/pleroma!3997
2023-12-13 06:23:16 +00:00
Lain Soykaf
cca6c20eb6
Revert "EmailTest: use config mock"
...
This reverts commit dca41cc4a3
.
2023-12-12 19:35:19 +04:00
Alexander Tumin
e7af2addd8
Add media proxy to opengraph rich media cards
2023-12-12 18:32:02 +03:00
Lain Soykaf
dca41cc4a3
EmailTest: use config mock
2023-12-12 15:25:52 +04:00