Files
tribufu-dotnet/README.md
Guilherme Werner d791408793 Generate client with open-api-generator (#1)
* Generate project with open-api-generator

* Add example project

* Create wrapper class
2025-05-26 21:40:46 -03:00

17 KiB

Tribufu - the C# library for the Tribufu API

REST API to access Tribufu services.

This C# SDK is automatically generated by the OpenAPI Generator project:

  • API version: 1.1.0
  • SDK version: 1.0.0
  • Generator version: 7.8.0
  • Build package: org.openapitools.codegen.languages.CSharpClientCodegen For more information, please visit https://www.tribufu.com/contact

Frameworks supported

Dependencies

The DLLs included in the package may not be the latest version. We recommend using NuGet to obtain the latest version of the packages:

Install-Package Newtonsoft.Json
Install-Package JsonSubTypes
Install-Package System.ComponentModel.Annotations

Installation

Run the following command to generate the DLL

  • [Mac/Linux] /bin/sh build.sh
  • [Windows] build.bat

Then include the DLL (under the bin folder) in the C# project, and use the namespaces:

using Tribufu.Api;
using Tribufu.Client;
using Tribufu.Model;

Packaging

A .nuspec is included with the project. You can follow the Nuget quickstart to create and publish packages.

This .nuspec uses placeholders from the .csproj, so build the .csproj directly:

nuget pack -Build -OutputDirectory out Tribufu.csproj

Then, publish to a local feed or other host and consume the new package via Nuget as usual.

Usage

To use the API client with a HTTP proxy, setup a System.Net.WebProxy

Configuration c = new Configuration();
System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/");
webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
c.Proxy = webProxy;

Connections

Each ApiClass (properly the ApiClient inside it) will create an instance of HttpClient. It will use that for the entire lifecycle and dispose it when called the Dispose method.

To better manager the connections it's a common practice to reuse the HttpClient and HttpClientHandler (see here for details). To use your own HttpClient instance just pass it to the ApiClass constructor.

HttpClientHandler yourHandler = new HttpClientHandler();
HttpClient yourHttpClient = new HttpClient(yourHandler);
var api = new YourApiClass(yourHttpClient, yourHandler);

If you want to use an HttpClient and don't have access to the handler, for example in a DI context in Asp.net Core when using IHttpClientFactory.

HttpClient yourHttpClient = new HttpClient();
var api = new YourApiClass(yourHttpClient);

You'll loose some configuration settings, the features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. You need to either manually handle those in your setup of the HttpClient or they won't be available.

Here an example of DI setup in a sample web project:

services.AddHttpClient<YourApiClass>(httpClient =>
   new PetApi(httpClient));

Getting Started

using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using Tribufu.Api;
using Tribufu.Client;
using Tribufu.Model;

namespace Example
{
    public class Example
    {
        public static void Main()
        {

            Configuration config = new Configuration();
            config.BasePath = "http://localhost";
            // Configure API key authorization: ApiKey
            config.ApiKey.Add("Authorization", "YOUR_API_KEY");
            // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
            // config.ApiKeyPrefix.Add("Authorization", "Bearer");

            // create instances of HttpClient, HttpClientHandler to be reused later with different Api classes
            HttpClient httpClient = new HttpClient();
            HttpClientHandler httpClientHandler = new HttpClientHandler();
            var apiInstance = new TribufuApi(httpClient, config, httpClientHandler);
            var authorizeRequest = new AuthorizeRequest?(); // AuthorizeRequest? |  (optional) 

            try
            {
                // Authorize the client to access the user information.
                apiInstance.Authorize(authorizeRequest);
            }
            catch (ApiException e)
            {
                Debug.Print("Exception when calling TribufuApi.Authorize: " + e.Message );
                Debug.Print("Status Code: "+ e.ErrorCode);
                Debug.Print(e.StackTrace);
            }

        }
    }
}

Documentation for API Endpoints

All URIs are relative to http://localhost

Class Method HTTP request Description
TribufuApi Authorize POST /v1/oauth2/authorize Authorize the client to access the user information.
TribufuApi ChangeEmail PUT /v1/users/{id}/email Change the email of a user.
TribufuApi ChangePassword PUT /v1/users/{id}/password Change the password of a user.
TribufuApi ClaimGameServer PUT /v1/servers/{id}/claim Claim a game server.
TribufuApi ConvertBase64 POST /v1/utils/base64 Convert a string to base64 or vice versa.
TribufuApi CreateGameServer POST /v1/servers Create a new game server.
TribufuApi CreateGameServerCluster POST /v1/clusters Create a new game server cluster.
TribufuApi CreateGroup POST /v1/groups Create a new group.
TribufuApi CreateToken POST /v1/oauth2/token Create a new token with grant type.
TribufuApi DeleteGameServer DELETE /v1/servers/{id} Delete a game server.
TribufuApi DeleteGameServerCluster DELETE /v1/clusters/{id} Delete a game server cluster.
TribufuApi DeleteGroup DELETE /v1/groups/{id} Delete a group.
TribufuApi GenerateFlakeId GET /v1/utils/flake Generate one or more flake ids.
TribufuApi GenerateFlakeIdFromTimestamp GET /v1/utils/flake/{timestamp} Generate one or more flake ids from a timestamp.
TribufuApi GeneratePassword GET /v1/utils/password Generate a random password.
TribufuApi GenerateUuid GET /v1/utils/uuid Generate one or more uuids with a specific version.
TribufuApi GetClientInfo GET /v1/oauth2/clientinfo Get current client information.
TribufuApi GetCurrentIpAddress GET /v1/geoip Get current ip address location.
TribufuApi GetGameById GET /v1/games/{id} Get a game by id.
TribufuApi GetGameClustersByGameId GET /v1/games/{id}/clusters Get a list of game server clusters of a game.
TribufuApi GetGameItems GET /v1/games/{id}/items Get a list of game items.
TribufuApi GetGameServerByAddressAndQueryPort GET /v1/servers/address/{address}:{port} Get a game server by address and query port.
TribufuApi GetGameServerById GET /v1/servers/{id} Get a game server by id.
TribufuApi GetGameServerClusterById GET /v1/clusters/{id} Get a game server cluster by id.
TribufuApi GetGameServerClusters GET /v1/clusters Get a list of game server clusters.
TribufuApi GetGameServers GET /v1/servers Get a list of game servers.
TribufuApi GetGameServersByCountry GET /v1/servers/country/{country} Get a list of game servers from a country.
TribufuApi GetGameServersByGameId GET /v1/games/{id}/servers Get a list of game servers of a game.
TribufuApi GetGameServersCountries GET /v1/servers/countries Get a list of countries with the number of game servers.
TribufuApi GetGameServersMetrics GET /v1/servers/metrics Get metrics about the tracked game servers.
TribufuApi GetGames GET /v1/games Get a list of games.
TribufuApi GetGroupById GET /v1/groups/{id} Get a group by id.
TribufuApi GetGroupByTag GET /v1/groups/tag/{tag} Get a group by tag.
TribufuApi GetGroupByUuid GET /v1/groups/uuid/{uuid} Get a group by uuid.
TribufuApi GetGroupGames GET /v1/groups/{id}/games Get a list of games of a group.
TribufuApi GetGroupMembers GET /v1/groups/{id}/members Get a list of members in a group.
TribufuApi GetGroups GET /v1/groups Get a list of groups.
TribufuApi GetIpAddress GET /v1/geoip/addresses/{address} Get a ip address location.
TribufuApi GetIpAddresses GET /v1/geoip/addresses Get a list of ip addresses.
TribufuApi GetLeaderboard GET /v1/leaderboard Get the top 20 leaderboard users.
TribufuApi GetMe GET /v1/me Get current user information.
TribufuApi GetPackageById GET /v1/packages/{id} Get a package by id.
TribufuApi GetPackages GET /v1/packages Get a list of packages.
TribufuApi GetPublicKeys GET /v1/oauth2/jwks Get the public keys for the client.
TribufuApi GetSubscriptionById GET /v1/subscriptions/{id} Get a subscription by id.
TribufuApi GetSubscriptions GET /v1/subscriptions Get a list of subscriptions.
TribufuApi GetUserAccounts GET /v1/users/{id}/accounts Get a list of connected accounts of the user.
TribufuApi GetUserById GET /v1/users/{id} Get a user profile by id.
TribufuApi GetUserByName GET /v1/users/name/{name} Get a user profile by name.
TribufuApi GetUserByUuid GET /v1/users/uuid/{uuid} Get a user profile by uuid.
TribufuApi GetUserFriends GET /v1/users/{id}/friends Get a list of friends of the user.
TribufuApi GetUserGames GET /v1/users/{id}/games Get a list of games the user has played.
TribufuApi GetUserGroups GET /v1/users/{id}/groups Get a list of groups the user is a member of.
TribufuApi GetUserInfo GET /v1/oauth2/userinfo Get current user information.
TribufuApi GetUserPunishments GET /v1/users/{id}/punishments Get a list of punishments the user has received.
TribufuApi GetUserServers GET /v1/users/{id}/servers Get a list of servers the user is owner of.
TribufuApi GetUsers GET /v1/users Get a list of user profiles.
TribufuApi HashArgon2 POST /v1/utils/argon2 Hash a string using argon2.
TribufuApi HashBcrypt POST /v1/utils/bcrypt Hash a string using bcrypt.
TribufuApi HashMd5 POST /v1/utils/md5 Hash a string using md5.
TribufuApi HashSha256 POST /v1/utils/sha256 Hash a string using sha256.
TribufuApi IntrospectToken POST /v1/oauth2/introspect Introspect a token.
TribufuApi Login POST /v1/login Login with name or email and password.
TribufuApi Logout POST /v1/logout Invalidate credentials.
TribufuApi Refresh POST /v1/refresh Refresh credentials.
TribufuApi Register POST /v1/register Create a new user.
TribufuApi RevokeToken POST /v1/oauth2/revoke Revoke a token.
TribufuApi Search POST /v1/search Advanced search for servers or players.
TribufuApi UpdateGameServer PUT /v1/servers/{id} Update a game server.
TribufuApi UpdateGameServerCluster PUT /v1/clusters/{id} Update a game server cluster.
TribufuApi UpdateGroup PUT /v1/groups/{id} Update a group.
TribufuApi UpdateUserProfile PUT /v1/users/{id}/profile Update a user profile.

Documentation for Models

Documentation for Authorization

Authentication schemes defined for the API:

ApiKey

  • Type: API key
  • API key parameter name: Authorization
  • Location: HTTP header