Class: RailsInformant::Mcp::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_informant/mcp/client.rb

Constant Summary collapse

Error =
Class.new(StandardError)
METHODS =
{
  delete: Net::HTTP::Delete,
  get: Net::HTTP::Get,
  patch: Net::HTTP::Patch,
  post: Net::HTTP::Post
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(url:, token:, allow_insecure: false, path_prefix: "/informant") ⇒ Client

Returns a new instance of Client.



17
18
19
20
21
22
23
24
# File 'lib/rails_informant/mcp/client.rb', line 17

def initialize(url:, token:, allow_insecure: false, path_prefix: "/informant")
  @base_url = url.chomp("/")
  @token = token
  @allow_insecure = allow_insecure
  @path_prefix = path_prefix.chomp("/")
  @_base_uri = URI.parse(@base_url)
  validate_url!
end

Instance Method Details

#delete_error(id) ⇒ Object



40
41
42
# File 'lib/rails_informant/mcp/client.rb', line 40

def delete_error(id)
  perform :delete, "#{@path_prefix}/api/v1/errors/#{Integer(id)}"
end

#fix_pending(id, fix_sha:, original_sha:, fix_pr_url: nil) ⇒ Object



44
45
46
# File 'lib/rails_informant/mcp/client.rb', line 44

def fix_pending(id, fix_sha:, original_sha:, fix_pr_url: nil)
  perform :patch, "#{@path_prefix}/api/v1/errors/#{Integer(id)}/fix_pending", body: { fix_sha:, original_sha:, fix_pr_url: }.compact
end

#get_error(id) ⇒ Object



32
33
34
# File 'lib/rails_informant/mcp/client.rb', line 32

def get_error(id)
  perform :get, "#{@path_prefix}/api/v1/errors/#{Integer(id)}"
end

#list_errors(status: nil, error_class: nil, q: nil, since: nil, page: nil, per_page: nil, controller_action: nil, job_class: nil, severity: nil, **extra) ⇒ Object



26
27
28
29
30
# File 'lib/rails_informant/mcp/client.rb', line 26

def list_errors(status: nil, error_class: nil, q: nil, since: nil, page: nil, per_page: nil, controller_action: nil, job_class: nil, severity: nil, **extra)
  params = { controller_action:, error_class:, job_class:, q:, severity:, since:, status:, page:, per_page: }
  params[:until] = extra[:until] if extra[:until]
  perform :get, "#{@path_prefix}/api/v1/errors", params: params.compact
end

#list_occurrences(error_group_id: nil, since: nil, page: nil, per_page: nil, **extra) ⇒ Object



52
53
54
55
56
# File 'lib/rails_informant/mcp/client.rb', line 52

def list_occurrences(error_group_id: nil, since: nil, page: nil, per_page: nil, **extra)
  params = { error_group_id:, since:, page:, per_page: }
  params[:until] = extra[:until] if extra[:until]
  perform :get, "#{@path_prefix}/api/v1/occurrences", params: params.compact
end

#mark_duplicate(id, duplicate_of_id:) ⇒ Object



48
49
50
# File 'lib/rails_informant/mcp/client.rb', line 48

def mark_duplicate(id, duplicate_of_id:)
  perform :patch, "#{@path_prefix}/api/v1/errors/#{Integer(id)}/duplicate", body: { duplicate_of_id: }
end

#notify_deploy(sha:) ⇒ Object



58
59
60
# File 'lib/rails_informant/mcp/client.rb', line 58

def notify_deploy(sha:)
  perform :post, "#{@path_prefix}/api/v1/deploy", body: { sha: }
end

#statusObject



62
63
64
# File 'lib/rails_informant/mcp/client.rb', line 62

def status
  perform :get, "#{@path_prefix}/api/v1/status"
end

#update_error(id, params) ⇒ Object



36
37
38
# File 'lib/rails_informant/mcp/client.rb', line 36

def update_error(id, params)
  perform :patch, "#{@path_prefix}/api/v1/errors/#{Integer(id)}", body: params
end