> For the complete documentation index, see [llms.txt](https://apwt.gitbook.io/ziescherp-oefeningen/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apwt.gitbook.io/ziescherp-oefeningen/oefeningen-h13-tot-en-met-h18/gecombineerde-oefeningen/mtgapi.md).

# Magic The Gathering API

## In opbouw

Dit project hoort niet bij de leerstof, daar het het concept van API gebruikt dat we nog niet hebben gezien. Dit is echter zo eenvoudig dat ik hoop dat het sommige studenten zin geeft om verder exploreren.

## Samenvatting

* API=Application programming interface
* .NET bibliotheek die praat met [magicthegathering.io](https://magicthegathering.io/) (rate limited!)
* Broncode+ voorbeelden [hier](https://github.com/MagicTheGathering/mtg-sdk-dotnet)

## Nuget installeren

1. In project, rechterklikken op References -> Manage Nuget packages…
2. Klikken op Browse, zoeken naar "mtg"
3. MtgApiManager.Lib installeren

## Broncode

{% hint style="warning" %}
Volgende voorbeeld is gebaseerd op een oude versie van de nuget package en zal dus niet meer werken met de huidige. De auteur van dit boek (ikke) is te lui om de tutorial aan te passen en verwijst daarom naar [hier](https://github.com/MagicTheGathering/mtg-sdk-dotnet) waar tal van codevoorbeelden staan!
{% endhint %}

We maken een applicatie die aan de gebruiker alle edities van Magic toont. De gebruiker kiest vervolgens van welke editie hij een 'boosterpack' wenst te generen (boosterpack= pakje kaarten dat je in de winkel kan kopen met daarin een vast aantal kaarten waarvan ook steeds minstens 1 zeldzame kaart).

Voeg zeker bovenaan toe:

```csharp
using MtgApiManager.Lib.Service;
```

### Stap 1 : Set tonen

```csharp
 SetService service = new SetService();
var result = service.All();
foreach (var set in result.Value)
{
    Console.WriteLine($"{set.Name} ({set.Code})");
}
```

### Stap 2: Controleren op geldige set

```csharp
Console.WriteLine("Voor welke set wil je booster (voer code tussen haakjes in)?");

string code = Console.ReadLine().ToLower();
bool isValid = false;
foreach (var set in result.Value)
{
    if (set.Code.ToLower() == code)
    {
        isValid = true;
        break;
    }
}
```

### Stap 3: Boosterpack generen en tonen

```csharp
var boosterresult = service.GenerateBooster(code);
var boosterpack = boosterresult.Value;
if (boosterpack != null)
{
    for (int i = 0; i < boosterpack.Count; i++)
    {
        Console.WriteLine($"{i}:{boosterpack[i].Name}");

    }
}
```

### Stap 4: kaart tonen

Vragen welke kaart getoond moet worden

```csharp
 Console.WriteLine("Welke kaart wenst u meer info");
int keuze = Convert.ToInt32(Console.ReadLine());
Console.Clear();
MtgApiManager.Lib.Model.Card chosenCard = boosterpack[keuze];
Console.WriteLine(chosenCard.Name);
Console.WriteLine(chosenCard.Text);
Console.WriteLine(chosenCard.Rarity);
Console.WriteLine("Druk op enter om afbeelding te tonen");
Console.ReadLine();
System.Diagnostics.Process.Start(chosenCard.ImageUrl.ToString());
```

## Alle code samen

```csharp
SetService service = new SetService();
var result = service.All();
foreach (var set in result.Value)
{
    Console.WriteLine($"{set.Name} ({set.Code})");
}

Console.WriteLine("Voor welke set wil je booster (voer code tussen haakjes in)?");

string code = Console.ReadLine().ToLower();
bool isValid = false;
foreach (var set in result.Value)
{
    if (set.Code.ToLower() == code)
    {
        isValid = true;
        break;
    }
}
if (isValid)
{
    var boosterresult = service.GenerateBooster(code);
    var boosterpack = boosterresult.Value;
    if (boosterpack != null)
    {
        for (int i = 0; i < boosterpack.Count; i++)
        {
            Console.WriteLine($"{i}:{boosterpack[i].Name}");

        }
        Console.WriteLine("Welke kaart wenst u meer info");
        int keuze = Convert.ToInt32(Console.ReadLine());
        Console.Clear();
        MtgApiManager.Lib.Model.Card chosenCard = boosterpack[keuze];
        Console.WriteLine(chosenCard.Name);
        Console.WriteLine(chosenCard.Text);
        Console.WriteLine(chosenCard.Rarity);
        Console.WriteLine("Druk op enter om afbeelding te tonen");
        Console.ReadLine();
        System.Diagnostics.Process.Start(chosenCard.ImageUrl.ToString());
    }
    else
    {
        Console.WriteLine("Iets is mislukt, sorry");
    }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apwt.gitbook.io/ziescherp-oefeningen/oefeningen-h13-tot-en-met-h18/gecombineerde-oefeningen/mtgapi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
