Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: geecko86/SpotifyApi
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1
Choose a base ref
...
head repository: geecko86/SpotifyApi
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
  • 7 commits
  • 9 files changed
  • 1 contributor

Commits on May 24, 2016

  1. Update gradle stuff

    geecko86 committed May 24, 2016
    Copy the full SHA
    43eb8f3 View commit details
  2. Update dependencies

    geecko86 committed May 24, 2016
    Copy the full SHA
    e193f68 View commit details

Commits on Feb 11, 2017

  1. Upgrade to okHttp3

    geecko86 committed Feb 11, 2017
    Copy the full SHA
    50546fc View commit details
  2. Fix baseURL bug

    geecko86 committed Feb 11, 2017
    Copy the full SHA
    c3e4e3c View commit details
  3. Fix okhttp3 upgrade

    geecko86 committed Feb 11, 2017
    Copy the full SHA
    22483ac View commit details
  4. Fix okhttp3 upgrade again

    geecko86 committed Feb 11, 2017
    Copy the full SHA
    1e4341c View commit details

Commits on Feb 18, 2017

  1. Copy the full SHA
    bc8e9ee View commit details
16 changes: 10 additions & 6 deletions SpotifyApi/build.gradle
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven' // ADD THIS

group='com.github.geecko86'

android {
compileSdkVersion 22
compileSdkVersion 25
buildToolsVersion "22.0.1"

defaultConfig {
minSdkVersion 14
targetSdkVersion 22
targetSdkVersion 25
}
lintOptions {
abortOnError false
}
}

dependencies {
compile 'com.android.support:support-annotations:21.0.0'
compile 'com.squareup.retrofit:retrofit:1.8.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.1.0'
compile 'com.squareup.okhttp:okhttp:2.1.0'
compile 'com.android.support:support-annotations:25.1.1'
compile 'com.google.code.gson:gson:2.8.0'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
}

apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
66 changes: 42 additions & 24 deletions SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyApi.java
Original file line number Diff line number Diff line change
@@ -12,11 +12,13 @@
import com.drivemode.spotify.auth.AccessTokenStore;
import com.drivemode.spotify.rest.RestAdapterFactory;

import retrofit.Callback;
import retrofit.RequestInterceptor;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;
import java.io.IOException;

import okhttp3.Interceptor;
import okhttp3.Request;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Retrofit;

/**
* Singleton object to deal with Spotify Web API and user authorization.
@@ -79,7 +81,7 @@ public static synchronized void destroy() {
*/
public synchronized SpotifyService getApiService() {
if (mSpotifyService == null) {
RestAdapter adapter = mAdapterFactory.provideWebApiAdapter(new WebApiAuthenticator());
Retrofit adapter = mAdapterFactory.provideWebApiAdapter(new WebApiAuthenticator());
mSpotifyService = adapter.create(SpotifyService.class);
}
return mSpotifyService;
@@ -90,7 +92,7 @@ public synchronized SpotifyService getApiService() {
*/
public synchronized SpotifyAuthenticateService getAuthService() {
if (mAuthenticateService == null) {
RestAdapter adapter = mAdapterFactory.provideAuthenticateApiAdapter();
Retrofit adapter = mAdapterFactory.provideAuthenticateApiAdapter();
mAuthenticateService = adapter.create(SpotifyAuthenticateService.class);
}
return mAuthenticateService;
@@ -144,16 +146,20 @@ public void onCallback(Uri data, final AuthenticationListener listener) {
return;
Log.v(TAG, data.toString());
String code = data.getQueryParameter("code");
getAuthService().getAccessToken("authorization_code", code, mConfig.getRedirectUri(), mConfig.getClientId(), mConfig.getClientSecret(), new Callback<AccessToken>() {
Call<AccessToken> call = getAuthService().getAccessToken("authorization_code", code, mConfig.getRedirectUri(), mConfig.getClientId(), mConfig.getClientSecret());
call.enqueue(new Callback<AccessToken>() {
@Override
public void success(AccessToken accessToken, Response response) {
Log.v(TAG, "success retrieving access token: " + accessToken.toString());
mTokenStore.store(accessToken);
listener.onReady();
public void onResponse(Call<AccessToken> call, retrofit2.Response<AccessToken> response) {
if (response.isSuccessful()) {
Log.v(TAG, "success retrieving access token: " + response.body());
mTokenStore.store(response.body());
listener.onReady();
} else
Log.v(TAG, "failed");
}

@Override
public void failure(RetrofitError error) {
public void onFailure(Call<AccessToken> call, Throwable t) {
listener.onError();
}
});
@@ -169,16 +175,17 @@ public void refreshTokenIfNeeded(final AuthenticationListener listener) {
return;
}
AccessToken token = mTokenStore.read();
getAuthService().refreshAccessToken("refresh_token", token.refreshToken, mConfig.getClientId(), mConfig.getClientSecret(), new Callback<AccessToken>() {
Call<AccessToken> call = getAuthService().refreshAccessToken("refresh_token", token.refreshToken, mConfig.getClientId(), mConfig.getClientSecret());
call.enqueue(new Callback<AccessToken>() {
@Override
public void success(AccessToken accessToken, Response response) {
Log.v(TAG, "success refreshing access token: " + accessToken.toString());
mTokenStore.update(accessToken);
public void onResponse(Call<AccessToken> call, retrofit2.Response<AccessToken> response) {
Log.v(TAG, "success refreshing access token: " + response.body());
mTokenStore.update(response.body());
listener.onReady();
}

@Override
public void failure(RetrofitError error) {
public void onFailure(Call<AccessToken> call, Throwable t) {
listener.onError();
}
});
@@ -193,8 +200,12 @@ public void blockingRefreshTokenIfNeeded() {
return;
}
AccessToken token = mTokenStore.read();
AccessToken newToken = getAuthService().refreshAccessToken("refresh_token", token.refreshToken, mConfig.getClientId(), mConfig.getClientSecret());
mTokenStore.update(newToken);
Call<AccessToken> newToken = getAuthService().refreshAccessToken("refresh_token", token.refreshToken, mConfig.getClientId(), mConfig.getClientSecret());
try {
mTokenStore.update(newToken.execute().body());
} catch (IOException e) {
e.printStackTrace();
}
}

public ClientConfig getConfig() {
@@ -209,18 +220,25 @@ public AccessTokenStore getTokenStore() {
* The request interceptor that will add the header with OAuth
* token to every request made with the wrapper.
*/
private class WebApiAuthenticator implements RequestInterceptor {
private class WebApiAuthenticator implements Interceptor {
@Override
public void intercept(RequestFacade request) {
public okhttp3.Response intercept(Chain chain) {
AccessToken token = mTokenStore.read();
if (token != null) {
request.addHeader("Authorization", token.tokenType + " " + token.accessToken);
try {
Request request = chain.request().newBuilder()
.addHeader("Authorization", token.tokenType + " " + token.accessToken).build();
return chain.proceed(request);
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}

public interface AuthenticationListener {
public void onReady();
public void onError();
}
}
}
Original file line number Diff line number Diff line change
@@ -2,10 +2,10 @@

import com.drivemode.spotify.auth.AccessToken;

import retrofit.Callback;
import retrofit.http.Field;
import retrofit.http.FormUrlEncoded;
import retrofit.http.POST;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

/**
* @author KeishinYokomaku
@@ -15,17 +15,9 @@ public interface SpotifyAuthenticateService {

@FormUrlEncoded
@POST("/api/token")
public AccessToken getAccessToken(@Field("grant_type") String grantType, @Field("code") String code, @Field("redirect_uri") String redirectUri, @Field("client_id") String clientId, @Field("client_secret") String clientSecret);
public Call<AccessToken> getAccessToken(@Field("grant_type") String grantType, @Field("code") String code, @Field("redirect_uri") String redirectUri, @Field("client_id") String clientId, @Field("client_secret") String clientSecret);

@FormUrlEncoded
@POST("/api/token")
public void getAccessToken(@Field("grant_type") String grantType, @Field("code") String code, @Field("redirect_uri") String redirectUri, @Field("client_id") String clientId, @Field("client_secret") String clientSecret, Callback<AccessToken> callback);

@FormUrlEncoded
@POST("/api/token")
public AccessToken refreshAccessToken(@Field("grant_type") String grantType, @Field("refresh_token") String refreshToken, @Field("client_id") String clientId, @Field("client_secret") String clientSecret);

@FormUrlEncoded
@POST("/api/token")
public void refreshAccessToken(@Field("grant_type") String grantType, @Field("refresh_token") String refreshToken, @Field("client_id") String clientId, @Field("client_secret") String clientSecret, Callback<AccessToken> callback);
public Call<AccessToken> refreshAccessToken(@Field("grant_type") String grantType, @Field("refresh_token") String refreshToken, @Field("client_id") String clientId, @Field("client_secret") String clientSecret);
}
Loading