Tag: github api

使用rails oauth插件访问github API

我正在实现一个应用程序,该应用程序应该能够代表其用户与不同的API通信。 除此之外,这包括github。 我正在使用oauth-plugin( https://github.com/pelle/oauth-plugin )为每个API执行身份validation。 不幸的是,这对Github不起作用。 这是我目前的GithubToken实现: class GithubToken “https://github.com”, :request_token_path => “/login/oauth/request_token”, :authorize_path => “/login/oauth/authorize”, :access_token_path => “/login/oauth/access_token”, } def self.consumer @consumer||=create_consumer end def self.create_consumer(options={}) OAuth::Consumer.new credentials[:key],credentials[:secret],GITHUB_SETTINGS.merge(options) end def self.get_request_token(callback_url, scope=nil) https://github.com/login/oauth/authorize consumer.get_request_token({:oauth_callback=>callback_url}, :scope=>scope||credentials[:scope]||””) end end 启动身份validation过程时,我在get_request_token调用期间收到403错误。 我假设request_token_path有点错误,但无法在正确的路径上找到任何信息。 使用github搜索谷歌作为搜索词的一部分也不是很有帮助。 现在尝试omniauth,但是因为我正计划使用oauth-plugin的提供者function,所以任何帮助都会非常感激。

Github API使用OAuth访问私有存储库

尝试使用API​​访问我所属的Github组织的私有存储库中的文件。 到目前为止尝试了几种不同的方法: 1.如果我使用用户名/密码方法 – curl -u “sashafklein:mypassword” https://api.github.com/repos/:org/:repo/git/trees/:file_sha 它工作正常,但我试图从协作Rails应用程序访问repos,所以我不想公开我的github登录凭据。 我想创建一个虚拟GH帐户可以访问并使用这些凭据是可能的,但它绝对不是理想的.. 所以我查看了API文档中的OAuth2 Secret / Key方法。 但它不起作用。 如果我使用我的凭据curlorg repo url作为url中的params: curl -i “https://api.github.com/orgs/:org/repos?private&client_id=&client_secret=” 只有公开回购出现。 这可能是我如何传递params的问题(理论上传递“?private = true”然后返回一个空列表,但列表是相同的并且所有公共存储库),但我正在关注文档。 3.所以我感到很沮丧,并看看这些文档获取OAuth令牌,但我很困惑如何更改它,以便没有用户界面 – 即,以便我的应用程序可以自动访问Github Orgs其中我是其成员,没有其用户必须做任何特别的事情。 我有什么想法尝试2,或者如何让尝试3自动运行? 我很难过。 编辑我认为我的client_id / secret是错误的,因为即使我使用Octokit,它也无法访问受保护的回购。 我明白这个错吗? 就像我一样,我在Github上为我的Rails应用程序创建了一个“应用程序”,我正在尝试使用这些凭据来访问org的私有存储库(我是其贡献者)使用API​​。

如何使用“github_api”gem从GitHub API v3获得100多个结果?

我正在使用GitHub API Gem并尝试获取有关贡献者的添加,删除和提交计数的统计信息 。 问题是我只得到100个结果,无法访问其他页面。 这似乎是非常常见的问题,但我找不到答案。 例如,让我们来看看rails / rails repo。 有1 990个贡献者: repo = Github::Repos.new user: ‘rails’, repo: ‘rails’ repo.stats.contributors 我得到的是前100个结果。 我试图查询链接头中包含的分页信息。 我在rails console中的输出: irb(main):001:0> repo = Github::Repos.new => # irb(main):002:0> res = repo.stats.contributors user: ‘rails’, repo: ‘rails’ => # irb(main):003:0> res.links => # 没有。 传递auto_pagination选项不会改变我的任何内容。 我错过了什么?

大括号的URL编码问题

我在从GitHub Archive获取数据时遇到问题。 主要问题是我在URL中编码{}和..问题。 也许我误读了Github API或者没有正确理解编码。 require ‘open-uri’ require ‘faraday’ conn = Faraday.new(:url => ‘http://data.githubarchive.org/’) do |faraday| faraday.request :url_encoded # form-encode POST params faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end #query = ‘2015-01-01-15.json.gz’ #this one works!! query = ‘2015-01-01-{0..23}.json.gz’ #this one doesn’t work encoded_query = URI.encode(query) response = […]

Github API响应“内容无效Base64”

当使用API​​向github发布某个非常简单的内容时,我收到了“内容无效Base64”错误。 内容是 unit = $(“”); 我使用Base64.urlsafe_encode64来编码内容。 content = ‘unit = $(“”)’; url = “https://api.github.com/repos/#{github_user}/#{github_repo}/contents/#{path}” RestClient.put(url, { message: “my message”, content: Base64.urlsafe_encode64(content), encoding:”base64″ }.to_json, { params:{access_token:access_token },accept:’json’}){ |response, request, result| puts response.code puts response } 我得到了这个回应: 422 {“message”:”content is not valid Base64″, “documentation_url”:”https://developer.github.com/v3/repos/contents/”} 我不明白这对github来说是不是有效的base64。 并且所有提交的数据都不会发生。 content=’unit = $(“”)’ Base64.urlsafe_decode64(Base64.urlsafe_encode64(content))==content => true 我究竟做错了什么?

我可以通过GH API在两次提交之间获取一个文件的差异数据吗?

我知道如何通过API获取文件的提交,以及SHA和所有好东西。 但是,假设我只想在1次提交中使用文件的差异,或者在两次提交中使用相同文件的差异。 例如,在这个提交中 ,假设我只想在activerecord/lib/active_record/associations.rb , :counter_sql 。 如何通过API获取差异数据? 我正在使用Octokit.rb。 编辑1 看来这可能是根据这篇博文 ,但我不知道如何用Octokit做到这一点。 编辑2 所以,我一点一点地搞清楚它。 为了获得两次提交之间的差异数据,我可以比较这样的两个提交 。 所以,假设我在两个变量a和b中的两个提交都有两个SHA,我会做这样的事情: client = Octokit::Client.new(access_token: ENV[“MY_ACCESS_TOKEN”]) comparison = client.compare(“rails/rails”, a, b, path: “activerecord/lib/active_record/associations.rb”) 这个问题导致两次提交之间存在差异,包括对许多其他文件的更改以及我不想要的大量信息。 我想要的只是这两个提交中来自此特定文件的差异。 我还没想出怎么做。 思考?