Android Open Source - muckebox-android Api Helper






From Project

Back to project page muckebox-android.

License

The source code is released under:

Apache License

If you think the Android project muckebox-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*   
 * Copyright 2013 Karsten Patzwaldt/*w w  w.j  av a 2s  . c om*/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.muckebox.android.net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.auth.AuthenticationException;
import org.apache.http.client.methods.HttpGet;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.muckebox.android.utils.Preferences;

import android.annotation.SuppressLint;
import android.net.Uri;
import android.util.Log;

public class ApiHelper {
  private static final String LOG_TAG = "ApiHelper";
  
  public static String callApi(String query, String id, String[] keys, String[] values)
      throws IOException, JSONException, AuthenticationException {
    String str_url = getApiUrl(query, id, keys, values);
    
    Log.i(LOG_TAG, "Connecting to " + str_url);
    
        MuckeboxHttpClient httpClient = new MuckeboxHttpClient();
        HttpGet httpGet = null;
       
        try {
            httpGet = new HttpGet(str_url);
            
            HttpResponse httpResponse = httpClient.execute(httpGet);
            
            return getResponseAsString(httpResponse);
    } finally {
        if (httpGet != null)
            httpGet.abort();
        
        if (httpClient != null)
            httpClient.destroy();
    }
  }
  
    public static JSONArray callApiForArray(String query, String id, String[] keys, String[] values)
        throws AuthenticationException, JSONException, IOException {
        return new JSONArray(callApi(query, id, keys, values));
    }
  
  public static JSONArray callApiForArray(String query, String id)
      throws IOException, JSONException, AuthenticationException
  {
    return callApiForArray(query, id, null, null);
  }
  
  public static JSONArray callApiForArray(String query)
      throws IOException, JSONException, AuthenticationException
  {
    return callApiForArray(query, null, null, null);
  }
  
  public static JSONObject callApiForObject(String query)
      throws AuthenticationException, JSONException, IOException {
      return new JSONObject(callApi(query, null, null, null));
  }
  
  @SuppressLint("DefaultLocale")
  public static String getApiUrl(String query, String extra,
      String[] keys, String[] values) throws IOException {
      String serverAddress = Preferences.getServerAddress();
      
      if (serverAddress == null || serverAddress.length() == 0)
          throw new IOException("Empty server");
      
    Uri.Builder builder = Uri.parse(
        String.format("http%s://%s:%d",
            Preferences.getSSLEnabled() ? "s" : "",
            Preferences.getServerAddress(),
          Preferences.getServerPort())).buildUpon();
    
    builder.path(String.format("/api/%s", query));
    
    if (extra != null)
      builder.appendPath(extra);
    
    if ((keys != null) && (values != null) && (keys.length > 0))
    {
      if (keys.length != values.length)
        throw new IOException();
      
      for (int i = 0; i < keys.length; ++i)
      {
        builder.appendQueryParameter(keys[i], values[i]);
      }
    }
    
    return builder.build().toString();
  }
  
  public static String getResponseAsString(HttpResponse response) throws IOException, AuthenticationException {
        StatusLine statusLine = response.getStatusLine();
        
        Log.d(LOG_TAG, "HTTP Response " + statusLine.getStatusCode() +
            " " + statusLine.getReasonPhrase());
        
        switch (statusLine.getStatusCode()) {
        case 401:
            throw new AuthenticationException(statusLine.getReasonPhrase());
        case 200:
            break;
        default:
            throw new IOException();
        }
        
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(
                response.getEntity().getContent(), "UTF-8"));
        StringBuilder str = new StringBuilder();
        char[] charBuf = new char[1024];
        
        int bytes_read;
        
        while ((bytes_read = reader.read(charBuf)) != -1)
          str.append(charBuf, 0, bytes_read);
        
        return str.toString();
  }
}




Java Source Code List

org.muckebox.android.Muckebox.java
org.muckebox.android.audio.PlayerListener.java
org.muckebox.android.audio.PlayerService.java
org.muckebox.android.audio.PlayerWrapper.java
org.muckebox.android.db.DownloadEntryCursor.java
org.muckebox.android.db.MuckeboxContract.java
org.muckebox.android.db.MuckeboxDbHelper.java
org.muckebox.android.db.MuckeboxProvider.java
org.muckebox.android.db.PlaylistHelper.java
org.muckebox.android.net.ApiHelper.java
org.muckebox.android.net.DownloadCatchupRunnable.java
org.muckebox.android.net.DownloadListener.java
org.muckebox.android.net.DownloadRunnable.java
org.muckebox.android.net.DownloadServer.java
org.muckebox.android.net.DownloadService.java
org.muckebox.android.net.MuckeboxHttpClient.java
org.muckebox.android.net.PreannounceTask.java
org.muckebox.android.net.RefreshAlbumsTask.java
org.muckebox.android.net.RefreshArtistsAlbumsTask.java
org.muckebox.android.net.RefreshArtistsTask.java
org.muckebox.android.net.RefreshHelper.java
org.muckebox.android.net.RefreshTask.java
org.muckebox.android.net.RefreshTracksTask.java
org.muckebox.android.ui.activity.MuckeboxActivity.java
org.muckebox.android.ui.activity.WizardActivity.java
org.muckebox.android.ui.fragment.AlbumListFragment.java
org.muckebox.android.ui.fragment.ArtistListFragment.java
org.muckebox.android.ui.fragment.DownloadListFragment.java
org.muckebox.android.ui.fragment.DrawerFragment.java
org.muckebox.android.ui.fragment.PlayerFragment.java
org.muckebox.android.ui.fragment.SettingsFragment.java
org.muckebox.android.ui.fragment.TrackListFragment.java
org.muckebox.android.ui.utils.ExpandableCursorAdapter.java
org.muckebox.android.ui.utils.HeightEvaluator.java
org.muckebox.android.ui.utils.ImageButtonHelper.java
org.muckebox.android.ui.utils.NavigationListener.java
org.muckebox.android.ui.utils.ScrollYAnimator.java
org.muckebox.android.ui.utils.TimeFormatter.java
org.muckebox.android.ui.widgets.ImageViewRotater.java
org.muckebox.android.ui.widgets.LiveSearchView.java
org.muckebox.android.ui.widgets.RefreshableListFragment.java
org.muckebox.android.ui.widgets.SearchableListFragment.java
org.muckebox.android.utils.BufferUtils.java
org.muckebox.android.utils.CacheCleaner.java
org.muckebox.android.utils.Preferences.java
org.muckebox.android.utils.RemoteControlReceiver.java