Module: Octokit::Connection

Includes:
Authentication
Included in:
Client, EnterpriseAdminClient, EnterpriseManagementConsoleClient
Defined in:
lib/octokit/connection.rb

Overview

Network layer for API clients.

Constant Summary

CONVENIENCE_HEADERS =

Header keys that can be passed in options hash to #get,#head

Set.new([:accept, :content_type])

Instance Method Summary collapse

Methods included from Authentication

#application_authenticated?, #basic_authenticated?, #token_authenticated?, #user_authenticated?

Instance Method Details

#agentSawyer::Agent

Hypermedia agent for the GitHub API



104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/octokit/connection.rb', line 104

def agent
  @agent ||= Sawyer::Agent.new(endpoint, sawyer_options) do |http|
    http.headers[:accept] = default_media_type
    http.headers[:content_type] = "application/json"
    http.headers[:user_agent] = user_agent
    if basic_authenticated?
      http.basic_auth(@login, @password)
    elsif token_authenticated?
      http.authorization 'token', @access_token
    elsif application_authenticated?
      http.params = http.params.merge application_authentication
    end
  end
end

#delete(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP DELETE request



54
55
56
# File 'lib/octokit/connection.rb', line 54

def delete(url, options = {})
  request :delete, url, options
end

#get(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP GET request



18
19
20
# File 'lib/octokit/connection.rb', line 18

def get(url, options = {})
  request :get, url, parse_query_and_convenience_headers(options)
end

#head(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP HEAD request



63
64
65
# File 'lib/octokit/connection.rb', line 63

def head(url, options = {})
  request :head, url, parse_query_and_convenience_headers(options)
end

#last_responseSawyer::Response

Response for last HTTP request



129
130
131
# File 'lib/octokit/connection.rb', line 129

def last_response
  @last_response if defined? @last_response
end

#paginate(url, options = {}, &block) ⇒ Sawyer::Resource

Make one or more HTTP GET requests, optionally fetching the next page of results from URL in Link response header based on value in Octokit::Configurable#auto_paginate.



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/octokit/connection.rb', line 78

def paginate(url, options = {}, &block)
  opts = parse_query_and_convenience_headers(options.dup)
  if @auto_paginate || @per_page
    opts[:query][:per_page] ||=  @per_page || (@auto_paginate ? 100 : nil)
  end

  data = request(:get, url, opts.dup)

  if @auto_paginate
    while @last_response.rels[:next] && rate_limit.remaining > 0
      @last_response = @last_response.rels[:next].get(:headers => opts[:headers])
      if block_given?
        yield(data, @last_response)
      else
        data.concat(@last_response.data) if @last_response.data.is_a?(Array)
      end
    end

  end

  data
end

#patch(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP PATCH request



45
46
47
# File 'lib/octokit/connection.rb', line 45

def patch(url, options = {})
  request :patch, url, options
end

#post(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP POST request



27
28
29
# File 'lib/octokit/connection.rb', line 27

def post(url, options = {})
  request :post, url, options
end

#put(url, options = {}) ⇒ Sawyer::Resource

Make a HTTP PUT request



36
37
38
# File 'lib/octokit/connection.rb', line 36

def put(url, options = {})
  request :put, url, options
end

#rootSawyer::Resource

Fetch the root resource for the API



122
123
124
# File 'lib/octokit/connection.rb', line 122

def root
  get "/"
end