lib/onebox/engine/github_pullrequest_onebox.rb in onebox-1.5.2 vs lib/onebox/engine/github_pullrequest_onebox.rb in onebox-1.5.3
- old
+ new
@@ -11,61 +11,15 @@
"https://api.github.com/repos/#{match[:owner]}/#{match[:repository]}/pulls/#{match[:number]}"
end
private
- #Make an api JSON request, will attempt to authenticate if provided in the engine options
- # Author: Lidlanca
- #: self.options[:github_auth_method] = :basic | :oauth | nil
- # :oauth is the recommend way for authentication. when generating token you can control privileges, and you do not expose your password
- # :basic require username and password provided in options[:github_auth_user , :github_auth_pass]
- # nil or false will make a request without any authentication. request rate limit are lower.
-
- def api_json_request url
- box_options = self.options
- case box_options[:github_auth_method]
- when :basic
- auth = [box_options[:github_auth_user] , box_options[:github_auth_pass]] # user name and password
- when :oauth
- auth = [box_options[:github_auth_token] , "x-oauth-basic"] #oauth does not need password with token
- else
- #request without auth
- return ::MultiJson.load(open(url,"Accept"=>"application/vnd.github.v3.text+json",read_timeout: timeout))
-
- end
- #Request with auth
- return ::MultiJson.load(open(url,"Accept"=>"application/vnd.github.v3.text+json",http_basic_authentication:auth, read_timeout: timeout))
- end
-
- def raw
- @raw ||= api_json_request url
- end
def match
@match ||= @url.match(%r{github\.com/(?<owner>[^/]+)/(?<repository>[^/]+)/pull/(?<number>[^/]+)})
end
def data
- box_options = self.options
result = raw.clone
-
- pull_status = "" << {:closed=>"closed",:open=>"open"}[raw["state"].to_sym] << (raw["state"] == "closed" ? (raw["merged"] ? " & merged" : " & declined") : "") #closed , open
- result['pull_status_str'] = pull_status
- result['pull_status'] = raw["state"]
- result['pull_status_str'] = pull_status
- result['pull_status_str_open'] = raw["state"]=="open"
- result['pull_status_closed_accepted'] = raw["state"]=="closed" && raw["merged"]
- result['pull_status_closed_declined'] = raw["state"]=="closed" && !raw["merged"]
- result['pull_status_class'] = (raw["merged"] ? "merged": raw["state"] ) # open, merged, close
- result['pull_status_bgcolor'] = {:open=>"#6cc644",:merged =>"6e5494", :closed=> "#bd2c00"}[result['pull_status_class'].to_sym]
- result['inline_css'] = false #set to true if you need basic styling and you don't have external css
- if box_options[:get_build_status]
- url2 = raw["statuses_url"]
- raw2 = api_json_request url2 #2nd api request to get build status
- unless raw2.empty?
- result['build_status'] = "Build status: " + raw2[0]["state"].to_s.capitalize + " | " + raw2[0]["description"].to_s
- end
- end
-
result['link'] = link
result['created_at'] = Time.parse(result['created_at']).strftime("%I:%M%p - %d %b %y")
result
end
end