Class: PagerDuty::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/pager_duty/connection.rb,
lib/pager_duty/connection/version.rb

Defined Under Namespace

Classes: ApiError, ConvertTimesParametersToISO8601, FileNotFoundError, ParseTimeStrings, RaiseApiErrorOnNon200, RaiseFileNotFoundOn404, RaiseRateLimitOn429, RateLimitError

Constant Summary collapse

API_VERSION =
2
VERSION =
"1.2.0"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(token, token_type: :Token, debug: false) ⇒ Connection

Returns a new instance of Connection.



149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# File 'lib/pager_duty/connection.rb', line 149

def initialize(token, token_type: :Token, debug: false)
  @connection = Faraday.new do |conn|
    conn.url_prefix = "https://api.pagerduty.com/"

    conn.authorization(token_type, token)

    conn.use RaiseApiErrorOnNon200
    conn.use RaiseFileNotFoundOn404
    conn.use RaiseRateLimitOn429

    conn.use ConvertTimesParametersToISO8601

    # use json
    conn.request :json
    conn.headers[:accept] = "application/vnd.pagerduty+json;version=#{API_VERSION}"

    # json back, mashify it
    conn.use ParseTimeStrings
    conn.response :mashify
    conn.response :json
    conn.response :logger, ::Logger.new(STDOUT), bodies: true if debug

    conn.adapter  Faraday.default_adapter
  end
end

Instance Attribute Details

#connectionObject

Returns the value of attribute connection.



10
11
12
# File 'lib/pager_duty/connection.rb', line 10

def connection
  @connection
end

Instance Method Details

#delete(path, request = {}) ⇒ Object



194
195
196
# File 'lib/pager_duty/connection.rb', line 194

def delete(path, request = {})
  run_request(:delete, path, request)
end

#get(path, request = {}) ⇒ Object



175
176
177
178
179
180
181
182
183
184
# File 'lib/pager_duty/connection.rb', line 175

def get(path, request = {})
  # paginate anything being 'get'ed, because the offset/limit isn't intuitive
  request[:query_params] = {} if !request[:query_params]
  page = (request[:query_params].delete(:page) || 1).to_i
  limit = (request[:query_params].delete(:limit) || 100).to_i
  offset = (page - 1) * limit
  request[:query_params] = request[:query_params].merge(offset: offset, limit: limit)

  run_request(:get, path, request)
end

#post(path, request = {}) ⇒ Object



190
191
192
# File 'lib/pager_duty/connection.rb', line 190

def post(path, request = {})
  run_request(:post, path, request)
end

#put(path, request = {}) ⇒ Object



186
187
188
# File 'lib/pager_duty/connection.rb', line 186

def put(path, request = {})
  run_request(:put, path, request)
end