Code summary

The finished plugin.py should look something like this:

from datetime import datetime, timedelta
from logging import Logger
from typing import List, Optional

from wev.sdk import PluginBase, Resolution, ResolutionSupport


class Plugin(PluginBase):

    @property
    def cache_duration(self) -> int:
        return int(self.get("cache_duration", 30))

    def explain(self, logger: Logger) -> List[str]:
        plan: List[str] = []
        plan.append(
            "You will be prompted to enter a special value, which will be "
            f"cached for {self.cache_duration} seconds.",
        )
        if self.force_case:
            plan.append(
                f"The value will be translated to {self.force_case} case."
            )
        return plan

    @property
    def force_case(self) -> Optional[str]:
        return self.get("force_case", None)

    def resolve(self, support: ResolutionSupport) -> Resolution:
        value = support.confidential_prompt("Please enter any value.", "Value:")

        if self.force_case == "upper":
            value = value.upper()
        elif self.force_case == "lower":
            value = value.lower()

        return Resolution.make(
            value=value,
            expires_at=datetime.now() + timedelta(seconds=self.cache_duration),
        )

    @property
    def version(self) -> str:
        """ Gets the plugin's version. """
        return "1.0.0"

Your directory structure should look something like this:

~/wev-ask/wev_ask/__init__.py
~/wev-ask/wev_ask/plugin.py
~/wev-ask/setup.py

Last update: 2021-01-23