Module sharkiq.fallback_auth

Classes

class FallbackAuth
Expand source code
class FallbackAuth:
  def GenerateFallbackAuthURL(europe: bool):
    state = FallbackAuth.generateRandomString(43)
    verification = FallbackAuth.generateRandomString(43)
    challenge = FallbackAuth.generateChallengeB64Hash(verification)
    base_url = EU_AUTH0_URL if europe == True else AUTH0_URL

    url = (base_url + "/authorize?os=ios&response_type=code&mobile_shark_app_version=rn1.01"
    + '&client_id=' + FallbackAuth.urlEncode(AUTH0_CLIENT_ID)
    + '&state=' + FallbackAuth.urlEncode(state)
    + '&scope=' + FallbackAuth.urlEncode(AUTH0_SCOPES)
    + '&redirect_uri=' + FallbackAuth.urlEncode(AUTH0_REDIRECT_URI)
    + '&code_challenge=' + FallbackAuth.urlEncode(challenge)
    + '&screen_hint=signin'
    + '&code_challenge_method=S256'
    + '&ui_locales=en')
    
    return url

  def generateRandomString(length):
    characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    result = ''
    for _ in range(length):
      randomIndex = math.floor(random.random() * len(characters))
      result += characters[randomIndex]

    return result

  def generateChallengeB64Hash(verification_code):
    verification_encoded = codecs.encode(verification_code, 'utf-8')
    verification_sha256 = hashlib.sha256(verification_encoded)
    challenge_b64 = base64.b64encode(verification_sha256.digest()).decode()
    challenge_b64_clean = challenge_b64.replace("+", "-").replace("/", "_").replace("=", "").replace("$", "")

    return challenge_b64_clean

  def urlEncode(s):
    return urllib.parse.quote_plus(s)

Methods

def GenerateFallbackAuthURL(europe: bool)
Expand source code
def GenerateFallbackAuthURL(europe: bool):
  state = FallbackAuth.generateRandomString(43)
  verification = FallbackAuth.generateRandomString(43)
  challenge = FallbackAuth.generateChallengeB64Hash(verification)
  base_url = EU_AUTH0_URL if europe == True else AUTH0_URL

  url = (base_url + "/authorize?os=ios&response_type=code&mobile_shark_app_version=rn1.01"
  + '&client_id=' + FallbackAuth.urlEncode(AUTH0_CLIENT_ID)
  + '&state=' + FallbackAuth.urlEncode(state)
  + '&scope=' + FallbackAuth.urlEncode(AUTH0_SCOPES)
  + '&redirect_uri=' + FallbackAuth.urlEncode(AUTH0_REDIRECT_URI)
  + '&code_challenge=' + FallbackAuth.urlEncode(challenge)
  + '&screen_hint=signin'
  + '&code_challenge_method=S256'
  + '&ui_locales=en')
  
  return url
def generateChallengeB64Hash(verification_code)
Expand source code
def generateChallengeB64Hash(verification_code):
  verification_encoded = codecs.encode(verification_code, 'utf-8')
  verification_sha256 = hashlib.sha256(verification_encoded)
  challenge_b64 = base64.b64encode(verification_sha256.digest()).decode()
  challenge_b64_clean = challenge_b64.replace("+", "-").replace("/", "_").replace("=", "").replace("$", "")

  return challenge_b64_clean
def generateRandomString(length)
Expand source code
def generateRandomString(length):
  characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  result = ''
  for _ in range(length):
    randomIndex = math.floor(random.random() * len(characters))
    result += characters[randomIndex]

  return result
def urlEncode(s)
Expand source code
def urlEncode(s):
  return urllib.parse.quote_plus(s)