Android Open Source - gameup-android-sdk Request Factory






From Project

Back to project page gameup-android-sdk.

License

The source code is released under:

Apache License

If you think the Android project gameup-android-sdk 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 2014-2015 GameUp/* ww  w  .j a va  2 s.  c  o m*/
 *
 * 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 io.gameup.android.http;

import android.net.Uri;

import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;

import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;

import io.gameup.android.GameUp;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import okio.ByteString;

/**
 * Utility class that provides convenient pre-configured connection creation.
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class RequestFactory {

    /** User Agent string to be used in API calls. */
    private final static String REQUEST_USER_AGENT =
            GameUp.USER_AGENT_TEMPLATE.replace(
                    GameUp._WEBVIEW_USER_AGENT_,
                    System.getProperty("http.agent"));

    /** Standard media type to use with all requests. */
    private static final MediaType APPLICATION_JSON_MEDIA_TYPE =
            MediaType.parse("application/json");

    /**
     * Prepare a HEAD request to the given path.
     *
     * @param uri The URL string to connect to.
     * @param apiKey The API key to use for authentication.
     * @param token The gamer token to use for authentication.
     * @return A Request ready to be sent via a OkHttpClient.
     * @throws UnsupportedEncodingException
     * @throws MalformedURLException
     */
    public static Request head(final @NonNull Uri uri,
                               final @NonNull String apiKey,
                               final @NonNull String token)
            throws UnsupportedEncodingException, MalformedURLException {
        return create(uri, apiKey, token)
                .head()
                .build();
    }

    /**
     * Prepare a GET request to the given path.
     *
     * @param uri The URL string to connect to.
     * @param apiKey The API key to use for authentication.
     * @return A Request ready to be sent via a OkHttpClient.
     * @throws UnsupportedEncodingException
     * @throws MalformedURLException
     */
    public static Request get(final @NonNull Uri uri,
                              final @NonNull String apiKey)
            throws UnsupportedEncodingException, MalformedURLException {
        return get(uri, apiKey, "");
    }

    /**
     * Prepare a GET request to the given path.
     *
     * @param uri The URL string to connect to.
     * @param apiKey The API key to use for authentication.
     * @param token The gamer token to use for authentication.
     * @return A Request ready to be sent via a OkHttpClient.
     * @throws UnsupportedEncodingException
     * @throws MalformedURLException
     */
    public static Request get(final @NonNull Uri uri,
                              final @NonNull String apiKey,
                              final @NonNull String token)
            throws UnsupportedEncodingException, MalformedURLException {
        return create(uri, apiKey, token)
                .get()
                .build();
    }

    /**
     * Prepare a PUT request to the given path with the given data.
     *
     * @param uri The URL string to connect to.
     * @param apiKey The API key to use for authentication.
     * @param token The gamer token to use for authentication.
     * @return A Request ready to be sent via a OkHttpClient.
     * @throws UnsupportedEncodingException
     * @throws MalformedURLException
     */
    public static Request put(final @NonNull Uri uri,
                              final @NonNull String apiKey,
                              final @NonNull String token,
                              final @NonNull String body)
            throws UnsupportedEncodingException, MalformedURLException {
        return create(uri, apiKey, token)
                .put(RequestBody.create(APPLICATION_JSON_MEDIA_TYPE,
                        body.getBytes("UTF-8")))
                .build();
    }

    /**
     * Prepare a POST request to the given path with the given data.
     *
     * @param uri The URL string to connect to.
     * @param apiKey The API key to use for authentication.
     * @param token The gamer token to use for authentication.
     * @return A Request ready to be sent via a OkHttpClient.
     * @throws UnsupportedEncodingException
     * @throws MalformedURLException
     */
    public static Request post(final @NonNull Uri uri,
                               final @NonNull String apiKey,
                               final @NonNull String token,
                               final @NonNull String body)
            throws UnsupportedEncodingException, MalformedURLException {
        return create(uri, apiKey, token)
                .post(RequestBody.create(APPLICATION_JSON_MEDIA_TYPE,
                        body.getBytes("UTF-8")))
                .build();
    }

    /**
     * Prepare a DELETE request to the given path.
     *
     * @param uri The URL string to connect to.
     * @param apiKey The API key to use for authentication.
     * @param token The gamer token to use for authentication.
     * @return A Request ready to be sent via a OkHttpClient.
     * @throws UnsupportedEncodingException
     * @throws MalformedURLException
     */
    public static Request delete(final @NonNull Uri uri,
                                 final @NonNull String apiKey,
                                 final @NonNull String token)
            throws UnsupportedEncodingException, MalformedURLException {
        return create(uri, apiKey, token)
                .delete()
                .build();
    }

    /**
     * Return a builder configured with all common headers and options.
     *
     * @param uri The URL string to connect to.
     * @param apiKey The API key to use for authentication.
     * @param token The gamer token to use for authentication.
     * @return A Request.Builder with only the method (and optionally request
     *         body) to be set before use.
     * @throws UnsupportedEncodingException
     * @throws MalformedURLException
     */
    private static Request.Builder create(final @NonNull Uri uri,
                                          final @NonNull String apiKey,
                                          final @NonNull String token)
            throws UnsupportedEncodingException, MalformedURLException {

        return new Request.Builder()
                .url(new URL(uri.toString()))
                .header("User-Agent", REQUEST_USER_AGENT)
                .header("Content-Type", "application/json")
                .header("Accept", "application/json")
                .header("Authorization",
                        "Basic " + ByteString.of(
                                (apiKey + ":" + token).getBytes("ISO-8859-1"))
                                .base64());
    }

}




Java Source Code List

io.gameup.android.GameUpLoginListener.java
io.gameup.android.GameUpSession.java
io.gameup.android.GameUp.java
io.gameup.android.Utils.java
io.gameup.android.entity.AchievementList.java
io.gameup.android.entity.Achievement.java
io.gameup.android.entity.Game.java
io.gameup.android.entity.Gamer.java
io.gameup.android.entity.LeaderboardAndRank.java
io.gameup.android.entity.Leaderboard.java
io.gameup.android.entity.Rank.java
io.gameup.android.entity.Server.java
io.gameup.android.http.OkHttpClientFactory.java
io.gameup.android.http.RequestFactory.java
io.gameup.android.json.AchievementProgress.java
io.gameup.android.json.GsonFactory.java
io.gameup.android.json.LeaderboardSubmission.java
io.gameup.android.json.StorageGetWrapper.java