Skip to content

Commit 33cf7b3

Browse files
committedNov 4, 2017
Add syncing process for GitHub repos
1 parent a0dcb68 commit 33cf7b3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+2652
-149
lines changed
 

‎config/dev.exs

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ config :code_corps, CodeCorpsWeb.Endpoint,
2626
]
2727

2828
# Do not include metadata nor timestamps in development logs
29-
config :logger, :console, format: "[$level] $message\n"
29+
config :logger,
30+
:console, format: "[$level] $message\n"
3031

3132
# Set a higher stacktrace during development. Avoid configuring such
3233
# in production as building large stacktraces may be expensive.

‎lib/code_corps/accounts/accounts.ex

+41-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ defmodule CodeCorps.Accounts do
1111
Comment,
1212
GitHub.Adapters,
1313
GithubAppInstallation,
14+
GithubUser,
1415
Task,
1516
User,
1617
Repo
@@ -39,6 +40,45 @@ defmodule CodeCorps.Accounts do
3940
|> Repo.insert
4041
end
4142

43+
@doc ~S"""
44+
Creates a user record using attributes from a GitHub payload.
45+
"""
46+
@spec create_from_github_user(GithubUser.t) :: {:ok, User.t} | {:error, Changeset.t}
47+
def create_from_github_user(%GithubUser{} = github_user) do
48+
with {:ok, user} <- do_create_from_github_user(github_user) do
49+
user |> upload_github_photo_async
50+
{:ok, user}
51+
else
52+
error -> error
53+
end
54+
end
55+
56+
@spec do_create_from_github_user(GithubUser.t) :: {:ok, User.t} | {:error, Changeset.t}
57+
defp do_create_from_github_user(%GithubUser{} = github_user) do
58+
%User{}
59+
|> Changesets.create_from_github_changeset(github_user |> Adapters.User.to_user_attrs())
60+
|> Changeset.put_assoc(:github_user, github_user)
61+
|> Repo.insert
62+
end
63+
64+
@spec update_with_github_user(User.t, GithubUser.t) :: {:ok, User.t} | {:error, Changeset.t}
65+
def update_with_github_user(%User{} = user, %GithubUser{} = github_user) do
66+
with {:ok, user} <- do_update_with_github_user(user, github_user) do
67+
user |> upload_github_photo_async
68+
{:ok, user}
69+
else
70+
error -> error
71+
end
72+
end
73+
74+
@spec do_update_with_github_user(Usert.t, GithubUser.t) :: {:ok, User.t} | {:error, Changeset.t}
75+
defp do_update_with_github_user(%User{} = user, %GithubUser{} = github_user) do
76+
user
77+
|> Changesets.update_with_github_user_changeset(github_user |> Adapters.User.to_user_attrs())
78+
|> Changeset.put_assoc(:github_user, github_user)
79+
|> Repo.update
80+
end
81+
4282
@doc ~S"""
4383
Updates a user record using attributes from a GitHub payload along with the
4484
access token.
@@ -47,7 +87,7 @@ defmodule CodeCorps.Accounts do
4787
def update_from_github_oauth(%User{} = user, %{} = params, access_token) do
4888
params =
4989
params
50-
|> Adapters.User.from_github_user()
90+
|> Adapters.User.to_user()
5191
|> Map.put(:github_auth_token, access_token)
5292

5393
changeset = user |> Changesets.update_from_github_oauth_changeset(params)

0 commit comments

Comments
 (0)
Please sign in to comment.