code: def service(self):
          
          if self._service is not None:
              return self._service
  
          metadata = self._metadata
  
          if metadata is None:
              return None
  
          try:
              searchinfo = self._metadata.searchinfo
          except AttributeError:
              return None
  
          splunkd_uri = searchinfo.splunkd_uri
  
          if splunkd_uri is None:
              return None
  
          uri = urlsplit(splunkd_uri, allow_fragments=False)
  
          self._service = Service(
              scheme=uri.scheme, host=uri.hostname, port=uri.port, app=searchinfo.app, token=searchinfo.session_key)
  
          return self._service
docs: Returns a Splunk service object for this command invocation or None.
  
          The service object is created from the Splunkd URI and authentication token passed to the command invocation in
          the search results info file. This data is not passed to a command invocation by default. You must request it by
          specifying this pair of configuration settings in commands.conf:
  
             .. code-block:: python
                 enableheader = true
                 requires_srinfo = true
  
          The :code:`enableheader` setting is :code:`true` by default. Hence, you need not set it. The
          :code:`requires_srinfo` setting is false by default. Hence, you must set it.
  
          :return: :class:`splunklib.client.Service`, if :code:`enableheader` and :code:`requires_srinfo` are both
          :code:`true`. Otherwise, if either :code:`enableheader` or :code:`requires_srinfo` are :code:`false`, a value
          of :code:`None` is returned.