- def make_user(author_doc) do
- author = string_from_xpath("/author[1]/uri", author_doc)
- name = string_from_xpath("/author[1]/name", author_doc)
- preferredUsername = string_from_xpath("/author[1]/poco:preferredUsername", author_doc)
- displayName = string_from_xpath("/author[1]/poco:displayName", author_doc)
- avatar = make_avatar_object(author_doc)
-
- data = %{
- local: false,
- name: preferredUsername || name,
- nickname: displayName || name,
- ap_id: author,
- info: %{
- "ostatus_uri" => author,
- "host" => URI.parse(author).host,
- "system" => "ostatus"
- },
- avatar: avatar
- }
-
- Repo.insert(Ecto.Changeset.change(%User{}, data))
+ 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