1. import requests
  2. import json
  3. def load_resources_from_url_params(url_params):
  4. """
  5. Loads resources from URL parameters using requests and handles JSON responses.
  6. """
  7. try:
  8. # Construct the URL with parameters
  9. url = url_params['url']
  10. params = url_params.get('params', {}) # Get parameters, default to empty dict if missing
  11. # Make the request
  12. response = requests.get(url, params=params)
  13. response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
  14. # Check Content-Type and parse accordingly
  15. content_type = response.headers.get('Content-Type', '').lower()
  16. if 'application/json' in content_type:
  17. resources = response.json() # Parse JSON response
  18. elif 'text/csv' in content_type:
  19. import csv
  20. from io import StringIO
  21. csv_data = StringIO(response.text)
  22. reader = csv.reader(csv_data)
  23. resources = list(reader) # Convert to list of lists
  24. else:
  25. resources = response.text # Default to plain text
  26. return resources
  27. except requests.exceptions.RequestException as e:
  28. print(f"Error during request: {e}")
  29. return None
  30. except json.JSONDecodeError as e:
  31. print(f"Error decoding JSON: {e}")
  32. return None
  33. except Exception as e:
  34. print(f"An unexpected error occurred: {e}")
  35. return None
  36. if __name__ == '__main__':
  37. # Example Usage:
  38. url_params = {
  39. 'url': 'https://jsonplaceholder.typicode.com/todos',
  40. 'params': {'userId': 1}
  41. }
  42. resources = load_resources_from_url_params(url_params)
  43. if resources:
  44. print("Resources loaded successfully:")
  45. #print(json.dumps(resources, indent=2)) # Print nicely formatted JSON
  46. for item in resources[:5]: # Print first 5 items if JSON
  47. print(item)
  48. else:
  49. print("Failed to load resources.")

Add your comment