Class: RakeCircleCI::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/rake_circle_ci/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Client

Returns a new instance of Client.



7
8
9
10
11
# File 'lib/rake_circle_ci/client.rb', line 7

def initialize(opts)
  @base_url = opts[:base_url]
  @api_token = opts[:api_token]
  @project_slug = opts[:project_slug]
end

Instance Method Details

#create_checkout_key(type) ⇒ Object



90
91
92
93
94
95
96
97
98
# File 'lib/rake_circle_ci/client.rb', line 90

def create_checkout_key(type)
  type_strings = {
      deploy_key: 'deploy-key',
      github_user_key: 'github-user-key'
  }
  body = JSON.dump(type: type_strings[type.to_sym] || type.to_s)
  assert_successful(
      Excon.post(checkout_keys_url, body: body, headers: headers))
end

#create_env_var(name, value) ⇒ Object



25
26
27
28
29
# File 'lib/rake_circle_ci/client.rb', line 25

def create_env_var(name, value)
  body = JSON.dump(name: name, value: value)
  assert_successful(
      Excon.post(env_vars_url, body: body, headers: headers))
end

#create_ssh_key(private_key, opts = {}) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/rake_circle_ci/client.rb', line 50

def create_ssh_key(private_key, opts = {})
  body = {
      fingerprint: SSHKey.new(private_key).sha1_fingerprint,
      private_key: private_key,
  }
  body = body.merge(hostname: opts[:hostname]) if opts[:hostname]
  body = JSON.dump(body)
  assert_successful(
      Excon.post(ssh_keys_url, body: body, headers: headers))
end

#delete_checkout_key(fingerprint) ⇒ Object



100
101
102
103
# File 'lib/rake_circle_ci/client.rb', line 100

def delete_checkout_key(fingerprint)
  assert_successful(
      Excon.delete(checkout_key_url(fingerprint), headers: headers))
end

#delete_checkout_keysObject



105
106
107
108
109
110
# File 'lib/rake_circle_ci/client.rb', line 105

def delete_checkout_keys
  checkout_keys = find_checkout_keys
  checkout_keys.each do |checkout_key|
    delete_checkout_key(checkout_key[:fingerprint])
  end
end

#delete_env_var(name) ⇒ Object



31
32
33
# File 'lib/rake_circle_ci/client.rb', line 31

def delete_env_var(name)
  assert_successful(Excon.delete(env_var_url(name), headers: headers))
end

#delete_env_varsObject



35
36
37
38
39
40
# File 'lib/rake_circle_ci/client.rb', line 35

def delete_env_vars
  env_vars = find_env_vars
  env_vars.each do |env_var|
    delete_env_var(env_var)
  end
end

#delete_ssh_key(fingerprint, opts = {}) ⇒ Object



61
62
63
64
65
66
67
68
69
# File 'lib/rake_circle_ci/client.rb', line 61

def delete_ssh_key(fingerprint, opts = {})
  body = {
      fingerprint: fingerprint
  }
  body = body.merge(hostname: opts[:hostname]) if opts[:hostname]
  body = JSON.dump(body)
  assert_successful(
      Excon.delete(ssh_keys_url, body: body, headers: headers))
end

#delete_ssh_keysObject



71
72
73
74
75
76
77
78
79
80
# File 'lib/rake_circle_ci/client.rb', line 71

def delete_ssh_keys
  ssh_keys = find_ssh_keys
  ssh_keys.each do |ssh_key|
    fingerprint = ssh_key[:fingerprint]
    hostname = ssh_key[:hostname]
    options = hostname && {hostname: hostname}
    args = [fingerprint, options].compact
    delete_ssh_key(*args)
  end
end

#find_checkout_keysObject



82
83
84
85
86
87
88
# File 'lib/rake_circle_ci/client.rb', line 82

def find_checkout_keys
  response = assert_successful(
      Excon.get(checkout_keys_url, headers: headers))
  checkout_keys = JSON.parse(response.body, symbolize_names: true)

  checkout_keys
end

#find_env_varsObject



17
18
19
20
21
22
23
# File 'lib/rake_circle_ci/client.rb', line 17

def find_env_vars
  response = assert_successful(Excon.get(env_vars_url, headers: headers))
  body = JSON.parse(response.body)
  env_vars = body["items"].map { |item| item["name"] }

  env_vars
end

#find_ssh_keysObject



42
43
44
45
46
47
48
# File 'lib/rake_circle_ci/client.rb', line 42

def find_ssh_keys
  response = assert_successful(Excon.get(settings_url, headers: headers))
  body = JSON.parse(response.body, symbolize_names: true)
  ssh_keys = body[:ssh_keys]

  ssh_keys
end

#follow_projectObject



13
14
15
# File 'lib/rake_circle_ci/client.rb', line 13

def follow_project
  assert_successful(Excon.post(follow_url, headers: headers))
end