Prevent parsing floats as Infinity and -Infinity (#332)

* Prevent parsing floats as Infinity and -Infinity

* Improve error logging
diff --git a/provider/consumer.py b/provider/consumer.py
index d4863ce..f5088aa 100644
--- a/provider/consumer.py
+++ b/provider/consumer.py
@@ -485,12 +485,12 @@
 
         if self.encodeValueAsJSON:
             try:
-                parsed = json.loads(value, parse_constant=self.__errorOnJSONConstant)
+                parsed = json.loads(value, parse_constant=self.__errorOnJSONConstant, parse_float=self.__parseFloat)
                 logging.debug('[{}] Successfully encoded a message as JSON.'.format(self.trigger))
                 return parsed
-            except ValueError:
+            except ValueError as e:
                 # no big deal, just return the original value
-                logging.warn('[{}] I was asked to encode a message as JSON, but I failed.'.format(self.trigger))
+                logging.warn('[{}] I was asked to encode a message as JSON, but I failed with "{}".'.format(self.trigger, e))
                 value = "\"{}\"".format(value)
                 pass
         elif self.encodeValueAsBase64:
@@ -525,4 +525,15 @@
         logging.info('[{}] Partition assignment has been revoked. Disconnected from broker(s)'.format(self.trigger))
 
     def __errorOnJSONConstant(self, data):
-    	raise(ValueError('Invalid JSON detected.'))
+    	raise(ValueError('Constant "{}" detected in JSON.'.format(data)))
+
+    def __parseFloat(self, data):
+        res = float(data)
+
+        if res == float('inf'):
+            raise(ValueError('Parsing float value "{}" would result in "Infinity".'.format(data)))
+
+        if res == float('-inf'):
+            raise(ValueError('Parsing float value "{}" would result in "-Infinity".'.format(data)))
+
+        return res