%global _empty_manifest_terminate_build 0 Name: python-firebase Version: 4.0.1 Release: 1 Summary: Python interface to the Google's Firebase REST APIs License: MIT License URL: https://bitbucket.org/joetilsed/firebase/ Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a4/6f/ec2c7207f53115d39ae2a5bdb04b0df3cf341d6cc52cacbed0a315e02407/firebase-4.0.1.tar.gz BuildArch: noarch Requires: python3-requests %description # Python interface to the Google's Firebase REST APIs ###### Author: [Joe Tilsed](http://linkedin.com/in/joetilsed) | Created: 09.02.2019 | Last Updated: 22.02.2023 | Version 4.0.1 # Firebase Python interface to the Google's Firebase REST APIs [![Firebase](https://bitbucket.org/joetilsed/firebase/raw/548eebb31057cddf10a79275711a0657429dcb54/logo.png)](http://www.firebase.com) ## Installation $ pip install firebase ## Getting Started You can fetch any of your data in JSON format by appending '.json' to the end of the URL in which your data resides and, then send an HTTPS request through your browser. Like all other REST specific APIs, Firebase offers a client to update(PATCH, PUT), create(POST), or remove(DELETE) his stored data along with just to fetch it. The library provides all the corresponding methods for those actions in both synchronous and asynchronous manner. You can just start an asynchronous GET request with your callback function, and the method To fetch all the users in your storage simply do the following: ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users', None) print(result) >> {'1': 'Joe Tilsed', '2': 'Sydney Cox'} ``` The second argument of **get** method is the name of the snapshot. Thus, if you leave it NULL, you get the data in the URL **/users.json**. Besides, if you set it to **1**, you get the data in the url **/users/1.json**. In other words, you get the user whose ID equals to 1. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users', '1') print(result) >> {'1': 'Joe Tilsed'} ``` You can also provide extra query parameters that will be appended to the url or extra key-value pairs sent in the HTTP header. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users/2', None, {'print': 'pretty'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result) >> {'2': 'Sydney Cox'} ``` Creating new data requires a POST or PUT request. Assuming you don't append **print=silent** to the url, if you use POST the returning value becomes the name of the snapshot, if PUT you get the data you just sent. If print=silent is provided, you get just NULL because the backend never sends an output. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) new_user = 'Dave' result = firebase.post('/users', new_user, {'print': 'pretty'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result) >> {u'name': u''} result = firebase.post('/users', new_user, {'print': 'silent'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result == None) >> True ``` Deleting data is relatively easy compared to other actions. You just set the url and that's all. Backend sends no output as a result of a delete operation. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) firebase.delete('/users', '3') # Dave goes away. ``` ## Authentication Authentication in Firebase is nothing but to simply creating a token that conforms to the JWT standards and, putting it into the querystring with the name **auth**. The library creates that token for you so you never end up struggling with constructing a valid token on your own. If the data has been protected against write/read operations with some security rules, the backend sends an appropriate error message back to the client with the status code **403 Forbidden**. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None) result = firebase.get('/users', None, {'print': 'pretty'}) print(result) >> {'error': 'Permission denied.'} authentication = firebase.FirebaseAuthentication('THIS_IS_MY_SECRET', 'Joe@Tilsed.com', extra={'id': 123}) firebase.authentication = authentication print(authentication.extra) >> {'admin': False, 'debug': False, 'email': 'Joe@Tilsed.com', 'id': 123, 'provider': 'password'} user = authentication.get_user() print(user.firebase_auth_token) >> "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhZG1pbiI6IGZhbHNlLCAiZGVidWciOiBmYWxzZSwgIml hdCI6IDEzNjE5NTAxNzQsICJkIjogeyJkZWJ1ZyI6IGZhbHNlLCAiYWRtaW4iOiBmYWxzZSwgInByb3ZpZGVyIjog InBhc3N3b3JkIiwgImlkIjogNSwgImVtYWlsIjogIm96Z3VydnRAZ21haWwuY29tIn0sICJ2IjogMH0.lq4IRVfvE GQklslOlS4uIBLSSJj88YNrloWXvisRgfQ" result = firebase.get('/users', None, {'print': 'pretty'}) print(result) >> {'1': 'Joe Tilsed', '2': 'Sydney Cox'} ``` ## Concurrency The interface heavily depends on the standart **multiprocessing** library when concurrency comes in. While creating an asynchronous call, an on-demand process pool is created and, the async method is executed by one of the idle process inside the pool. The pool remains alive until the main process dies. So every time you trigger an async call, you always use the same pool. When the method returns, the pool process ships the returning value back to the main process within the callback function provided. ```python import json from firebase import firebase from firebase import jsonutil firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None) def log_user(response): with open('/tmp/users/%s.json' % response.keys()[0], 'w') as users_file: users_file.write(json.dumps(response, cls=jsonutil.JSONEncoder)) firebase.get_async('/users', None, {'print': 'pretty'}, callback=log_user) ``` ###### # That's all folks... %package -n python3-firebase Summary: Python interface to the Google's Firebase REST APIs Provides: python-firebase BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-firebase # Python interface to the Google's Firebase REST APIs ###### Author: [Joe Tilsed](http://linkedin.com/in/joetilsed) | Created: 09.02.2019 | Last Updated: 22.02.2023 | Version 4.0.1 # Firebase Python interface to the Google's Firebase REST APIs [![Firebase](https://bitbucket.org/joetilsed/firebase/raw/548eebb31057cddf10a79275711a0657429dcb54/logo.png)](http://www.firebase.com) ## Installation $ pip install firebase ## Getting Started You can fetch any of your data in JSON format by appending '.json' to the end of the URL in which your data resides and, then send an HTTPS request through your browser. Like all other REST specific APIs, Firebase offers a client to update(PATCH, PUT), create(POST), or remove(DELETE) his stored data along with just to fetch it. The library provides all the corresponding methods for those actions in both synchronous and asynchronous manner. You can just start an asynchronous GET request with your callback function, and the method To fetch all the users in your storage simply do the following: ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users', None) print(result) >> {'1': 'Joe Tilsed', '2': 'Sydney Cox'} ``` The second argument of **get** method is the name of the snapshot. Thus, if you leave it NULL, you get the data in the URL **/users.json**. Besides, if you set it to **1**, you get the data in the url **/users/1.json**. In other words, you get the user whose ID equals to 1. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users', '1') print(result) >> {'1': 'Joe Tilsed'} ``` You can also provide extra query parameters that will be appended to the url or extra key-value pairs sent in the HTTP header. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users/2', None, {'print': 'pretty'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result) >> {'2': 'Sydney Cox'} ``` Creating new data requires a POST or PUT request. Assuming you don't append **print=silent** to the url, if you use POST the returning value becomes the name of the snapshot, if PUT you get the data you just sent. If print=silent is provided, you get just NULL because the backend never sends an output. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) new_user = 'Dave' result = firebase.post('/users', new_user, {'print': 'pretty'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result) >> {u'name': u''} result = firebase.post('/users', new_user, {'print': 'silent'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result == None) >> True ``` Deleting data is relatively easy compared to other actions. You just set the url and that's all. Backend sends no output as a result of a delete operation. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) firebase.delete('/users', '3') # Dave goes away. ``` ## Authentication Authentication in Firebase is nothing but to simply creating a token that conforms to the JWT standards and, putting it into the querystring with the name **auth**. The library creates that token for you so you never end up struggling with constructing a valid token on your own. If the data has been protected against write/read operations with some security rules, the backend sends an appropriate error message back to the client with the status code **403 Forbidden**. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None) result = firebase.get('/users', None, {'print': 'pretty'}) print(result) >> {'error': 'Permission denied.'} authentication = firebase.FirebaseAuthentication('THIS_IS_MY_SECRET', 'Joe@Tilsed.com', extra={'id': 123}) firebase.authentication = authentication print(authentication.extra) >> {'admin': False, 'debug': False, 'email': 'Joe@Tilsed.com', 'id': 123, 'provider': 'password'} user = authentication.get_user() print(user.firebase_auth_token) >> "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhZG1pbiI6IGZhbHNlLCAiZGVidWciOiBmYWxzZSwgIml hdCI6IDEzNjE5NTAxNzQsICJkIjogeyJkZWJ1ZyI6IGZhbHNlLCAiYWRtaW4iOiBmYWxzZSwgInByb3ZpZGVyIjog InBhc3N3b3JkIiwgImlkIjogNSwgImVtYWlsIjogIm96Z3VydnRAZ21haWwuY29tIn0sICJ2IjogMH0.lq4IRVfvE GQklslOlS4uIBLSSJj88YNrloWXvisRgfQ" result = firebase.get('/users', None, {'print': 'pretty'}) print(result) >> {'1': 'Joe Tilsed', '2': 'Sydney Cox'} ``` ## Concurrency The interface heavily depends on the standart **multiprocessing** library when concurrency comes in. While creating an asynchronous call, an on-demand process pool is created and, the async method is executed by one of the idle process inside the pool. The pool remains alive until the main process dies. So every time you trigger an async call, you always use the same pool. When the method returns, the pool process ships the returning value back to the main process within the callback function provided. ```python import json from firebase import firebase from firebase import jsonutil firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None) def log_user(response): with open('/tmp/users/%s.json' % response.keys()[0], 'w') as users_file: users_file.write(json.dumps(response, cls=jsonutil.JSONEncoder)) firebase.get_async('/users', None, {'print': 'pretty'}, callback=log_user) ``` ###### # That's all folks... %package help Summary: Development documents and examples for firebase Provides: python3-firebase-doc %description help # Python interface to the Google's Firebase REST APIs ###### Author: [Joe Tilsed](http://linkedin.com/in/joetilsed) | Created: 09.02.2019 | Last Updated: 22.02.2023 | Version 4.0.1 # Firebase Python interface to the Google's Firebase REST APIs [![Firebase](https://bitbucket.org/joetilsed/firebase/raw/548eebb31057cddf10a79275711a0657429dcb54/logo.png)](http://www.firebase.com) ## Installation $ pip install firebase ## Getting Started You can fetch any of your data in JSON format by appending '.json' to the end of the URL in which your data resides and, then send an HTTPS request through your browser. Like all other REST specific APIs, Firebase offers a client to update(PATCH, PUT), create(POST), or remove(DELETE) his stored data along with just to fetch it. The library provides all the corresponding methods for those actions in both synchronous and asynchronous manner. You can just start an asynchronous GET request with your callback function, and the method To fetch all the users in your storage simply do the following: ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users', None) print(result) >> {'1': 'Joe Tilsed', '2': 'Sydney Cox'} ``` The second argument of **get** method is the name of the snapshot. Thus, if you leave it NULL, you get the data in the URL **/users.json**. Besides, if you set it to **1**, you get the data in the url **/users/1.json**. In other words, you get the user whose ID equals to 1. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users', '1') print(result) >> {'1': 'Joe Tilsed'} ``` You can also provide extra query parameters that will be appended to the url or extra key-value pairs sent in the HTTP header. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) result = firebase.get('/users/2', None, {'print': 'pretty'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result) >> {'2': 'Sydney Cox'} ``` Creating new data requires a POST or PUT request. Assuming you don't append **print=silent** to the url, if you use POST the returning value becomes the name of the snapshot, if PUT you get the data you just sent. If print=silent is provided, you get just NULL because the backend never sends an output. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) new_user = 'Dave' result = firebase.post('/users', new_user, {'print': 'pretty'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result) >> {u'name': u''} result = firebase.post('/users', new_user, {'print': 'silent'}, {'X_FANCY_HEADER': 'VERY FANCY'}) print(result == None) >> True ``` Deleting data is relatively easy compared to other actions. You just set the url and that's all. Backend sends no output as a result of a delete operation. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None) firebase.delete('/users', '3') # Dave goes away. ``` ## Authentication Authentication in Firebase is nothing but to simply creating a token that conforms to the JWT standards and, putting it into the querystring with the name **auth**. The library creates that token for you so you never end up struggling with constructing a valid token on your own. If the data has been protected against write/read operations with some security rules, the backend sends an appropriate error message back to the client with the status code **403 Forbidden**. ```python from firebase import firebase firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None) result = firebase.get('/users', None, {'print': 'pretty'}) print(result) >> {'error': 'Permission denied.'} authentication = firebase.FirebaseAuthentication('THIS_IS_MY_SECRET', 'Joe@Tilsed.com', extra={'id': 123}) firebase.authentication = authentication print(authentication.extra) >> {'admin': False, 'debug': False, 'email': 'Joe@Tilsed.com', 'id': 123, 'provider': 'password'} user = authentication.get_user() print(user.firebase_auth_token) >> "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhZG1pbiI6IGZhbHNlLCAiZGVidWciOiBmYWxzZSwgIml hdCI6IDEzNjE5NTAxNzQsICJkIjogeyJkZWJ1ZyI6IGZhbHNlLCAiYWRtaW4iOiBmYWxzZSwgInByb3ZpZGVyIjog InBhc3N3b3JkIiwgImlkIjogNSwgImVtYWlsIjogIm96Z3VydnRAZ21haWwuY29tIn0sICJ2IjogMH0.lq4IRVfvE GQklslOlS4uIBLSSJj88YNrloWXvisRgfQ" result = firebase.get('/users', None, {'print': 'pretty'}) print(result) >> {'1': 'Joe Tilsed', '2': 'Sydney Cox'} ``` ## Concurrency The interface heavily depends on the standart **multiprocessing** library when concurrency comes in. While creating an asynchronous call, an on-demand process pool is created and, the async method is executed by one of the idle process inside the pool. The pool remains alive until the main process dies. So every time you trigger an async call, you always use the same pool. When the method returns, the pool process ships the returning value back to the main process within the callback function provided. ```python import json from firebase import firebase from firebase import jsonutil firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None) def log_user(response): with open('/tmp/users/%s.json' % response.keys()[0], 'w') as users_file: users_file.write(json.dumps(response, cls=jsonutil.JSONEncoder)) firebase.get_async('/users', None, {'print': 'pretty'}, callback=log_user) ``` ###### # That's all folks... %prep %autosetup -n firebase-4.0.1 %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-firebase -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 11 2023 Python_Bot - 4.0.1-1 - Package Spec generated