concourserb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/concourserb.rb +64 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f9173f3dfc5eb37296c06496bc67a826028d70bb
4
+ data.tar.gz: f67699e5baa4466d1d6c2fec1d3ac0fc72c7d558
5
+ SHA512:
6
+ metadata.gz: f28b4fd3ffa9b6e9fedfe1c1579404bf5b7bebe8e196caedac4fbb396a7cb496a0e4a96b7356e8121f6d67b48454cebbdab7a4cec2022074cc7d4dff66a96d36
7
+ data.tar.gz: e0e1539b28d447f8c1218f16267d164fe66fcc7d765cf937873ac446f1e275d815d6917997fd1903e9b9b114c14783a4ac53096e482ef457e9185860b910f720
@@ -0,0 +1,64 @@
1
+ require 'net/http'
2
+ require 'json'
3
+
4
+ class Concourserb
5
+
6
+ def initialize(url, team, user, pass)
7
+ @url = url
8
+ @user = user
9
+ @pass = pass
10
+ @team = team
11
+ auth()
12
+ end
13
+
14
+
15
+ def jobs(pipeline_name)
16
+ return req("/api/v1/teams/#{@team}/pipelines/#{pipeline_name}/jobs")
17
+ end
18
+
19
+ def build_plan(build_id)
20
+ return req("/api/v1/builds/#{build_id}/plan")
21
+ end
22
+
23
+ def versions(pipeline_name, resource_name)
24
+ return req("/api/v1/teams/#{@team}/pipelines/#{pipeline_name}/resources/#{resource_name}/versions")
25
+ end
26
+
27
+ def input_to(pipeline_name, resource_name, resource_id)
28
+ return req("/api/v1/teams/#{@team}/pipelines/#{pipeline_name}/resources/#{resource_name}/versions/#{resource_id}/input_to")
29
+ end
30
+
31
+ def output_of(pipeline_name, resource_name, resource_id)
32
+ return req("/api/v1/teams/#{@team}/pipelines/#{pipeline_name}/resources/#{resource_name}/versions/#{resource_id}/output_of")
33
+ end
34
+
35
+ private
36
+
37
+ def auth()
38
+ http = Net::HTTP.new(URI.parse(@url).host, URI.parse(@url).port)
39
+ http.use_ssl = true
40
+ request = Net::HTTP::Get.new("/api/v1/teams/#{@team}/auth/token")
41
+ request['Content-Type'] = 'application/json'
42
+ request.basic_auth(@user, @pass)
43
+ response = http.request(request)
44
+ @ATC_auth = JSON.parse(response.body)["value"]
45
+ return true
46
+ end
47
+
48
+ def req(url)
49
+ http = Net::HTTP.new(URI.parse(@url).host, URI.parse(@url).port)
50
+ http.use_ssl = true
51
+ request = Net::HTTP::Get.new(url)
52
+ request['Content-Type'] = 'application/json'
53
+ request['Cookie'] = "ATC-Authorization=Bearer #{@ATC_auth}"
54
+ response = http.request(request)
55
+ if response.code == 401
56
+ # we got bad auth, so get a new token
57
+ auth()
58
+ request['Cookie'] = "ATC-Authorization=Bearer #{@ATC_auth}"
59
+ response = http.request(request)
60
+ end
61
+ return JSON.parse(response.body)
62
+ end
63
+
64
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: concourserb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alex Arwine
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A ruby interface for concourse ci's api
14
+ email: arwineap@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/concourserb.rb
20
+ homepage: http://rubygems.org/gems/concourserb
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.6.11
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: concourserb
44
+ test_files: []