docs: def _make_request(self, url, parameters, result_key):
          """Make http/https request to Google API.
  
          Method prepares url parameters, drops None values, and gets default
          values. Finally makes request using protocol assigned to client and
          returns data.
  
          :param url: url part - specifies API endpoint
          :param parameters: dictionary of url parameters
          :param result_key: key in output where result is expected
          """
          url = urlparse.urljoin(urlparse.urljoin(self.base, url), "json")
  
          # drop all None values and use defaults if not set
          parameters = {key: value for key, value in parameters.items() if
                        value is not None}
          parameters.setdefault("sensor", self.sensor)
          parameters = self._serialize_parameters(parameters)
          if self.api_key:
              parameters["key"] = self.api_key
  
          raw_response = requests.get(url, params=parameters)
          response = raw_response.json()
  
          if response["status"] == status.OK and result_key is not None:
              return response[result_key]
          elif response["status"] == status.OK:
              del response["status"]
              return response
          else:
              response["url"] = raw_response.url
              raise errors.EXCEPTION_MAPPING.get(
                  response["status"],
                  errors.GmapException
              )(response)