From c4d0e833f7ac7581402c79f7fddd2369a254ccd7 Mon Sep 17 00:00:00 2001
From: lorenagubaira <102861577+Lorenagubaira@users.noreply.github.com>
Date: Thu, 15 Jun 2023 17:30:08 +0000
Subject: [PATCH 01/33] the instructions were updated
---
README.es.md | 2 ++
README.md | 6 ++++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/README.es.md b/README.es.md
index bba888c..71e28a3 100644
--- a/README.es.md
+++ b/README.es.md
@@ -20,6 +20,8 @@ Puedes empezar estos ejercicios en pocos segundos haciendo clic en: [Abrir en Co
### Instalación local:
+Clona el repositorio en tu ambiente local y sigue los siguientes pasos:
+
1. Instala learnpack, el administrador de paquetes para tutoriales de aprendizaje y el complemento del compilador html para learnpack, asegúrate de tener también node.js 14+:
```bash
diff --git a/README.md b/README.md
index 6f9b0df..9f0d59d 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,10 @@
# 🐍 Python API Requests Tutorial and Exercises
By @alesanchezr and other contributors at 4Geeks Academy.
-
*Estas instrucciones [están disponibles en 🇪🇸 español](https://github.com/4GeeksAcademy/python-http-requests-api-tutorial-exercises/blob/master/README.es.md) :es:*
+
+
In this series you will Learn HTTP and how to use the Python Requests package to create HTTP Requests GET, POST, PUT, DELETE. The entire tutorial is 👆 interactive, ✅ auto-graded and with. 📹 video tutorials.
@@ -17,9 +18,10 @@ You can open these exercises in just a few seconds by clicking: [Open in Codespa
> Once you have VSCode open the LearnPack exercises should start automatically. If exercises don't run automatically you can try typing on your terminal: `$ learnpack start`
-
## Local Installation
+Clone the repository in your local environment and follow the steps below:
+
1. Install learnpack, the package manager for learning tutorials and the html compiler plugin for learnpack, make sure you also have node.js 14+:
```
From 9463887e7e496331e9f88c7e638865f349725978 Mon Sep 17 00:00:00 2001
From: Alejandro Sanchez
Date: Wed, 16 Aug 2023 14:08:32 -0400
Subject: [PATCH 02/33] Update learn.json
---
learn.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/learn.json b/learn.json
index 18b3203..7e42241 100644
--- a/learn.json
+++ b/learn.json
@@ -4,6 +4,7 @@
"description": "Create a Todo list API Interactively using Python language and the Flask Framework",
"repository": "https://github.com/4GeeksAcademy/python-http-requests-api-tutorial-exercises",
"videoSolutions": false,
+ "preview": "https://storage.googleapis.com/breathecode-asset-images/Screenshot%202023-08-16%20at%202.06.51%20PM.png",
"projectType": "tutorial",
"bugsLink": "https://github.com/learnpack/learnpack/issues/new",
From 1d8eeffe16e10f851ad35d6ec0e1c851eec70048 Mon Sep 17 00:00:00 2001
From: Alejandro Sanchez
Date: Wed, 16 Aug 2023 14:13:17 -0400
Subject: [PATCH 03/33] Update learn.json
---
learn.json | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/learn.json b/learn.json
index 7e42241..6e28cf4 100644
--- a/learn.json
+++ b/learn.json
@@ -1,15 +1,25 @@
{
"language": "python3",
- "slug": "python-flask-api-tutorial",
- "description": "Create a Todo list API Interactively using Python language and the Flask Framework",
+ "title": {
+ "us": "Learn how to build HTTP requests with Python",
+ "es": "Aprende a hacer requests HTTP con Python"
+ },
+ "slug": "python-http-requests-api-tutorial-exercises",
+ "description": {
+ "us": "Learn interactively to consume and create HTTP requests to API's using Python",
+ "es": "Aprende interactivamente cómo consumir APIs y hacer requests HTTP con Python"
+ },
"repository": "https://github.com/4GeeksAcademy/python-http-requests-api-tutorial-exercises",
+ "duration": 4,
"videoSolutions": false,
+ "difficulty": "easy",
"preview": "https://storage.googleapis.com/breathecode-asset-images/Screenshot%202023-08-16%20at%202.06.51%20PM.png",
+ "repository": "https://github.com/4GeeksAcademy/python-http-requests-api-tutorial-exercises",
"projectType": "tutorial",
+ "autoPlay": true,
"bugsLink": "https://github.com/learnpack/learnpack/issues/new",
-
- "editor": {
- "version": "1.0.73"
- }
+ "editor": {
+ "version": "1.0.73"
+ }
}
From 082ac08114456cffe83c40078591be9610ca1329 Mon Sep 17 00:00:00 2001
From: Alejandro Sanchez
Date: Wed, 16 Aug 2023 14:13:27 -0400
Subject: [PATCH 04/33] Update learn.json
---
learn.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/learn.json b/learn.json
index 6e28cf4..0f77ed9 100644
--- a/learn.json
+++ b/learn.json
@@ -1,5 +1,5 @@
{
- "language": "python3",
+ "language": "python",
"title": {
"us": "Learn how to build HTTP requests with Python",
"es": "Aprende a hacer requests HTTP con Python"
From 52f030660c805b2835a7a30d3ff2b3af8a730d44 Mon Sep 17 00:00:00 2001
From: Alejandro Sanchez
Date: Wed, 16 Aug 2023 14:16:15 -0400
Subject: [PATCH 05/33] Add files via upload
---
preview.png | Bin 0 -> 215350 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 preview.png
diff --git a/preview.png b/preview.png
new file mode 100644
index 0000000000000000000000000000000000000000..00ede431c27167270b2b430b71270dd11bc8714e
GIT binary patch
literal 215350
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