Skip to content

About

Cliente Ruby puro para a API GraphQL do Linear

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

linear_client

Cliente Ruby puro para a API GraphQL do Linear — sem gems externas, apenas a stdlib (net/http, uri, json).

Não há SDK oficial para Ruby; este projeto preenche essa lacuna com uma interface simples para criar issues, comentar e consultar dados no Linear.

Instalação

gem install linear_client

ou no Gemfile:

gem "linear_client"

Configuração

  1. Gere uma API key pessoal no Linear em Settings > Account > Security > API keys.
  2. Exporte a chave como variável de ambiente (nunca hardcode no código):
export LINEAR_API_KEY="lin_api_xxxxxxxx"

Trate a API key como uma senha: não a compartilhe, não a commit em arquivos versionados, e revogue/gere outra se ela vazar.

Uso

require "linear_client"

client = LinearClient::Client.new
# ou, explicitamente:
client = LinearClient::Client.new(api_key: "lin_api_xxxxxxxx")

Descobrir times

client.teams
# => [{"id"=>"...", "name"=>"Engineering", "key"=>"ENG"}, ...]

Criar um card e comentar

result = client.create_issue(team_id: "TEAM_ID", title: "Bug no login", description: "Detalhes...")
issue_id = result.dig("issue", "id")

client.create_comment(issue_id: issue_id, body: "Já reproduzi, investigando.")

Listar issues atribuídas a você

client.my_issues.each { |i| puts "#{i['identifier']} [#{i['state']['name']}] #{i['title']}" }

Dados do usuário autenticado

client.viewer
# => {"name"=>"...", "email"=>"..."}

Referência da API

Método Descrição Retorno
teams Lista os times do workspace (id, name, key) Array<Hash>
viewer Nome e e-mail do dono da API key Hash
my_issues Issues atribuídas ao dono da API key, com prioridade, datas, estado e time Array<Hash>
create_issue(team_id:, title:, description: nil) Cria um card num time Hash com "success" e "issue" (id, identifier, title, url)
create_comment(issue_id:, body:) Comenta num card existente Hash com "success" e "comment" (id, url)

Todos os métodos lançam LinearClient::Client::Error se a API retornar erros GraphQL.

Testes

Suíte em RSpec, com WebMock simulando as respostas da API (nenhum teste bate na rede real):

bundle install
bundle exec rspec

Scripts de exemplo

# Lista os times e cria um card de teste no time indicado pelo key (ex: ENG)
ruby examples/create_issue.rb ENG

# Lista as issues atribuídas a você
ruby examples/my_issues.rb

# Exporta viewer + issues atribuídas para JSON
ruby examples/report.rb caminho/para/saida.json

Notas de segurança

  • A API key vai no header Authorization (sem prefixo Bearer), conforme exigido pela API do Linear.
  • Nunca dê commit em arquivos .env ou qualquer arquivo com a chave em texto puro — este repositório já ignora .env via .gitignore.

Licença

MIT

About

Cliente Ruby puro para a API GraphQL do Linear

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages