All Downloads are FREE. Search and download functionalities are using the official Maven repository.

skinny.oauth2.client.OAuth2Provider.scala Maven / Gradle / Ivy

There is a newer version: 3.1.0
Show newest version
package skinny.oauth2.client

import org.apache.oltu.oauth2.common.OAuthProviderType

/**
 * OAuth 2.0 Provider.
 */
case class OAuth2Provider(
  providerName: String,
  authorizationEndpoint: String,
  accessTokenEndpoint: String,
  isJsonResponse: Boolean = true
)

object OAuth2Provider {

  def apply(providerType: OAuthProviderType): OAuth2Provider = {
    providerType match {
      case OAuthProviderType.FACEBOOK | OAuthProviderType.GITHUB =>
        new OAuth2Provider(
          providerType.getProviderName,
          providerType.getAuthzEndpoint,
          providerType.getTokenEndpoint,
          false
        )
      case _ =>
        new OAuth2Provider(
          providerType.getProviderName,
          providerType.getAuthzEndpoint,
          providerType.getTokenEndpoint
        )
    }
  }

  // ---------------------------------------
  // Supported OAuth2 Providers

  // Apache Oltu built-in providers
  val Facebook = OAuth2Provider(OAuthProviderType.FACEBOOK)
  val Foursquare = OAuth2Provider(OAuthProviderType.FOURSQUARE)
  val Google = OAuth2Provider(OAuthProviderType.GOOGLE)
  val GitHub = OAuth2Provider(OAuthProviderType.GITHUB)
  val Instagram = OAuth2Provider(OAuthProviderType.INSTAGRAM)
  val LinkedIn = OAuth2Provider(OAuthProviderType.LINKEDIN)
  val Microsoft = OAuth2Provider(OAuthProviderType.MICROSOFT)
  val PayPal = OAuth2Provider(OAuthProviderType.PAYPAL)
  val Reddit = OAuth2Provider(OAuthProviderType.REDDIT)
  val Salesforce = OAuth2Provider(OAuthProviderType.SALESFORCE)
  val Yammer = OAuth2Provider(OAuthProviderType.YAMMER)

  // Basecamp
  // https://github.com/basecamp/api/blob/master/sections/authentication.md
  val Basecamp = OAuth2Provider(
    "basecamp",
    "https://launchpad.37signals.com/authorization/new",
    "https://launchpad.37signals.com/authorization/token"
  )

  // Dropbox
  // https://www.dropbox.com/developers/core/docs#oa2-authorize
  val Dropbox = OAuth2Provider(
    "dropbox",
    "https://www.dropbox.com/1/oauth2/authorize",
    "https://www.dropbox.com/1/oauth2/token"
  )

  // mixi
  // http://developer.mixi.co.jp/en/connect/mixi_graph_api/api_auth/
  val Mixi = OAuth2Provider(
    "mixi",
    "https://mixi.jp/connect_authorize.pl",
    "https://secure.mixi-platform.com/2/token"
  )

  // YConnect (Yahoo! JAPAN)
  // http://developer.yahoo.co.jp/yconnect/ (Japanese)
  val YConnect = OAuth2Provider(
    "yconnect",
    "https://auth.login.yahoo.co.jp/yconnect/v1/authorization",
    "https://auth.login.yahoo.co.jp/yconnect/v1/token"
  )

  // Typetalk
  // https://www.typetalk.in/
  val Typetalk = OAuth2Provider(
    "typetalk",
    "https://typetalk.in/oauth2/authorize",
    "https://typetalk.in/oauth2/access_token"
  )

  // Project Management Tool "Backlog"
  // http://backlogtool.com/
  val Backlog = OAuth2Provider(
    "backlog",
    "https://{space}.backlogtool.com/OAuth2AccessRequest.action",
    "https://{space}.backlogtool.com/api/v2/oauth2/token"
  )
  // プロジェクト管理ツール"Backlog"
  // http://www.backlog.jp/
  val BacklogJP = OAuth2Provider(
    "backlog_jp",
    "https://{space}.backlog.jp/OAuth2AccessRequest.action",
    "https://{space}.backlog.jp/api/v2/oauth2/token"
  )

  // *** IMPORTANT ***
  // Waiting for your pull request here!
  /*
  val YourFavoriteProvider = OAuthProvider(
    "providerName",
    "the authorization endpoint",
    "the access token endpoint"
  )
   */

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy