diff --git a/README.md b/README.md index 09f20ae..28b550b 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,16 @@ $ saddler report \ like this. See [Saddler](https://github.com/packsaddle/ruby-saddler). +## Debugging + +You can use `reporter-github-log_octokit` option to log octokit's requests and responses. + +``` +$ saddler report \ + --require saddler/reporter/github \ + --reporter Saddler::Reporter::Github::PullRequestReviewComment \ + --options 'reporter-github-log_octokit:true' +``` ## Requirement diff --git a/lib/saddler/reporter/github/client.rb b/lib/saddler/reporter/github/client.rb index 4728838..bacbb52 100644 --- a/lib/saddler/reporter/github/client.rb +++ b/lib/saddler/reporter/github/client.rb @@ -4,8 +4,10 @@ module Github # GitHub client wrapper class Client # @param repo [Repository] git repository - def initialize(repo) + # @param log_octokit [Boolean] if true, enable octokit logging + def initialize(repo, log_octokit: false) @repo = repo + @log_octokit = log_octokit end # @param sha [String] target commit sha @@ -113,7 +115,21 @@ def slug # @return [Octokit::Client] def client - @client ||= Octokit::Client.new(access_token: access_token) + @client ||= if @log_octokit + # see: https://github.com/octokit/octokit.rb/tree/v5.6.1#debugging + middleware = Faraday::RackBuilder.new do |builder| + builder.use Octokit::Middleware::FollowRedirects + builder.use Octokit::Response::RaiseError + builder.use Octokit::Response::FeedParser + builder.response :logger, nil, { headers: true, bodies: { request: true, response: true } } do |logger| + logger.filter(/(Authorization: "(token|Bearer) )(\w+)/, '\1[REMOVED]') + end + builder.adapter Faraday.default_adapter + end + Octokit::Client.new(access_token: access_token, middleware: middleware) + else + Octokit::Client.new(access_token: access_token) + end end # @return [String, nil] github access token diff --git a/lib/saddler/reporter/github/commit_comment.rb b/lib/saddler/reporter/github/commit_comment.rb index 1e53cb7..8bc4ebe 100644 --- a/lib/saddler/reporter/github/commit_comment.rb +++ b/lib/saddler/reporter/github/commit_comment.rb @@ -19,7 +19,7 @@ def report(messages, options) sha = options['sha'] || repo.head.sha data = parse(messages) - client = Client.new(repo) + client = Client.new(repo, log_octokit: options['reporter-github-log_octokit']) # fetch commit_comments commit_comments = client.commit_comments(sha) diff --git a/lib/saddler/reporter/github/commit_review_comment.rb b/lib/saddler/reporter/github/commit_review_comment.rb index c288bc4..74d76b7 100644 --- a/lib/saddler/reporter/github/commit_review_comment.rb +++ b/lib/saddler/reporter/github/commit_review_comment.rb @@ -21,7 +21,7 @@ def report(messages, options) sha = options['sha'] || repo.head.sha data = parse(messages) - client = Client.new(repo) + client = Client.new(repo, log_octokit: options['reporter-github-log_octokit']) # fetch commit_comments commit_comments = client.commit_comments(sha) diff --git a/lib/saddler/reporter/github/pull_request_comment.rb b/lib/saddler/reporter/github/pull_request_comment.rb index f4562bb..518bb24 100644 --- a/lib/saddler/reporter/github/pull_request_comment.rb +++ b/lib/saddler/reporter/github/pull_request_comment.rb @@ -6,18 +6,18 @@ class PullRequestComment include Helper # @param messages [String] checkstyle string - # @param _options [Hash] + # @param options [Hash] # # @return [void] # # @see https://developer.github.com/v3/issues/comments/#create-a-comment - def report(messages, _options) + def report(messages, options) repo_path = '.' repo = Repository.new(repo_path) data = parse(messages) - client = Client.new(repo) + client = Client.new(repo, log_octokit: options['reporter-github-log_octokit']) # fetch pull_request_comments(issue) pull_request_comments = client.issue_comments diff --git a/lib/saddler/reporter/github/pull_request_review_comment.rb b/lib/saddler/reporter/github/pull_request_review_comment.rb index 0a1c350..6ae9eee 100644 --- a/lib/saddler/reporter/github/pull_request_review_comment.rb +++ b/lib/saddler/reporter/github/pull_request_review_comment.rb @@ -6,17 +6,17 @@ class PullRequestReviewComment include Helper # @param messages [String] checkstyle string - # @param _options [Hash] + # @param options [Hash] # # @return [void] # # @see https://developer.github.com/v3/pulls/comments/#create-a-comment - def report(messages, _options) + def report(messages, options) repo_path = '.' repo = Repository.new(repo_path) data = parse(messages) - client = Client.new(repo) + client = Client.new(repo, log_octokit: options['reporter-github-log_octokit']) # fetch pull_request_review_comments pull_request_review_comments = client.pull_request_review_comments