Class: VSTS::APIClient

Inherits:
Object
  • Object
show all
Defined in:
lib/vsts/api_client.rb

Overview

API client for Visual Studio Team Services (VSTS) Manages access tokens and API versions, builds proper requests as expected by the VSTS API

Class Method Summary collapse

Class Method Details

.delete(resource, opts = {}) ⇒ Hash

Helper method for DELETE requests, calls #request



85
86
87
# File 'lib/vsts/api_client.rb', line 85

def self.delete(resource, opts = {})
  request(:delete, resource, opts)
end

.get(resource, opts = {}) ⇒ Hash

Helper method for GET requests, calls #request



43
44
45
# File 'lib/vsts/api_client.rb', line 43

def self.get(resource, opts = {})
  request(:get, resource, opts)
end

.patch(resource, payload, opts = {}) ⇒ Hash

Helper method for PATCH requests, calls #request



75
76
77
78
# File 'lib/vsts/api_client.rb', line 75

def self.patch(resource, payload, opts = {})
  opts[:payload] = payload
  request(:patch, resource, opts)
end

.post(resource, payload, opts = {}) ⇒ Hash

Helper method for POST requests, calls #request



53
54
55
56
# File 'lib/vsts/api_client.rb', line 53

def self.post(resource, payload, opts = {})
  opts[:payload] = payload
  request(:post, resource, opts)
end

.put(resource, payload, opts = {}) ⇒ Hash

Helper method for PUT requests, calls #request



64
65
66
67
# File 'lib/vsts/api_client.rb', line 64

def self.put(resource, payload, opts = {})
  opts[:payload] = payload
  request(:put, resource, opts)
end

.request(method, resource, opts = {}) ⇒ Hash

Make an API request

Options Hash (opts):

  • :payload (Hash)

    payload for the request (if any)

  • :api_version (String)
  • :collection (String)
  • :team_project (String)
  • :area (String)
  • :urlparams (Hash)


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/vsts/api_client.rb', line 21

def self.request(method, resource, opts = {})
  url = build_url(resource, opts)
  VSTS.logger.debug("VSTS request: #{method} #{url}") if VSTS.configuration.debug
  req = {
    method: method,
    url: url,
    payload: opts[:payload],
    headers: {
      Authorization: authz_header_value,
      Accept: "application/json",
      "Content-Type" => "application/json"
    }
  }
  resp = RestClient::Request.execute(req)
  APIResponse.new(req, resp)
end