package com.sweetzpot.stravazpot.authenticaton.api;
import android.content.Context;
import android.content.Intent;
import com.sweetzpot.stravazpot.authenticaton.ui.StravaLoginActivity;
public class StravaLogin {
private static final String STRAVA_LOGIN_URL = "https://www.strava.com/oauth/authorize?response_type=code";
private Context context;
private int clientID;
private String redirectURI;
private ApprovalPrompt approvalPrompt;
private AccessScope accessScope;
public static StravaLogin withContext(Context context) {
return new StravaLogin(context);
}
public StravaLogin(Context context) {
this.context = context;
}
public StravaLogin withClientID(int clientID) {
this.clientID = clientID;
return this;
}
public StravaLogin withRedirectURI(String redirectURI) {
this.redirectURI = redirectURI;
return this;
}
public StravaLogin withApprovalPrompt(ApprovalPrompt approvalPrompt) {
this.approvalPrompt = approvalPrompt;
return this;
}
public StravaLogin withAccessScope(AccessScope accessScope) {
this.accessScope = accessScope;
return this;
}
public Intent makeIntent() {
Intent intent = new Intent(context, StravaLoginActivity.class);
intent.putExtra(StravaLoginActivity.EXTRA_LOGIN_URL, makeLoginURL());
intent.putExtra(StravaLoginActivity.EXTRA_REDIRECT_URL, redirectURI);
return intent;
}
private String makeLoginURL() {
StringBuilder loginURLBuilder = new StringBuilder();
loginURLBuilder.append(STRAVA_LOGIN_URL);
loginURLBuilder.append(clientIDParameter());
loginURLBuilder.append(redirectURIParameter());
loginURLBuilder.append(approvalPromptParameter());
loginURLBuilder.append(accessScopeParameter());
return loginURLBuilder.toString();
}
private String clientIDParameter() {
return "&client_id=" + clientID;
}
private String redirectURIParameter() {
if(redirectURI != null) {
return "&redirect_uri=" + redirectURI;
} else {
return "";
}
}
private String approvalPromptParameter() {
if(approvalPrompt != null) {
return "&approval_prompt=" + approvalPrompt.toString();
} else {
return "";
}
}
private String accessScopeParameter() {
if(accessScope != null) {
return "&scope=" + accessScope.toString();
} else {
return "";
}
}
}