Esse projeto foi criado com o intuito de fornecer uma interface amigável de intergração com o tabnews
Para começar a usar o tabnews-sdk dentro do seu projeto basta instalar com o seu gerenciador de pacotes favorito
npm install tabnews-sdk
yarn add tabnews-sdk
pnpm add tabnews-sdk
Para iniciar o cliente do basta instanciar a classe TabNews, as credencias são opcionais,
mas podem ser setadas por um arquivo .env
ou direto no código conforme abaixo
Instanciar sem credentials
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
Instanciar com credentials no arquivo .env
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
TABNEWS_CREDENTIALS_EMAIL=<seu email>
TABNEWS_CREDENTIALS_PASSWORD=<sua senha>
Instanciar com credentials no código
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews({
credentials: {
email: '<seu email>',
password: '<sua senha>',
},
});
A sessão tem dois métodos create
e destroy
, após a criação da sessão
a biblioteca ira gerenciar automaticamente a sessão criando uma nova quando houver
expiração do token, caso deseje consultar a api sem uma sessão apenas não chame o
método create
, contudo algumas rotas gerarão erros por falta de permissão
Exemplo com sessão gerenciada
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const session = await tabNews.session.create(); // sessão criada
const contents = await tabNews.contents.getAll();
await tabNews.session.destroy(); // sessão destruida
Exemplo com sessão não gerenciada
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const { contents } = await tabNews.contents.getAll();
A api de usuários permite que buscar dados do usuário logado, atualizar e listar.
Buscar usuário logado
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
const user = await tabNews.user.me();
A api conteúdos permite listar todos os posts/comentários dentro do tabnews, alguns dos exemplos de como interagir com essa api está abaixo:
Buscar Conteúdos
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const { pagination, contents } = await tabNews.contents.getAll();
Buscar Conteúdos Paginados
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const { pagination, contents } = await tabNews.contents.getAll({
page: 1,
per_page: 30,
strategy: 'relevant',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const { pagination, contents } = await tabNews.contents.getAll({
page: 2,
per_page: 50,
strategy: 'relevant',
});
const prevContents = await tabNews.contents.getAll({
page: pagination.previous_page,
per_page: 50,
strategy: 'relevant',
});
const nextContents = await tabNews.contents.getAll({
page: pagination.next_page,
per_page: 50,
strategy: 'relevant',
});
Buscar Conteúdos de um Usuário
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const { pagination, contents } = await tabNews.contents.getAll({
username: '<any_username>',
page: 1,
per_page: 30,
strategy: 'relevant',
});
Buscar Conteúdos para o Usuário atual
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
const { pagination, contents } = await tabNews.contents.getMy({
page: 1,
per_page: 30,
strategy: 'relevant',
});
Buscar Detalhe do Conteúdo
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const content = await tabNews.contents.getBySlug({
slug: '<slug>',
username: '<username>',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
// Não é preciso passar o username pois internamente a bliblioteca ira realizar o fecth do usuario atual
const content = await tabNews.contents.getBySlug({
slug: '<slug>',
});
Buscar Comentarios do Conteúdo
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const contentChildren = await tabNews.contents.getChildren({
slug: '<slug>',
username: '<username>',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
// Não é preciso passar o username pois internamente a bliblioteca ira realizar o fecth do usuario atual
const contentChildren = await tabNews.contents.getChildren({
slug: '<slug>',
});
Buscar Conteúdo Pai
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const parentContent = await tabNews.contents.getParent({
slug: '<slug>',
username: '<username>',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
// Não é preciso passar o username pois internamente a bliblioteca ira realizar o fecth do usuario atual
const parentContent = await tabNews.contents.getParent({
slug: '<slug>',
});
Buscar Conteúdo Raiz
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const rootContent = await tabNews.contents.getRoot({
slug: '<slug>',
username: '<username>',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
// Não é preciso passar o username pois internamente a bliblioteca ira realizar o fecth do usuario atual
const rootContent = await tabNews.contents.getRoot({
slug: '<slug>',
});
Up or Down Vote Conteúdo
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const tabcoins1 = await tabNews.contents.tabcoins({
slug: '<slug>',
username: '<username>',
transaction_type: 'credit',
});
// or
const tabcoins2 = await tabNews.contents.upVote({
slug: '<slug>',
username: '<username>',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
// Não é preciso passar o username pois internamente a bliblioteca ira realizar o fecth do usuario atual
const tabcoins1 = await tabNews.contents.tabcoins({
slug: '<slug>',
username: '<username>',
transaction_type: 'debit',
});
// or
const tabcoins2 = await tabNews.contents.downVote({
slug: '<slug>',
username: '<username>',
});
Criar Conteúdo
Na rota de criação de conteúdos, todos os campos são opcionais exceto o body
,
que é o seu post ou comentario, e o title
que é opcional apenas quando há um parent_id
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
const response = await tabNews.contents.create({
parent_id: undefined,
slug: 'e-opcional',
title: 'test',
body: 'test',
status: 'published',
source_url: 'https://google.com',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const { contents } = await tabNews.contents.getAll();
await tabNews.session.create();
const response = await tabNews.contents.create({
parent_id: contents[0].id,
body: 'comentando em um conteúdo',
status: 'published',
});
Atualizar Conteúdo
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const content = await tabNews.contents.update({
slug: '<slug>',
username: '<username>',
title: 'title',
body: 'body',
status: 'published',
source_url: 'https://some.url',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
// Não é preciso passar o username pois internamente a bliblioteca ira realizar o fecth do usuario atual
const content = await tabNews.contents.update({
slug: '<slug>',
title: 'title',
body: 'body',
status: 'published',
source_url: 'https://some.url',
});
Deletar Conteúdo
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
const content = await tabNews.contents.delete({
slug: '<slug>',
username: '<username>',
});
import { TabNews } from 'tabnews-sdk';
const tabNews = new TabNews();
await tabNews.session.create();
// Não é preciso passar o username pois internamente a bliblioteca ira realizar o fecth do usuario atual
const content = await tabNews.contents.delete({
slug: '<slug>',
});