Simple test

Run this test on a WiFi capable CircuitPython device to ensure it works.

examples/json_stream_simpletest.py
 1# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
 2# SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries
 3#
 4# SPDX-License-Identifier: Unlicense
 5
 6import ssl
 7import time
 8import adafruit_requests
 9import socketpool
10import wifi
11import adafruit_json_stream as json_stream
12
13pool = socketpool.SocketPool(wifi.radio)
14session = adafruit_requests.Session(pool, ssl.create_default_context())
15
16SCORE_URL = "http://site.api.espn.com/apis/site/v2/sports/baseball/mlb/scoreboard"
17
18while True:
19    resp = session.get(SCORE_URL)
20    json_data = json_stream.load(resp.iter_content(32))
21    for event in json_data["events"]:
22        if "Seattle" not in event["name"]:
23            continue
24        for competition in event["competitions"]:
25            for competitor in competition["competitors"]:
26                print(competitor["team"]["displayName"], competitor["score"])
27    resp.close()
28    time.sleep(60)

CPython test

Run this with python examples/json_stream_local_file.py <filename> to test in CPython.

examples/json_stream_simpletest.py
 1# SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries
 2#
 3# SPDX-License-Identifier: Unlicense
 4
 5import sys
 6
 7import adafruit_json_stream as json_stream
 8
 9# import json_stream
10
11
12class FakeResponse:
13    def __init__(self, file):
14        self.file = file
15
16    def iter_content(self, chunk_size):
17        while True:
18            yield self.file.read(chunk_size)
19
20
21f = open(sys.argv[1], "rb")  # pylint: disable=consider-using-with
22obj = json_stream.load(FakeResponse(f).iter_content(32))
23
24currently = obj["currently"]
25print(currently)
26print(currently["time"])
27print(currently["icon"])
28
29for i, day in enumerate(obj["daily"]["data"]):
30    print(day["time"], day["summary"], day["temperatureHigh"])
31    if i > 6:
32        break
33
34for source in obj["flags"]["sources"]:
35    print(source)