# eindopdracht in dit document staat overal pokémon verkeerd geschreven als pokemon om alle broncode ascii-vriendelijk te houden. combinatie readme en kladblok tijdens ontwikkeling ## gebruikte libraries - versies moeten nog gedocumenteerd worden - er wordt er vanuit gegaan dat deze libraries als systeemheaders geïnstalleerd zijn - [nlohmann/json](https://github.com/nlohmann/json) voor json (de)serializen - [cpr](https://github.com/libcpr/cpr) voor https requests - [libzip](https://libzip.org/) voor zip bestanden maken - [csv2](https://github.com/p-ranav/csv2) voor csv bestanden (de)serializen ## functionaliteit (pseudocode) ``` parse_cli_arguments() init_update_cache() case cli_argument.count 0: // no arguments (interactive mode) while 1: id = input_text("card id?: ") list = filter_card_list(id) if list.count > 1: card = choose_single_card() else: card = list[0] display_card_with_value_info(card) 1, 2: // input csv with optional output json (semi-interactive mode) ids = parse_csv() cards = [] for id in ids: card = get_card_by_id(id) display_card(card) cards += card; if cli_argument.count == 2: export_cards_as_zip(cli_argument[0]) else if input_yn("export? [Y/n]: "): output_filename = input_text("export filename?: ") export_cards_as_zip(output_filename) ``` ## cache formaat (voorbeeld) ``` cache/ date index swshp-SWSH001/ info.json card.png card_hires.png swshp-SWSH002/ info.json card.png card_hires.png swshp-SWSH..../ ``` - `date` bevat een unix timestamp wanneer de cache voor het laatst geupdate is (gebruikt om te checken of de cache stale is) - de mappen direct onder de cache map zijn de volledige id's van de pokemon - `index` bevat op losse regels de namen van de mappen met pokemon info - `info.json` bevat voor elke kaart de json api response voor die kaart ## zip formaat (voorbeeld) ``` output.zip/ cards.csv swshp-SWSH001.png swshp-SWSH002.png swshp-SWSH.... ``` - `cat cards.csv`: ``` id,value swshp-SWSH001,3.00 swshp-SWSH002,2.59 swshp-SWSH.... ``` (punt voor decimale punt inplaats van komma) - de kaart foto's zijn de -hires variant ## klassen (wip) - PokemonCard - PokemonTCGAPIClient - CacheManager - DownloadManager - ZipExport