Skip to main content

air connection app

Project description

REST API using Flask and Python [Air connections search]

Project consist of:

  • images - folder with images sources
  • tests - folder with UnitTests, Pytest
  • app.py - main application resource
  • db.py - resource for creation and for fill the database
  • requirements.txt - file for install packages
  • list.csv - list of flights for database
  • pytest.ini - pytest file
  • config.cfg - file with config, flake8

For using application you need to do:

  1. Install Python 3.6 or higher
  2. Install requirements
    • pip install -r requirements.txt
  3. Create database for application
    • python db.py
$ python db.py

20 Record Transferred
  1. There are 3 environments to choose from with different databases, choose one:
  • testing - for local testing,
  • dev - need to be configured manually
  • prod - need to be configured manually
  1. Run application
  • python app.py testing
$ python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 231-078-686
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
  1. Follow the link http://127.0.0.1:5000/

Endpoints

Endpoint Request Description
/flight GET Get All Flights
/flight/id GET Get Single Flight
/flight POST Create a Flight
/flight/id PUT Update a Flight
/flight/id DELETE Delete Flight
/flight/search GET Flight search between 2 cities

Start Using:

1. Get All Flights
curl -X GET http://127.0.0.1:5000/flight
2. Get Single Flight
curl -X GET http://127.0.0.1:5000/flight/10
3. Create a Flight
curl -X POST -H "Content-Type: application/json" -d '{"source": "Barcelona", "destination": "Palma de Mallorca", "flight_company": "Vueling", "flight_number": "FR3745", "flight_time": "55m", "free_seats": "5", "price": "50$"}' http://127.0.0.1:5000/flight
4. Update a Flight
curl -X PUT -H "Content-Type: application/json" -d '{"source": "Barcelona", "destination": "Palma de Mallorca", "flight_company": "Ryanair", "flight_number": "FR3785", "flight_time": "50m", "free_seats": "8", "price": "150$"}' http://127.0.0.1:5000/flight/11
5. Delete Flight
curl -X DELETE http://127.0.0.1:5000/flight/11
6. Flight search between 2 cities
http://127.0.0.1:5000/flight/search?c1=Milan&c2=Barcelona

UnitTests:

Download the project:

  • Follow the link
  • Choose branche (feature/jdobc-255)

- Using Linter

  1. Install packages
pip install flake8
  1. Run flake8
flake8
$ flake8
0

- Using PyTest

  1. Install pytest from pip
pip install pytest
  1. Run pytest
pytest -v

- Coverage by PyTest:

  1. Install packages
pip install pytest-cov
  1. Run command
pytest --cov=. --cov-config='.coveragerc' -c='pytest.ini'

GitLab CI Multi-project:

  • Flake8
  • Pytest
  • Coverage
  • Build artifact
  • Upload artifact to s3
  • Deploy terraform code

Logging for AWS CloudWatch

  1. How to run the application locally in the test environment ?
    • run applicatin:
    python app.py testing
    
    • Log output file "air-connection-app.log" will be created automatically
  2. То see the streaming of application logs in AWS you need to deploy the application in AWS using terraform template and go to CloudWatch logs

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

air_connection_app-0.1.tar.gz (5.9 kB view details)

Uploaded Source

File details

Details for the file air_connection_app-0.1.tar.gz.

File metadata

  • Download URL: air_connection_app-0.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.2

File hashes

Hashes for air_connection_app-0.1.tar.gz
Algorithm Hash digest
SHA256 bf842cac2a92248c1c8c0a60203899d2b17b41e47730bc5d82cecd5e4c428220
MD5 9564b1b4f97655dd991a0dc409e881ca
BLAKE2b-256 d2f26efdb3c6309f78dab3a312166dee81ce8cae996a74177926f7ace92bc8ba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page