FastComments.com

SDK Java do FastComments


Isto é o SDK Java oficial para FastComments.

SDK Java oficial para a API do FastComments

Repositório

Visualizar no GitHub


Instalação Internal Link

Maven

Adicione o repositório Repsy ao POM do seu projeto:

<repositories>
    <repository>
        <id>repsy</id>
        <name>FastComments Maven Repository on Repsy</name>
        <url>https://repo.repsy.io/mvn/winrid/fastcomments</url>
    </repository>
</repositories>

Then add the dependencies you need:

<dependencies>
    <!-- API Client -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>client</artifactId>
        <version>2.0.0</version>
    </dependency>
    
    <!-- Core Library (includes SSO) -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>core</artifactId>
        <version>2.0.0</version>
    </dependency>
    
    <!-- PubSub Library (for live events) -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>pubsub</artifactId>
        <version>2.0.0</version>
    </dependency>
</dependencies>

Gradle

Adicione o repositório Repsy ao seu arquivo build.gradle:

repositories {
    mavenCentral()
    maven {
        url "https://repo.repsy.io/mvn/winrid/fastcomments"
    }
}

dependencies {
    // API Client
    implementation "com.fastcomments:client:2.0.0"
    
    // Core Library (includes SSO)
    implementation "com.fastcomments:core:2.0.0"
    
    // PubSub Library (for live events)
    implementation "com.fastcomments:pubsub:2.0.0"
}

Library Contents

Esta biblioteca contém três módulos. O cliente de API gerado, a biblioteca Java core que contém utilitários escritos à mão para facilitar o trabalho com a API, e o módulo pubsub, que é uma biblioteca para assinar feeds de alterações.

Public vs Secured APIs

Para o cliente de API, há três classes, DefaultApi, PublicApi, e ModerationApi. O DefaultApi contém métodos que requerem sua chave de API, e o PublicApi contém métodos que podem ser executados diretamente de um navegador/dispositivo móvel/etc sem autenticação.

O ModerationApi alimenta o painel do moderador. Ele contém métodos para moderação de comentários (listar, contar, pesquisar, registros e exportar), ações de moderação (remover/restaurar, sinalizar, definir status de revisão/spam/aprovação, votos, e reabrir/fechar thread), banimentos (banir de comentar, desfazer um banimento, resumos pré-banimento, status e preferências de banimento, e contagens de usuários banidos), e badges & trust (conceder/remover um badge, badges manuais, obter/definir fator de confiança, e perfil interno do usuário). Todo método do ModerationApi aceita um parâmetro sso para que a chamada possa ser realizada em nome de um moderador autenticado via SSO.

Início Rápido Internal Link

Usando APIs Autenticadas (DefaultApi)

Importante: Você deve definir sua chave de API no ApiClient antes de fazer requisições autenticadas. Se não fizer isso, as requisições falharão com um erro 401.

import com.fastcomments.invoker.ApiClient;
import com.fastcomments.invoker.ApiException;
import com.fastcomments.api.DefaultApi;
import com.fastcomments.model.*;

public class Example {
    public static void main(String[] args) {
        // Create and configure the API client
        ApiClient apiClient = new ApiClient();

        // REQUIRED: Set your API key (get this from your FastComments dashboard)
        apiClient.setApiKey("YOUR_API_KEY_HERE");

        // Create the API instance with the configured client
        DefaultApi api = new DefaultApi(apiClient);

        // Now you can make authenticated API calls
        try {
            // Example: Add an SSO user
            CreateAPISSOUserData userData = new CreateAPISSOUserData();
            userData.setId("user-123");
            userData.setEmail("user@example.com");
            userData.setDisplayName("John Doe");

            AddSSOUserAPIResponse response = api.addSSOUser("YOUR_TENANT_ID", userData)
                .execute();
            System.out.println("User created: " + response);

        } catch (ApiException e) {
            System.err.println("Error: " + e.getResponseBody());
            // Common errors:
            // - 401: API key is missing or invalid
            // - 400: Request validation failed
        }
    }
}

Usando APIs Públicas (PublicApi)

Endpoints públicos não requerem autenticação:

import com.fastcomments.api.PublicApi;
import com.fastcomments.invoker.ApiException;

PublicApi publicApi = new PublicApi();

try {
    var response = publicApi.getCommentsPublic("YOUR_TENANT_ID", "page-url-id")
        .execute();
    System.out.println(response);
} catch (ApiException e) {
    e.printStackTrace();
}

Usando APIs de Moderação (ModerationApi)

A ModerationApi alimenta o painel do moderador. Cada método aceita um parâmetro sso identificando o moderador autenticado via SSO em cujo nome a requisição é feita:

import com.fastcomments.api.ModerationApi;
import com.fastcomments.invoker.ApiException;
import com.fastcomments.model.*;

ModerationApi moderationApi = new ModerationApi();

try {
    // List comments awaiting moderation
    ModerationAPIGetCommentsResponse response = moderationApi.getApiComments()
        .sso("YOUR_SSO_TOKEN")
        .execute();
    System.out.println(response);
} catch (ApiException e) {
    e.printStackTrace();
}

Problemas Comuns

  1. 401 "missing-api-key" error: Certifique-se de chamar apiClient.setApiKey("YOUR_KEY") antes de criar a instância do DefaultApi.
  2. Wrong API class: Use DefaultApi para requisições autenticadas no lado do servidor, PublicApi para requisições do lado do cliente/públicas.
  3. Null API key: O SDK ignorará a autenticação silenciosamente se a chave de API for nula, resultando em erros 401.

Notas Internal Link

IDs de Broadcast

Você verá que deve passar um broadcastId em algumas chamadas de API. Quando você receber eventos, esse ID será retornado, então você saberá ignorar o evento se planejar aplicar alterações otimisticamente no cliente (o que você provavelmente desejará fazer, pois oferece a melhor experiência). Passe um UUID aqui. O ID deve ser suficientemente único para não ocorrer duas vezes em uma sessão do navegador.

Precisa de ajuda?

Se você encontrar algum problema ou tiver dúvidas sobre o SDK Java, por favor:

Contribuindo

Contribuições são bem-vindas! Por favor, visite o repositório no GitHub para as diretrizes de contribuição.