Skip to content

Commit

Permalink
adjust build_url and commands
Browse files Browse the repository at this point in the history
adjust build_url and commands
denarch22 committed Dec 4, 2024
1 parent 3a89512 commit 3275811
Showing 4 changed files with 76 additions and 29 deletions.
40 changes: 40 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -106,6 +106,46 @@ o
python src/main.py create --folder my_folder
```
---
## Sobrescribir una Colección Existente

Para sobrescribir una colección existente, ejecuta el siguiente comando:

python src/main.py create -f folder_name [-c collection_name] [-o]


### Parámetros:
- `-f, --folder` (obligatorio): Directorio con el archivo `collection.json` y las capas.
- `-c, --collection` (opcional): Nombre de la colección. Si no se proporciona, se tomará el `id` del archivo `collection.json`.
- `-o, --overwrite` (obligatorio): Permite sobrescribir una colección existente si ya existe. Si no se proporciona, la colección no será sobrescrita.

### Ejemplo:

* Sobrescribiendo una colección existente:

```
python src/main.py create -f my_folder -o
o
python src/main.py create --folder my_folder --overwrite
```


Este comando sobrescribirá la colección existente (si ya existe) usando los archivos en el directorio `input/my_folder`.

* Especificando un nombre de colección para sobrescribir:

```
python src/main.py create -f my_folder -c MyCollection -o
o
python src/main.py create --folder my_folder --collection MyCollection --overwrite
```


Este comando sobrescribirá la colección `MyCollection` si ya existe, usando los archivos en el directorio `input/my_folder`.

---

52 changes: 24 additions & 28 deletions src/main.py
Original file line number Diff line number Diff line change
@@ -28,7 +28,6 @@ def create_collection_local(collection, input_folder, collection_name):


def main():

parser = ArgumentParser(description="STAC Collection Manager")
sub_parsers = parser.add_subparsers(dest="command", help="Commands")

@@ -87,43 +86,40 @@ def main():
required=True,
)

try:
args = parser.parse_args()
args = parser.parse_args()

token = authenticate()
token = authenticate()

collection = Collection(token)
collection = Collection(token)

if args.command == "create":
input_folder = f"input/{args.folder}"
create_collection_local(collection, input_folder, args.collection)
if args.command == "create":
input_folder = f"input/{args.folder}"
create_collection_local(collection, input_folder, args.collection)

if collection.check_collection(args.overwrite):
collection.remove_collection()
logger.info("Previous collection removed.")
if collection.check_collection(args.overwrite):
collection.remove_collection()
logger.info("Previous collection removed.")

output_dir = f"{getcwd()}/output/{args.folder}"
collection.convert_layers(input_folder, output_dir)
logger.info("Layers converted successfully.")
output_dir = f"{getcwd()}/output/{args.folder}"
collection.convert_layers(input_folder, output_dir)
logger.info("Layers converted successfully.")

collection.upload_layers(output_dir)
collection.upload_collection()
logger.info("Collection uploaded successfully.")
collection.upload_layers(output_dir)
collection.upload_collection()
logger.info("Collection uploaded successfully.")

elif args.command == "validate":
input_folder = f"input/{args.folder}"
create_collection_local(collection, input_folder, args.collection)
logger.info("Validation successful.")
sysexit("Process completed successfully.")

elif args.command == "remove":
collection.remove_collection(args.collection)
logger.info("Collection removed successfully.")
elif args.command == "validate":
create_collection_local(collection, f"input/{args.folder}", args.collection)
logger.info("Validation successful.")

else:
sysexit("No command used. Type -h for help")
elif args.command == "remove":
collection.remove_collection(args.collection)
logger.info("Collection removed successfully.")

except SystemExit as e:
sysexit(e)
else:
sysexit("No command used. Type -h for help")


if __name__ == "__main__":
5 changes: 4 additions & 1 deletion src/utils/auth.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,8 @@
from sys import exit as sysexit
from config import get_settings

from utils.url import build_url

settings = get_settings()


@@ -18,7 +20,8 @@ def authenticate():

auth_data = {"username": username, "password": password}

response = requests.post(f"{stac_url}{auth_url}", data=auth_data)
url = build_url(stac_url, auth_url, args_dict={})
response = requests.post(url, data=auth_data)
response.raise_for_status()

token = response.json().get("access_token")
8 changes: 8 additions & 0 deletions src/utils/url.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from urllib.parse import urlencode, urlparse, urlunparse


def build_url(base_url, path=None, args_dict={}):
url_parts = list(urlparse(base_url))
url_parts[2] = path
url_parts[4] = urlencode(args_dict)
return urlunparse(url_parts)

0 comments on commit 3275811

Please sign in to comment.