def snapshot(self, channel=0, path_file=None, timeout=None):
        """
        Args:

            channel:
                Values according with Amcrest API:
                0 - regular snapshot
                1 - motion detection snapshot
                2 - alarm snapshot

                If no channel param is used, default is 0

            path_file:
                If path_file is provided, save the snapshot
                in the path

        Return:
            raw from http request
        """
        ret = self.command(
            "snapshot.cgi?channel={0}".format(channel),
            timeout_cmd=timeout
        )

        if path_file:
            with open(path_file, 'wb') as out_file:
                shutil.copyfileobj(ret.raw, out_file)

        return ret.raw