def get_url(self, path='<STR_LIT:/>', websocket=False, remote=True,<EOL>attach_api_key=True, userId=None, pass_uid=False, **query):
userId = userId or self.userid<EOL>if attach_api_key and self.api_key:<EOL><INDENT>query.update({'<STR_LIT>':self.api_key, '<STR_LIT>': self.device_id})<EOL><DEDENT>if pass_uid:<EOL><INDENT>query['<STR_LIT>'] = userId<EOL><DEDENT>if remote:<EOL><INDENT>url = self.urlremote or self.url<EOL><DEDENT>else:<EOL><INDENT>url = self.url<EOL><DEDENT>if websocket:<EOL><INDENT>scheme = {'<STR_LIT:http>':'<STR_LIT>', '<STR_LIT>':'<STR_LIT>'}[url.scheme]<EOL><DEDENT>else:<EOL><INDENT>scheme = url.scheme<EOL><DEDENT>netloc = url.netloc + '<STR_LIT>'<EOL>url = urlunparse((scheme, netloc, path, '<STR_LIT>', '<STR_LIT>', '<STR_LIT>')).format(<EOL>UserId   = userId,<EOL>ApiKey   = self.api_key,<EOL>DeviceId = self.device_id,<EOL>params   = urlencode(query)<EOL>)<EOL>return url[:-<NUM_LIT:1>] if url[-<NUM_LIT:1>] == '<STR_LIT:?>' else url<EOL>
construct a url for an emby request

        Parameters
        ----------
        path : str
          uri path(excluding domain and port) of get request for emby
        websocket : bool, optional
          if true, then `ws(s)` are used instead of `http(s)`
        remote : bool, optional
          if true, remote-address is used (default True)
        attach_api_key : bool, optional
          if true, apikey is added to the query (default True)
        userId : str, optional
          uid to use, if none, default is used
        pass_uid : bool, optional
          if true, uid is added to the query (default False)
        query : karg dict
          additional parameters to set (part of url after the `?`)

        Also See
        --------
          get :
          getJson :
          post :
          delete :

        Returns
        -------
        full url