001package com.gigya.android.sdk.network.adapter;
002
003import android.content.Context;
004
005import com.gigya.android.sdk.api.GigyaApiRequest;
006import com.gigya.android.sdk.api.IApiRequestFactory;
007
008public class RestAdapter implements IRestAdapter {
009
010    public enum HttpMethod {
011
012        GET(0),
013        POST(1);
014
015        private final int method;
016
017        HttpMethod(int method) {
018            this.method = method;
019        }
020
021        public int intValue() {
022            return method;
023        }
024
025        public static HttpMethod fromInt(int method) {
026            if (method == 1) {
027                return POST;
028            }
029            return GET;
030        }
031    }
032
033    public static final int GET = HttpMethod.GET.intValue();
034    public static final int POST = HttpMethod.POST.intValue();
035
036    private NetworkProvider _networkProvider;
037
038    public RestAdapter(Context context, IApiRequestFactory requestFactory) {
039        if (VolleyNetworkProvider.isAvailable()) {
040            _networkProvider = new VolleyNetworkProvider(requestFactory, context);
041        } else {
042            _networkProvider = new HttpNetworkProvider(requestFactory);
043        }
044    }
045
046    @Override
047    public void send(GigyaApiRequest apiRequest, boolean blocking, IRestAdapterCallback requestCallbacks) {
048        if (blocking) {
049            sendBlocking(apiRequest, requestCallbacks);
050            return;
051        }
052        _networkProvider.addToQueue(apiRequest, requestCallbacks);
053    }
054
055    @Override
056    public void sendBlocking(GigyaApiRequest apiRequest, IRestAdapterCallback requestCallbacks) {
057        _networkProvider.sendBlocking(apiRequest, requestCallbacks);
058    }
059
060    @Override
061    public void block() {
062        _networkProvider.block();
063    }
064
065    @Override
066    public void release() {
067        _networkProvider.release();
068    }
069
070    @Override
071    public void cancel(String tag) {
072        _networkProvider.cancel(tag);
073    }
074
075    @Override
076    public String getProviderType() {
077        try {
078            return _networkProvider.getClass().getSimpleName();
079        } catch (Exception ex) {
080            ex.printStackTrace();
081        }
082        return null;
083    }
084}