/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mozilla.mozstumbler.client.leaderboard; import android.text.TextUtils; import org.mozilla.mozstumbler.client.ClientPrefs; import org.mozilla.mozstumbler.service.Prefs; import org.mozilla.mozstumbler.service.core.http.FxAService; import org.mozilla.mozstumbler.service.core.http.IHttpUtil; import org.mozilla.mozstumbler.service.core.http.IResponse; import org.mozilla.mozstumbler.service.core.http.ISubmitService; import org.mozilla.mozstumbler.service.stumblerthread.datahandling.base.JSONRowsStorageManager; import org.mozilla.mozstumbler.service.uploadthread.AsyncUploadParam; import org.mozilla.mozstumbler.service.uploadthread.AsyncUploader; import org.mozilla.mozstumbler.service.utils.Zipper; import org.mozilla.mozstumbler.svclocator.ServiceLocator; import org.mozilla.mozstumbler.svclocator.services.log.ILogger; import org.mozilla.mozstumbler.svclocator.services.log.LoggerUtil; import java.util.HashMap; import java.util.Map; class LBUploadTask extends AsyncUploader { private static ILogger Log = (ILogger) ServiceLocator.getInstance().getService(ILogger.class); private String LOG_TAG = LoggerUtil.makeLogTag(LBUploadTask.class); class LBSubmitter implements ISubmitService { private ClientPrefs getPrefs() { return ClientPrefs.getInstanceWithoutContext(); } final IHttpUtil httpDelegate = (IHttpUtil) ServiceLocator.getInstance().getService(IHttpUtil.class); @Override public IResponse submit(byte[] data, Map<String, String> headers, boolean precompressed) { final String submit_url = getPrefs().getLbSubmitUrl(); if (TextUtils.isEmpty(submit_url)) { return null; } Log.d(LOG_TAG, "Sending leaderboard data to: [" + submit_url + "]"); String sData = ""; if (precompressed) { sData = Zipper.unzipData(data); } else { sData = new String(data); } Log.d(LOG_TAG, "Sending leaderboard data: " + sData); IResponse resp = httpDelegate.post(submit_url, data, headers, precompressed); Log.d(LOG_TAG, "Got response: " + (resp != null ? resp.httpStatusCode() : "null")); return resp; } } public LBUploadTask(JSONRowsStorageManager storageManager) { super(storageManager); } @Override protected ISubmitService getSubmitter() { return new LBSubmitter(); } @Override protected HashMap<String, String> getHeaders(AsyncUploadParam param) { HashMap<String,String> headers = new HashMap<String, String>(); String bearerToken = Prefs.getInstanceWithoutContext().getBearerToken(); headers.put("Content-Encoding", "gzip"); if (!TextUtils.isEmpty(bearerToken)) { headers.put(FxAService.BEARER_HEADER, "Bearer " + bearerToken); } return headers; } @Override protected boolean checkCanUpload(AsyncUploadParam param) { return true; } }