{"record":{"id":"46393db549c1cfc6","repo":"CanineHQ/canine","slug":"failed-to-fetch-repositories-response-body","errorCode":null,"errorMessage":"Failed to fetch repositories: #{response.body}","messagePattern":"Failed to fetch repositories: #(.+?)","errorType":"exception","errorClass":"Git::Client::Error","httpStatus":null,"severity":"error","filePath":"app/services/git/gitlab/client.rb","lineNumber":32,"sourceCode":"\n  def self.build_client(access_token:, api_base_url: nil)\n    new(access_token:, api_base_url:)\n  end\n\n  def initialize(access_token:, repository_url: nil, api_base_url: nil)\n    @access_token = access_token\n    @repository_url = repository_url\n    @api_base_url = api_base_url || \"https://gitlab.com\"\n  end\n\n  def repos(page: 1, per_page: 20)\n    response = HTTParty.get(\n      \"#{gitlab_api_base}/projects\",\n      headers: { \"Authorization\" => \"Bearer #{access_token}\" },\n      query: { membership: true, page:, per_page:, order_by: \"last_activity_at\" }\n    )\n    unless response.success?\n      raise Git::Client::Error, \"Failed to fetch repositories: #{response.body}\"\n    end\n\n    response.map { |repo| GitlabRepository.new(repo) }\n  end\n\n  def search_repos(query)\n    response = HTTParty.get(\n      \"#{gitlab_api_base}/projects\",\n      headers: { \"Authorization\" => \"Bearer #{access_token}\" },\n      query: { membership: true, search: query, order_by: \"last_activity_at\" }\n    )\n    unless response.success?\n      raise Git::Client::Error, \"Failed to search repositories: #{response.body}\"\n    end\n\n    response.map { |repo| GitlabRepository.new(repo) }\n  end\n","sourceCodeStart":14,"sourceCodeEnd":50,"githubUrl":"https://github.com/CanineHQ/canine/blob/ba4ee3968d8513ee27d8583fbd3e854a8dd053f3/app/services/git/gitlab/client.rb#L14-L50","documentation":"Error \"Failed to fetch repositories: #{response.body}\" thrown in CanineHQ/canine.","triggerScenarios":"Thrown at app/services/git/gitlab/client.rb:32 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"ba4ee3968d8513ee27d8583fbd3e854a8dd053f3","analyzedAt":"2026-08-23T17:49:27.834Z","schemaVersion":2},"datasetVersion":"2026-08-23T21:17:23.414Z"}