<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def search_site(self, keyword):
 """ Search a sharepoint host for sites with the provided keyword :param keyword: a keyword to search sites :rtype: list[Site] """

        if not keyword:
            raise ValueError('Must provide a valid keyword')

        url = self.build_url(
            self._endpoints.get('search').format(keyword=keyword))

        response = self.con.get(url)
        if not response:
            return []

        data = response.json()

        # Everything received from cloud must be passed as self._cloud_data_key
        return [
            self.site_constructor(parent=self, **{self._cloud_data_key: site})
            for site in data.get('value', [])]