add extra info to update request [fixes FP-156]
diff --git a/src/com/fairphone/updater/FairphoneUpdater.java b/src/com/fairphone/updater/FairphoneUpdater.java
index 5d8fd85..57bad44 100644
--- a/src/com/fairphone/updater/FairphoneUpdater.java
+++ b/src/com/fairphone/updater/FairphoneUpdater.java
@@ -283,7 +283,7 @@
         Fragment fragment = getTopFragment();
         if (fragment != null && fragment instanceof DownloadAndRestartFragment && !getCurrentUpdaterState().equals(UpdaterState.NORMAL))
         {
-            ((DownloadAndRestartFragment) fragment).abortUpdateProccess();
+            ((DownloadAndRestartFragment) fragment).abortUpdateProcess();
         }
         else if (fragment != null && fragment instanceof MainFragment)
         {
diff --git a/src/com/fairphone/updater/UpdaterService.java b/src/com/fairphone/updater/UpdaterService.java
index 1520a61..8ac3769 100644
--- a/src/com/fairphone/updater/UpdaterService.java
+++ b/src/com/fairphone/updater/UpdaterService.java
@@ -18,6 +18,10 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+
 import android.app.DownloadManager;
 import android.app.DownloadManager.Request;
 import android.app.Notification;
@@ -44,6 +48,7 @@
 import android.support.v4.app.NotificationCompat;
 import android.util.Log;
 import android.widget.Toast;
+
 import java.util.concurrent.TimeoutException;
 
 import com.fairphone.updater.data.Version;
@@ -56,6 +61,7 @@
 import com.stericson.RootTools.execution.CommandCapture;
 import com.stericson.RootTools.execution.Shell;
 
+
 public class UpdaterService extends Service
 {
 
@@ -291,8 +297,15 @@
 
         if (currentVersion != null)
         {
-            sb.append("&");
-            sb.append("os=" + currentVersion.getAndroidVersion());
+            try {
+                final String defaultCharset = Charset.defaultCharset().displayName();
+                sb.append("&os=" + URLEncoder.encode(currentVersion.getAndroidVersion(), defaultCharset));
+                sb.append("&b_n=" + URLEncoder.encode(currentVersion.getBuildNumber(), defaultCharset));
+                sb.append("&ota_v_n=" + URLEncoder.encode(String.valueOf(currentVersion.getNumber()), defaultCharset));
+                sb.append("&d=" + URLEncoder.encode(currentVersion.getReleaseDate(), defaultCharset));
+            } catch (UnsupportedEncodingException e) {
+                Log.e(TAG, "Failed to add extra info on update request: "+e.getLocalizedMessage());
+            }
         }
     }
 
diff --git a/src/com/fairphone/updater/data/Version.java b/src/com/fairphone/updater/data/Version.java
index 18a9379..74caf93 100644
--- a/src/com/fairphone/updater/data/Version.java
+++ b/src/com/fairphone/updater/data/Version.java
@@ -18,6 +18,7 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 
 import android.content.Context;
diff --git a/src/com/fairphone/updater/data/VersionParserHelper.java b/src/com/fairphone/updater/data/VersionParserHelper.java
index c721c06..171c26b 100644
--- a/src/com/fairphone/updater/data/VersionParserHelper.java
+++ b/src/com/fairphone/updater/data/VersionParserHelper.java
@@ -46,6 +46,7 @@
     private static final String CURRENT_VERSION_BUILD_NUMBER = "fairphone.ota.build_number";
     private static final String CURRENT_ANDROID_VERSION = "fairphone.ota.android_version";
     private static final String CURRENT_VERSION_IMAGE_TYPE = "fairphone.ota.image_type";
+    private static final String CURRENT_VERSION_BUILD_DATE = "ro.build.date";
 
     public static String getNameFromVersion(Version version)
     {
@@ -68,6 +69,7 @@
         version.setBuildNumber(getSystemData(context, CURRENT_VERSION_BUILD_NUMBER));
         version.setAndroidVersion(getSystemData(context, CURRENT_ANDROID_VERSION));
         version.setImageType(getSystemData(context, CURRENT_VERSION_IMAGE_TYPE));
+        version.setReleaseDate(getSystemData(context, CURRENT_VERSION_BUILD_DATE));
 
         Version versionData = UpdaterData.getInstance().getVersion(version.getImageType(), version.getNumber());
         version.setThumbnailLink(versionData != null ? versionData.getThumbnailLink() : "");
diff --git a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
index e6c776b..913924b 100644
--- a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
+++ b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
@@ -1,3 +1,4 @@
+
 package com.fairphone.updater.fragments;
 
 import java.io.File;
@@ -121,7 +122,7 @@
             @Override
             public void onClick(View v)
             {
-                abortUpdateProccess();
+                abortUpdateProcess();
             }
         });
     }
@@ -223,7 +224,7 @@
                             {
                                 downloading = false;
                                 Toast.makeText(mainActivity, getResources().getString(R.string.no_space_available_sd_card_message), Toast.LENGTH_LONG).show();
-                                abortUpdateProccess();
+                                abortUpdateProcess();
                             }
                             else
                             {
@@ -332,7 +333,7 @@
                 {
                     if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false))
                     {
-                        abortUpdateProccess();
+                        abortUpdateProcess();
                     }
                 }
             };
@@ -436,13 +437,13 @@
                         {
                             Toast.makeText(mainActivity, resources.getString(R.string.error_downloading), Toast.LENGTH_LONG).show();
                         }
-                        abortUpdateProccess();
+                        abortUpdateProcess();
                         break;
                 }
             }
             else
             {
-                abortUpdateProccess();
+                abortUpdateProcess();
             }
 
             if (cursor != null)
@@ -487,7 +488,7 @@
         fileDir.delete();
 
         // else if the perfect case does not happen, reset the download
-        abortUpdateProccess();
+        abortUpdateProcess();
     }
 
     // ************************************************************************************
@@ -506,7 +507,7 @@
 
             updateDir.delete();
 
-            abortUpdateProccess();
+            abortUpdateProcess();
 
             return;
         }
@@ -519,7 +520,7 @@
             // invalid download Id
             if (mLatestUpdateDownloadId == 0)
             {
-                abortUpdateProccess();
+                abortUpdateProcess();
                 return;
             }
         }
@@ -609,7 +610,7 @@
         }
         else
         {
-            abortUpdateProccess();
+            abortUpdateProcess();
         }
     }
 
@@ -627,7 +628,7 @@
                 Log.d(TAG, "No space on cache. Defaulting to Sdcard");
                 Toast.makeText(mainActivity, getResources().getString(R.string.no_space_available_cache_message), Toast.LENGTH_LONG).show();
 
-                abortUpdateProccess();
+                abortUpdateProcess();
             }
         }
     }
@@ -700,7 +701,7 @@
             }
             else
             {
-                abortUpdateProccess();
+                abortUpdateProcess();
             }
 
             return 1;
@@ -739,7 +740,7 @@
         return Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder) + VersionParserHelper.getNameFromVersion(version);
     }
 
-    public void abortUpdateProccess()
+    public void abortUpdateProcess()
     {
         removeLastUpdateDownload();