public static function listSubscriptions(
        $user,
        $page = 1,
        $per_page = 20,
        $order_by = self::ORDERBY_CREATED_AT,
        $order_dir = self::ORDERDIR_ASC,
        $include_finished = false,
        $hash_type = false,
        $hash = false
    ) {
        if ($page < 1) {
            throw new DataSift_Exception_InvalidData("The specified page number is invalid");
        }

        if ($per_page < 1) {
            throw new DataSift_Exception_InvalidData("The specified per_page value is invalid");
        }

        $params = array(
            'page' => $page,
            'per_page' => $per_page,
            'order_by' => $order_by,
            'order_dir' => $order_dir,
        );

        if ($hash_type !== false && $hash !== false) {
            $params[$hash_type] = $hash;
        }

        if ($include_finished) {
            $params['include_finished'] = '1';
        }

        $res = $user->post('push/get', $params);

        $retval = array('count' => $res['count'], 'subscriptions' => array());
        foreach ($res['subscriptions'] as $sub) {
            $retval['subscriptions'][] = new self($user, $sub);
        }

        return $retval;
    }