Pass a options hash to Github::Client

This commit is contained in:
Douglas Barbosa Alexandre 2017-04-19 20:04:58 -03:00
parent ac1634fac9
commit 782aab1319
9 changed files with 37 additions and 27 deletions

View file

@ -2,9 +2,9 @@ module Github
class Client
attr_reader :connection
def initialize(token)
@connection = Faraday.new(url: 'https://api.github.com') do |faraday|
faraday.authorization 'token', token
def initialize(options)
@connection = Faraday.new(url: options.fetch(:url)) do |faraday|
faraday.authorization 'token', options.fetch(:token)
faraday.adapter :net_http
end
end

View file

@ -1,5 +1,11 @@
module Github
class Collection
attr_reader :options
def initialize(options)
@options = options
end
def fetch(url, query = {})
return [] if url.blank?
@ -16,7 +22,7 @@ module Github
private
def client
@client ||= Github::Client.new
@client ||= Github::Client.new(options)
end
end
end

View file

@ -27,17 +27,18 @@ module Github
self.reset_callbacks :validate
end
attr_reader :project, :repository, :cached_label_ids, :cached_user_ids, :errors
attr_reader :project, :repository, :options, :cached_label_ids, :cached_user_ids, :errors
def initialize(project)
def initialize(project, options)
@project = project
@repository = project.repository
@options = options
@cached_label_ids = {}
@cached_user_ids = {}
@errors = []
end
def execute(owner, repo, token)
def execute(owner, repo)
# Fetch repository
begin
project.create_repository
@ -53,7 +54,7 @@ module Github
url = "/repos/#{owner}/#{repo}/labels"
loop do
response = Github::Client.new.get(url)
response = Github::Client.new(options).get(url)
response.body.each do |raw|
begin
@ -81,7 +82,7 @@ module Github
url = "/repos/#{owner}/#{repo}/milestones"
loop do
response = Github::Client.new.get(url, state: :all)
response = Github::Client.new(options).get(url, state: :all)
response.body.each do |raw|
begin
@ -109,10 +110,10 @@ module Github
url = "/repos/#{owner}/#{repo}/pulls"
loop do
response = Github::Client.new.get(url, state: :all, sort: :created, direction: :asc)
response = Github::Client.new(options).get(url, state: :all, sort: :created, direction: :asc)
response.body.each do |raw|
pull_request = Github::Representation::PullRequest.new(project, raw)
pull_request = Github::Representation::PullRequest.new(project, raw, options)
merge_request = MergeRequest.find_or_initialize_by(iid: pull_request.iid, source_project_id: project.id)
next unless merge_request.new_record? && pull_request.valid?
@ -160,10 +161,10 @@ module Github
url = "/repos/#{owner}/#{repo}/issues"
loop do
response = Github::Client.new.get(url, state: :all, sort: :created, direction: :asc)
response = Github::Client.new(options).get(url, state: :all, sort: :created, direction: :asc)
response.body.each do |raw|
representation = Github::Representation::Issue.new(raw)
representation = Github::Representation::Issue.new(raw, options)
begin
# Every pull request is an issue, but not every issue
@ -215,12 +216,12 @@ module Github
def fetch_comments(noteable, type, url)
loop do
comments = Github::Client.new.get(url)
comments = Github::Client.new(options).get(url)
ActiveRecord::Base.no_touching do
comments.body.each do |raw|
begin
representation = Github::Representation::Comment.new(raw)
representation = Github::Representation::Comment.new(raw, options)
note = Note.new
note.project_id = project.id

View file

@ -1,8 +1,9 @@
module Github
module Representation
class Base
def initialize(raw)
def initialize(raw, options = {})
@raw = raw
@options = options
end
def url
@ -19,7 +20,7 @@ module Github
private
attr_reader :raw
attr_reader :raw, :options
end
end
end

View file

@ -6,7 +6,7 @@ module Github
end
def author
@author ||= Github::Representation::User.new(raw['user'])
@author ||= Github::Representation::User.new(raw['user'], options)
end
def commit_id

View file

@ -20,13 +20,13 @@ module Github
end
def author
@author ||= Github::Representation::User.new(raw['user'])
@author ||= Github::Representation::User.new(raw['user'], options)
end
def assignee
return unless assigned?
@assignee ||= Github::Representation::User.new(raw['assignee'])
@assignee ||= Github::Representation::User.new(raw['assignee'], options)
end
def assigned?

View file

@ -6,9 +6,10 @@ module Github
delegate :user, :repo, :ref, :sha, to: :source_branch, prefix: true
delegate :user, :exists?, :repo, :ref, :sha, :short_sha, to: :target_branch, prefix: true
def initialize(project, raw)
def initialize(project, raw, options)
@project = project
@raw = raw
@options = options
end
def source_project

View file

@ -8,7 +8,7 @@ module Github
def email
return @email if defined?(@email)
@email = Github::User.new(username).get.fetch('email', nil)
@email = Github::User.new(username, options).get.fetch('email', nil)
end
def username

View file

@ -1,9 +1,10 @@
module Github
class User
attr_reader :username
attr_reader :username, :options
def initialize(username)
def initialize(username, options)
@username = username
@options = options
end
def get
@ -13,7 +14,7 @@ module Github
private
def client
@client ||= Github::Client.new
@client ||= Github::Client.new(options)
end
def user_url