content: /*
   * Copyright (C) 2015 Naman Dwivedi
   *
   * Licensed under the GNU General Public License v3
   *
   * This is free software: you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by
   * the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   * See the GNU General Public License for more details.
   */
  
  package com.wm.remusic.lastfmapi;
  
  import android.content.Context;
  import android.util.Log;
  
  import com.wm.remusic.lastfmapi.callbacks.ArtistInfoListener;
  import com.wm.remusic.lastfmapi.models.AlbumInfo;
  import com.wm.remusic.lastfmapi.models.AlbumQuery;
  import com.wm.remusic.lastfmapi.models.ArtistInfo;
  import com.wm.remusic.lastfmapi.models.ArtistQuery;
  
  import retrofit.Callback;
  import retrofit.RetrofitError;
  import retrofit.client.Response;
  
  public class LastFmClient {
  
      public static final String BASE_API_URL = "http://ws.audioscrobbler.com/2.0";
      private static final Object sLock = new Object();
      private static LastFmClient sInstance;
      private LastFmRestService mRestService;
  
      public static LastFmClient getInstance(Context context) {
          synchronized (sLock) {
              if (sInstance == null) {
                  sInstance = new LastFmClient();
                  sInstance.mRestService = RestServiceFactory.create(context, BASE_API_URL, LastFmRestService.class);
              }
              return sInstance;
          }
      }
  
      public void getAlbumInfo(AlbumQuery albumQuery) {
          mRestService.getAlbumInfo(albumQuery.mArtist, albumQuery.mALbum, new Callback<AlbumInfo>() {
              @Override
              public void success(AlbumInfo albumInfo, Response response) {
  
              }
  
              @Override
              public void failure(RetrofitError error) {
  
                  error.printStackTrace();
              }
          });
      }
  
      public void getArtistInfo(ArtistQuery artistQuery, final ArtistInfoListener listener) {
          mRestService.getArtistInfo(artistQuery.mArtist, new Callback<ArtistInfo>() {
              @Override
              public void success(ArtistInfo artistInfo, Response response) {
                  listener.artistInfoSucess(artistInfo.mArtist);
              }
  
              @Override
              public void failure(RetrofitError error) {
                  listener.artistInfoFailed();
                  Log.d("lol", "failed");
                  error.printStackTrace();
              }
          });
      }
  }
  