Given the unique link of a submission, returns its current
        status.

        Keyword Arguments
        -----------------

        * link: the unique id string of a submission

        Returns
        -------

        A dictionary of the error, the result code and the status
        code.

        Notes
        -----

        Status specifies the stage of execution.

        * status < 0 means the program awaits compilation
        * status == 0 means the program is done
        * status == 1 means the program is being compiled
        * status == 3 means the program is running

        Result specifies how the program finished.

        * result == 0 means not running, the program was submitted
                      with run=False
        * result == 11 means compilation error
        * result == 12 means runtime error
        * result == 13 means timelimit exceeded
        * result == 15 means success
        * result == 17 means memory limit exceeded
        * result == 19 means illegal system call
        * result == 20 means Ideone internal error, submit a bug report



        Examples
        --------

        >>> ideone_object = Ideone('username', 'password')
        >>> ideone_object.submission_status('LsSbo')
        {'error': 'OK',
         'result': 15,
         'status': 0}

def submission_status(self, link):
        """
        Given the unique link of a submission, returns its current
        status.

        Keyword Arguments
        -----------------

        * link: the unique id string of a submission

        Returns
        -------

        A dictionary of the error, the result code and the status
        code.

        Notes
        -----

        Status specifies the stage of execution.

        * status < 0 means the program awaits compilation
        * status == 0 means the program is done
        * status == 1 means the program is being compiled
        * status == 3 means the program is running

        Result specifies how the program finished.

        * result == 0 means not running, the program was submitted
                      with run=False
        * result == 11 means compilation error
        * result == 12 means runtime error
        * result == 13 means timelimit exceeded
        * result == 15 means success
        * result == 17 means memory limit exceeded
        * result == 19 means illegal system call
        * result == 20 means Ideone internal error, submit a bug report



        Examples
        --------

        >>> ideone_object = Ideone('username', 'password')
        >>> ideone_object.submission_status('LsSbo')
        {'error': 'OK',
         'result': 15,
         'status': 0}

        """
        result = self.client.service.getSubmissionStatus(self.user, self.password, link)
        result_dict = Ideone._transform_to_dict(result)
        Ideone._handle_error(result_dict)
        return result_dict