Skip to content

Commit

Permalink
Introduce provider registry
Browse files Browse the repository at this point in the history
  • Loading branch information
Paweł Świątkowski committed Sep 23, 2020
1 parent 3882109 commit 78ab475
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 9 deletions.
10 changes: 1 addition & 9 deletions src/multi_auth/engine.cr
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
class MultiAuth::Engine
def initialize(provider : String, redirect_uri : String)
provider_class = case provider
when "google" then Provider::Google
when "github" then Provider::Github
when "facebook" then Provider::Facebook
when "vk" then Provider::Vk
when "twitter" then Provider::Twitter
else
raise "Provider #{provider} not implemented"
end
provider_class = MultiAuth::Providers.get(provider)

key, secret = MultiAuth.configuration[provider]
@provider = provider_class.new(redirect_uri, key, secret)
Expand Down
11 changes: 11 additions & 0 deletions src/multi_auth/providers.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class MultiAuth::Providers
@@registry = {} of String => MultiAuth::Provider.class

def self.register(name : String, klass : MultiAuth::Provider.class)
@@registry[name] = klass
end

def self.get(name : String)
@@registry[name]
end
end
2 changes: 2 additions & 0 deletions src/multi_auth/providers/facebook.cr
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,5 @@ class MultiAuth::Provider::Facebook < MultiAuth::Provider
)
end
end

MultiAuth::Providers.register("facebook", MultiAuth::Provider::Facebook)
2 changes: 2 additions & 0 deletions src/multi_auth/providers/github.cr
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,5 @@ class MultiAuth::Provider::Github < MultiAuth::Provider
)
end
end

MultiAuth::Providers.register("github", MultiAuth::Provider::Github)
2 changes: 2 additions & 0 deletions src/multi_auth/providers/google.cr
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,5 @@ class MultiAuth::Provider::Google < MultiAuth::Provider
user
end
end

MultiAuth::Providers.register("google", MultiAuth::Provider::Google)
2 changes: 2 additions & 0 deletions src/multi_auth/providers/twitter.cr
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,5 @@ class MultiAuth::Provider::Twitter < MultiAuth::Provider
@consumer ||= OAuth::Consumer.new("api.twitter.com", key, secret)
end
end

MultiAuth::Providers.register("twitter", MultiAuth::Provider::Twitter)
2 changes: 2 additions & 0 deletions src/multi_auth/providers/vk.cr
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,5 @@ class MultiAuth::Provider::Vk < MultiAuth::Provider
)
end
end

MultiAuth::Providers.register("vk", MultiAuth::Provider::Vk)

0 comments on commit 78ab475

Please sign in to comment.