Skip to content

Commit b430a59

Browse files
authored
Add files via upload
1 parent 1b2ef9d commit b430a59

2 files changed

Lines changed: 124 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# +----------------------------------------------------------------------------+
2+
# | CARDUI TECH v1.0.0
3+
# +----------------------------------------------------------------------------+
4+
# | Copyright (c) 2026 - 2026, CARDUITECH.COM (www.carduitech.com)
5+
# | Vanessa Reteguín <vanessa@reteguin.com>
6+
# | Released under the MIT license
7+
# | www.carduitech.com/license/
8+
# +----------------------------------------------------------------------------+
9+
# | Author.......: Vanessa Reteguín <vanessa@reteguin.com>
10+
# | First release: March 16th, 2026
11+
# | Last update..: March 16th, 2026
12+
# | WhatIs.......: API Requester - Class
13+
# +----------------------------------------------------------------------------++
14+
15+
# ------------ Resources / Documentation involved -------------
16+
# Requests library documentation: https://requests.readthedocs.io/en/latest/user/quickstart/
17+
# URL Decoder/Encoder: https://meyerweb.com/eric/tools/dencoder/
18+
19+
# ------------------------- Libraries -------------------------
20+
import requests
21+
22+
# ------------------------- Class -------------------------
23+
class API_Requester:
24+
def __init__(self, endpoint, parameters, api_key=""):
25+
self.endpoint = endpoint
26+
self.parameters = parameters
27+
self.api_key = api_key
28+
29+
def fetch_data(self, method="GET", show_url=False, show_status_code=False, show_json=False):
30+
response = requests.get(self.endpoint, params=self.parameters)
31+
32+
if show_url:
33+
print(f"Sent URL: {response.url}")
34+
35+
if show_status_code:
36+
print(f"Status code: {response.status_code}")
37+
38+
if show_json:
39+
print("Response: ") # Separate prints for easier response copy/paste
40+
print(response.json())
41+
42+
return response.json()

Feb-Jun_2026/API_exercises/main.py

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# +----------------------------------------------------------------------------+
2+
# | CARDUI TECH v1.0.0
3+
# +----------------------------------------------------------------------------+
4+
# | Copyright (c) 2026 - 2026, CARDUITECH.COM (www.carduitech.com)
5+
# | Vanessa Reteguín <vanessa@reteguin.com>
6+
# | Released under the MIT license
7+
# | www.carduitech.com/license/
8+
# +----------------------------------------------------------------------------+
9+
# | Author.......: Vanessa Reteguín <vanessa@reteguin.com>
10+
# | First release: March 11th, 2026
11+
# | Last update..: March 16th, 2026
12+
# | WhatIs.......: Dog API (API connections exercise) - Main
13+
# +----------------------------------------------------------------------------++
14+
15+
# ------------ Resources / Documentation involved -------------
16+
# Dog API documentation: https://dogapi.dog/docs/api-v2
17+
# Star Wars API documentation: https://swapi.dev/documentation
18+
# SpaceX query launches API documentation: https://github.com/r-spacex/SpaceX-API/blob/master/docs/launches/v5/query.md
19+
20+
# -------------------------- Imports --------------------------
21+
from API_requester_class import API_Requester
22+
23+
# ------------------------- Variables -------------------------
24+
DogAPI_endpoint_facts = "https://dogapi.dog/api/v2/facts/"
25+
DogAPI_facts_breeds = {
26+
"limit": "3"
27+
}
28+
29+
DogAPI_endpoint_breeds = "https://dogapi.dog/api/v2/breeds/"
30+
DogAPI_parameters_breeds = {
31+
"page[number]": "1",
32+
"page[size]": 2
33+
}
34+
35+
StarWars_endpoint_species = "https://swapi.dev/api/species/"
36+
StarWars_parameters_species = {
37+
"search": "togruta"
38+
}
39+
40+
StarWars_endpoint_planets = "https://swapi.dev/api/planets/"
41+
StarWars_parameters_planets = {
42+
"search": "naboo"
43+
}
44+
45+
SpaceX_endpoint_launches = "https://api.spacexdata.com/v5/launches/"
46+
SpaceX_parameters_launches = {
47+
"query": {
48+
"upcoming": True
49+
},
50+
"options": {
51+
"limit": 1,
52+
"sort": {
53+
"flight_number": "asc"
54+
}
55+
}
56+
}
57+
58+
# --------------------------- Code ----------------------------
59+
"""
60+
dog_facts = API_Requester(endpoint=DogAPI_endpoint_facts, parameters=DogAPI_facts_breeds)
61+
dog_facts.fetch_data(show_url=True, show_status_code=True, show_json=True)
62+
63+
dog_breeds = API_Requester(endpoint=DogAPI_endpoint_breeds, parameters=DogAPI_parameters_breeds)
64+
dog_breeds.fetch_data(show_url=True, show_json=True)
65+
"""
66+
67+
"""
68+
starwars_species_facts = API_Requester(endpoint=StarWars_endpoint_species, parameters=StarWars_parameters_species)
69+
starwars_species_facts.fetch_data(show_url=True, show_status_code=True, show_json=True)
70+
71+
starwars_planets_facts = API_Requester(endpoint=StarWars_endpoint_planets, parameters=StarWars_parameters_planets)
72+
starwars_planets_facts.fetch_data(show_url=True, show_status_code=True, show_json=True)
73+
"""
74+
75+
SpaceX_launches = API_Requester(endpoint=SpaceX_endpoint_launches, parameters=SpaceX_parameters_launches)
76+
launch_data = SpaceX_launches.fetch_data(show_url=True, show_status_code=True, show_json=False)
77+
78+
for i in range(0, 4):
79+
print(f"""\nMission data #{i}
80+
Success: {launch_data[i]['success']}
81+
Detail: {launch_data[i]['details']}
82+
Article: {launch_data[i]['links']['article']}""")

0 commit comments

Comments
 (0)