summaryrefslogtreecommitdiff
path: root/python-asana.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-asana.spec')
-rw-r--r--python-asana.spec131
1 files changed, 131 insertions, 0 deletions
diff --git a/python-asana.spec b/python-asana.spec
new file mode 100644
index 0000000..16fc389
--- /dev/null
+++ b/python-asana.spec
@@ -0,0 +1,131 @@
+%global _empty_manifest_terminate_build 0
+Name: python-asana
+Version: 3.2.0
+Release: 1
+Summary: Asana API client
+License: MIT
+URL: http://github.com/asana/python-asana
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/61/84/7dcdb78f3ddb1011f628812cab45a5616e572099f42e9279756e92ad7230/asana-3.2.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-requests
+Requires: python3-requests-oauthlib
+
+%description
+### Personal Access Token
+Create a client using your Asana Personal Access Token:
+ client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN')
+### OAuth 2
+Asana supports OAuth 2. `asana` handles some of the details of the OAuth flow for you.
+Create a client using your OAuth Client ID and secret:
+ client = asana.Client.oauth(
+ client_id='ASANA_CLIENT_ID',
+ client_secret='ASANA_CLIENT_SECRET',
+ redirect_uri='https://yourapp.com/auth/asana/callback'
+ )
+Redirect the user to the authorization URL obtained from the client's `session` object:
+ (url, state) = client.session.authorization_url()
+When the user is redirected back to your callback, check the `state` URL parameter matches, then pass the `code` parameter to obtain a bearer token:
+ if request.params['state'] == state:
+ token = client.session.fetch_token(code=request.params['code'])
+ # ...
+ else:
+ # error! possible CSRF attack
+Note: if you're writing a non-browser-based application (e.x. a command line tool) you can use the special redirect URI `urn:ietf:wg:oauth:2.0:oob` to prompt the user to copy and paste the code into the application.
+
+%package -n python3-asana
+Summary: Asana API client
+Provides: python-asana
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-asana
+### Personal Access Token
+Create a client using your Asana Personal Access Token:
+ client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN')
+### OAuth 2
+Asana supports OAuth 2. `asana` handles some of the details of the OAuth flow for you.
+Create a client using your OAuth Client ID and secret:
+ client = asana.Client.oauth(
+ client_id='ASANA_CLIENT_ID',
+ client_secret='ASANA_CLIENT_SECRET',
+ redirect_uri='https://yourapp.com/auth/asana/callback'
+ )
+Redirect the user to the authorization URL obtained from the client's `session` object:
+ (url, state) = client.session.authorization_url()
+When the user is redirected back to your callback, check the `state` URL parameter matches, then pass the `code` parameter to obtain a bearer token:
+ if request.params['state'] == state:
+ token = client.session.fetch_token(code=request.params['code'])
+ # ...
+ else:
+ # error! possible CSRF attack
+Note: if you're writing a non-browser-based application (e.x. a command line tool) you can use the special redirect URI `urn:ietf:wg:oauth:2.0:oob` to prompt the user to copy and paste the code into the application.
+
+%package help
+Summary: Development documents and examples for asana
+Provides: python3-asana-doc
+%description help
+### Personal Access Token
+Create a client using your Asana Personal Access Token:
+ client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN')
+### OAuth 2
+Asana supports OAuth 2. `asana` handles some of the details of the OAuth flow for you.
+Create a client using your OAuth Client ID and secret:
+ client = asana.Client.oauth(
+ client_id='ASANA_CLIENT_ID',
+ client_secret='ASANA_CLIENT_SECRET',
+ redirect_uri='https://yourapp.com/auth/asana/callback'
+ )
+Redirect the user to the authorization URL obtained from the client's `session` object:
+ (url, state) = client.session.authorization_url()
+When the user is redirected back to your callback, check the `state` URL parameter matches, then pass the `code` parameter to obtain a bearer token:
+ if request.params['state'] == state:
+ token = client.session.fetch_token(code=request.params['code'])
+ # ...
+ else:
+ # error! possible CSRF attack
+Note: if you're writing a non-browser-based application (e.x. a command line tool) you can use the special redirect URI `urn:ietf:wg:oauth:2.0:oob` to prompt the user to copy and paste the code into the application.
+
+%prep
+%autosetup -n asana-3.2.0
+
+%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-asana -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 3.2.0-1
+- Package Spec generated