@@ -318,6 +318,28 @@ defmodule Algora.Accounts.User do
318
318
|> unique_constraint ( :handle )
319
319
end
320
320
321
+ def get_domain ( % { "type" => type } ) when type != "Organization" , do: nil
322
+
323
+ def get_domain ( % { "email" => email } ) when is_binary ( email ) do
324
+ domain = email |> String . split ( "@" ) |> List . last ( )
325
+
326
+ if not Algora.Crawler . blacklisted? ( domain ) , do: domain
327
+ end
328
+
329
+ def get_domain ( % { "blog" => url } ) when is_binary ( url ) do
330
+ domain =
331
+ with url when not is_nil ( url ) <- Algora.Util . normalize_url ( url ) ,
332
+ % URI { host: host } when is_binary ( host ) and host != "" <- URI . parse ( url ) do
333
+ host
334
+ else
335
+ _ -> nil
336
+ end
337
+
338
+ if not Algora.Crawler . blacklisted? ( domain ) , do: domain
339
+ end
340
+
341
+ def get_domain ( _meta ) , do: nil
342
+
321
343
def github_changeset ( meta ) do
322
344
params = % {
323
345
provider_id: to_string ( meta [ "id" ] ) ,
@@ -328,7 +350,8 @@ defmodule Algora.Accounts.User do
328
350
location: meta [ "location" ] ,
329
351
avatar_url: meta [ "avatar_url" ] ,
330
352
website_url: Algora.Util . normalize_url ( meta [ "blog" ] ) ,
331
- github_url: meta [ "html_url" ]
353
+ github_url: meta [ "html_url" ] ,
354
+ domain: get_domain ( meta )
332
355
}
333
356
334
357
% User { provider: "github" , provider_meta: meta }
@@ -343,7 +366,8 @@ defmodule Algora.Accounts.User do
343
366
:location ,
344
367
:avatar_url ,
345
368
:website_url ,
346
- :github_url
369
+ :github_url ,
370
+ :domain
347
371
]
348
372
)
349
373
|> generate_id ( )
0 commit comments