API do ScreenCord: login com Discord, amigos, grupos em tempo real (SignalR) e relay das transmissões. ASP.NET Core/.NET 10.
翻訳待ち
Loading the full README.
Read the full README ↗Este repositório contém a API central (
src/ScreenCord.Api), seus testes e os contratos compartilhados (src/ScreenCord.Contracts). O aplicativo desktop fica no repositório screencord.app. Os contratos existem nos dois repositórios: ao mudar um DTO, atualize os dois.
Sistema com dois componentes:
Importante: os "amigos" aqui são do ScreenCord, não a sua lista de amigos do Discord. A API oficial do Discord não permite ler a lista de amigos (veja Limitações reais da API do Discord). Para alguém aparecer na busca, essa pessoa precisa ter entrado neste sistema com a conta dela.
client_secret).GET /users/@me: nome de exibição, nome de usuário, ID, avatar e URL do avatar.@fulano), enviar solicitação, aceitar, recusar, cancelar e remover amigo (com confirmação).conectados/integrantes (ex.: 1/2). Quem está conectado aparece listado (foto e nome) logo abaixo do grupo; a seta à esquerda recolhe ou expande essa lista. Clicar no nome conecta você à sala; clicar na contagem abre os integrantes (foto, nome e quem está conectado) e permite adicionar amigos. Qualquer integrante adiciona os próprios amigos ou sai do grupo; só quem criou o grupo vê Excluir grupo, que o apaga para todos (com confirmação). Entradas e saídas aparecem na hora para todos.GET /limits, ajustável no painel /admin sem novo deploy); nas salas locais do app, em que a mídia vai direto entre os computadores, até 1080p a 60 fps e 5000 kbps. A taxa de bits não é escolhida: começa no teto e se adapta à conexão de quem compartilha, sem passar dele. O padrão é a maior qualidade a 30 fps dentro do limite, com áudio; a última escolha é lembrada enquanto o app está aberto. Durante o compartilhamento, a engrenagem ao lado de parar abre a mesma escolha para alterar as configurações (ou a tela/janela): o compartilhamento recomeça por baixo dos panos e quem está assistindo continua vendo, já com a nova configuração. Quem compartilha aparece com o selo AO VIVO na lista de conectados; clicar nele mostra a transmissão na área principal da janela, uma de cada vez (abrir outra troca a atual; o X da barra para de assistir), com volume, mudo e tela cheia (botão, F11 ou duplo clique; Esc, F11 ou duplo clique para sair). Clicar em AO VIVO de outro grupo entra na sala dele antes. Sair da sala, trocar de sala ou perder a conexão encerra o compartilhamento e fecha a transmissão que você assistia.http://127.0.0.1:47821/callback.client_secret).O único escopo solicitado é identify.
O mesmo Application ID vai nos dois componentes, em arquivos appsettings.Local.json (ignorados pelo Git):
src/ScreenCord/appsettings.Local.json (aplicativo):
{
"Discord": { "ClientId": "SEU_APPLICATION_ID" }
}
src/ScreenCord.Api/appsettings.Local.json (API):
{
"Discord": { "ClientId": "SEU_APPLICATION_ID" }
}
A API usa o Client ID para recusar tokens do Discord emitidos para outros aplicativos.
Opções do aplicativo:
| Chave | Padrão | Descrição |
|---|---|---|
Discord:ClientId | (vazio) | Application ID. Obrigatório. |
Discord:RedirectPort | 47821 | Porta do callback local. Se mudar, atualize o redirect no portal. |
Discord:Scopes | identify | Escopos separados por espaço. |
Discord:LoginTimeoutSeconds | 300 | Espera máxima pela autorização no navegador. |
Api:BaseUrl | http://localhost:5080 | Endereço da API central. Precisa ser https, exceto para localhost. |
Opções da API:
| Chave | Padrão | Descrição |
|---|---|---|
Discord:ClientId | (vazio) | Application ID. Obrigatório. |
ConnectionStrings:Default | Data Source=screencord.db | Banco SQLite. |
Session:LifetimeDays | 30 | Validade da sessão da API. |
This is the beginning of the README. Read the rest at the original. Read the full README ↗