From 5d542d2b7ef7849bf79ba10f504535a7b86aee06 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 10 Apr 2023 13:54:36 +0000 Subject: automatic import of python-asana --- python-asana.spec | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 python-asana.spec (limited to 'python-asana.spec') 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 - 3.2.0-1 +- Package Spec generated -- cgit v1.2.3