diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-18 06:24:01 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-18 06:24:01 +0000 |
| commit | 332137b90bc3b1ce65d18c9d5cbb6b7cb949d445 (patch) | |
| tree | 491634094d0869879eee1918f9ffeee25fe5a4b5 | |
| parent | 97cf98420c63e6d8ca0fcedf8fc372c2137a96d7 (diff) | |
automatic import of python-flack
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-flack.spec | 384 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 386 insertions, 0 deletions
@@ -0,0 +1 @@ +/flack-1.3.7.tar.gz diff --git a/python-flack.spec b/python-flack.spec new file mode 100644 index 0000000..7b102d0 --- /dev/null +++ b/python-flack.spec @@ -0,0 +1,384 @@ +%global _empty_manifest_terminate_build 0 +Name: python-flack +Version: 1.3.7 +Release: 1 +Summary: Slack integration for flask +License: MIT +URL: https://github.com/carlskeide/flack +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5c/3e/93805197ccb45c5ec7853c933d99388c393200ff3299d5dd8bd0c778de63/flack-1.3.7.tar.gz +BuildArch: noarch + + +%description +# Flack +*Integrate slack commands and actions with flask* + + + +## Setup +Either initialize the app immediately: +``` +from flack import Flack +flack = Flack(app) +``` + +Or use a deferred initialization: +``` +from flack import Flack +flack = Flack() + +def get_app(): + # Create your flask application. + flack.init_app(app) +``` + +### Configuration +- `FLACK_TOKEN` Must match the secret generated by Slack when creation your app or integration, will be verified for every request. +- `FLACK_URL_PREFIX` URL namespace for the built-in api endpoints. +- `FLACK_DEFAULT_NAME` Used for any response whera as_user is not explicitly set. + + +## Slack event handlers + +### Triggers +*API Endpoint: `/webhook`* + +The most basic type of interations, webhooks invoked by trigger words in a channel. +``` +@flack.trigger("!heart", as_user="Cupid") +def heart(text, user): + return "{} :heart: {}".format(user.name, text) +```` +Provides: +- `text` Any message after (but not including) the trigger word, may be an empty string. +- `user` The calling user, see: `flack.CALLER`. + +### Commmand +*API Endpoint: `/command`* + +Slash-commands, may respond to the user privately or interact with the channel in which it was executed. +``` +@flack.command("/weather") +def weather(text, user, channel): + return "The weather in {} is currently: {}".format(text, get_weather(text)) +```` +Provides: +- `text` Any message after the trigger word, may be an empty string. +- `user` The calling user, see: `flack.CALLER`. +- `channel` The active channel or conversation, see: `flack.CHANNEL`. + +### Action +*API Endpoint: `/action`* + +Action buttons included in advanced messages (see: `flack.message.Action`). +``` +@flack.action("remind") +def remind(value, ts, instance, user, channel): + remind_user(user) +```` +Provides: +- `value` Generally the same as the action name. +- `ts`: The timestamp of the originating message, used for modifying it through the API. +- `callback`: The Callback ID of the originating message attachment, see: `flack.message.Attachment` +- `user` The interacting user, see: `flack.CALLER`. +- `channel` The originating channel, see: `flack.CHANNEL`. + +## Responding +TODO: Document `flack.message` objects + +## OAuth +While not necessary for basic usage, Flack has support for registering an OAuth application. + +### Configuration +- `FLACK_CLIENT_ID` Provided by Slack when creating an app. +- `FLACK_CLIENT_SECRET` Provided by Slack when creating an app. +- `FLACK_SCOPE` Slack API scope to request (default is `commands,users:read,channels:read,chat:write:bot`). + +### Usage +Generate the Slack button HTML snippet and expose it to the client wherever you like with `flack.oauth.render_button()` + +Then create a view that can receive the generated credentials from Slack. Make sure the url matches what you provided as the "Redirect URL" when creating the Slack app. +``` +import flack.oauth + +@app.route('/callback') +@flack.oauth.callback +def callback(credentials): + # Make sure to store the credentials somewhere safe. + your_datastore.write({ + "team": credentials.team_id, + "token": credentials.access_token, + "scope": credentials.scope + }) + # And make sure to inform the client everything went fine + return "It worked!" +``` + +The credentials object is a namedtuple containing team_id, access_token, and scope. + +%package -n python3-flack +Summary: Slack integration for flask +Provides: python-flack +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-flack +# Flack +*Integrate slack commands and actions with flask* + + + +## Setup +Either initialize the app immediately: +``` +from flack import Flack +flack = Flack(app) +``` + +Or use a deferred initialization: +``` +from flack import Flack +flack = Flack() + +def get_app(): + # Create your flask application. + flack.init_app(app) +``` + +### Configuration +- `FLACK_TOKEN` Must match the secret generated by Slack when creation your app or integration, will be verified for every request. +- `FLACK_URL_PREFIX` URL namespace for the built-in api endpoints. +- `FLACK_DEFAULT_NAME` Used for any response whera as_user is not explicitly set. + + +## Slack event handlers + +### Triggers +*API Endpoint: `/webhook`* + +The most basic type of interations, webhooks invoked by trigger words in a channel. +``` +@flack.trigger("!heart", as_user="Cupid") +def heart(text, user): + return "{} :heart: {}".format(user.name, text) +```` +Provides: +- `text` Any message after (but not including) the trigger word, may be an empty string. +- `user` The calling user, see: `flack.CALLER`. + +### Commmand +*API Endpoint: `/command`* + +Slash-commands, may respond to the user privately or interact with the channel in which it was executed. +``` +@flack.command("/weather") +def weather(text, user, channel): + return "The weather in {} is currently: {}".format(text, get_weather(text)) +```` +Provides: +- `text` Any message after the trigger word, may be an empty string. +- `user` The calling user, see: `flack.CALLER`. +- `channel` The active channel or conversation, see: `flack.CHANNEL`. + +### Action +*API Endpoint: `/action`* + +Action buttons included in advanced messages (see: `flack.message.Action`). +``` +@flack.action("remind") +def remind(value, ts, instance, user, channel): + remind_user(user) +```` +Provides: +- `value` Generally the same as the action name. +- `ts`: The timestamp of the originating message, used for modifying it through the API. +- `callback`: The Callback ID of the originating message attachment, see: `flack.message.Attachment` +- `user` The interacting user, see: `flack.CALLER`. +- `channel` The originating channel, see: `flack.CHANNEL`. + +## Responding +TODO: Document `flack.message` objects + +## OAuth +While not necessary for basic usage, Flack has support for registering an OAuth application. + +### Configuration +- `FLACK_CLIENT_ID` Provided by Slack when creating an app. +- `FLACK_CLIENT_SECRET` Provided by Slack when creating an app. +- `FLACK_SCOPE` Slack API scope to request (default is `commands,users:read,channels:read,chat:write:bot`). + +### Usage +Generate the Slack button HTML snippet and expose it to the client wherever you like with `flack.oauth.render_button()` + +Then create a view that can receive the generated credentials from Slack. Make sure the url matches what you provided as the "Redirect URL" when creating the Slack app. +``` +import flack.oauth + +@app.route('/callback') +@flack.oauth.callback +def callback(credentials): + # Make sure to store the credentials somewhere safe. + your_datastore.write({ + "team": credentials.team_id, + "token": credentials.access_token, + "scope": credentials.scope + }) + # And make sure to inform the client everything went fine + return "It worked!" +``` + +The credentials object is a namedtuple containing team_id, access_token, and scope. + +%package help +Summary: Development documents and examples for flack +Provides: python3-flack-doc +%description help +# Flack +*Integrate slack commands and actions with flask* + + + +## Setup +Either initialize the app immediately: +``` +from flack import Flack +flack = Flack(app) +``` + +Or use a deferred initialization: +``` +from flack import Flack +flack = Flack() + +def get_app(): + # Create your flask application. + flack.init_app(app) +``` + +### Configuration +- `FLACK_TOKEN` Must match the secret generated by Slack when creation your app or integration, will be verified for every request. +- `FLACK_URL_PREFIX` URL namespace for the built-in api endpoints. +- `FLACK_DEFAULT_NAME` Used for any response whera as_user is not explicitly set. + + +## Slack event handlers + +### Triggers +*API Endpoint: `/webhook`* + +The most basic type of interations, webhooks invoked by trigger words in a channel. +``` +@flack.trigger("!heart", as_user="Cupid") +def heart(text, user): + return "{} :heart: {}".format(user.name, text) +```` +Provides: +- `text` Any message after (but not including) the trigger word, may be an empty string. +- `user` The calling user, see: `flack.CALLER`. + +### Commmand +*API Endpoint: `/command`* + +Slash-commands, may respond to the user privately or interact with the channel in which it was executed. +``` +@flack.command("/weather") +def weather(text, user, channel): + return "The weather in {} is currently: {}".format(text, get_weather(text)) +```` +Provides: +- `text` Any message after the trigger word, may be an empty string. +- `user` The calling user, see: `flack.CALLER`. +- `channel` The active channel or conversation, see: `flack.CHANNEL`. + +### Action +*API Endpoint: `/action`* + +Action buttons included in advanced messages (see: `flack.message.Action`). +``` +@flack.action("remind") +def remind(value, ts, instance, user, channel): + remind_user(user) +```` +Provides: +- `value` Generally the same as the action name. +- `ts`: The timestamp of the originating message, used for modifying it through the API. +- `callback`: The Callback ID of the originating message attachment, see: `flack.message.Attachment` +- `user` The interacting user, see: `flack.CALLER`. +- `channel` The originating channel, see: `flack.CHANNEL`. + +## Responding +TODO: Document `flack.message` objects + +## OAuth +While not necessary for basic usage, Flack has support for registering an OAuth application. + +### Configuration +- `FLACK_CLIENT_ID` Provided by Slack when creating an app. +- `FLACK_CLIENT_SECRET` Provided by Slack when creating an app. +- `FLACK_SCOPE` Slack API scope to request (default is `commands,users:read,channels:read,chat:write:bot`). + +### Usage +Generate the Slack button HTML snippet and expose it to the client wherever you like with `flack.oauth.render_button()` + +Then create a view that can receive the generated credentials from Slack. Make sure the url matches what you provided as the "Redirect URL" when creating the Slack app. +``` +import flack.oauth + +@app.route('/callback') +@flack.oauth.callback +def callback(credentials): + # Make sure to store the credentials somewhere safe. + your_datastore.write({ + "team": credentials.team_id, + "token": credentials.access_token, + "scope": credentials.scope + }) + # And make sure to inform the client everything went fine + return "It worked!" +``` + +The credentials object is a namedtuple containing team_id, access_token, and scope. + +%prep +%autosetup -n flack-1.3.7 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-flack -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 1.3.7-1 +- Package Spec generated @@ -0,0 +1 @@ +b9a01a7ffb401e0c17a132e17d4fc149 flack-1.3.7.tar.gz |
