docs: def read_body(payload, content_type=JSON_CONTENT_TYPE):
      """Reads HTTP payload according to given content_type.
  
      Function is capable of reading from payload stream.
      Read data is then processed according to content_type.
  
      Note:
          Content-Type is validated. It means that if read_body
          body is not capable of reading data in requested type,
          it will throw an exception.
  
      If read data was empty method will return false boolean
      value to indicate that.
  
      Note:
          There is no transformation if content type is equal to
          'text/plain'. What has been read is returned.
  
      :param stream payload: payload to read, payload should have read method
      :param str content_type: payload content type, default to application/json
      :return: read data, returned type depends on content_type or False
               if empty
  
      :exception: :py:class:`.UnreadableBody` - in case of any failure when
                                                reading data
  
      """
      if content_type not in _READABLE_CONTENT_TYPES:
          msg = ('Cannot read %s, not in %s' %
                 (content_type, _READABLE_CONTENT_TYPES))
          raise exceptions.UnsupportedContentTypeException(msg)
  
      try:
          content = payload.read()
          if not content:
              return None
      except Exception as ex:
          raise exceptions.UnreadableContentError(str(ex))
  
      return _READABLE_CONTENT_TYPES[content_type](content)