aikido-ruby-client 0.0.2 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2195bf014566aa0b80fbbf1412abce1996457bd8a93a126280689e00bdf19d72
4
- data.tar.gz: 2904c3cd13469f36ef32e3d74daf4a1eef837286f5f71047fc3bb53b0c23b400
3
+ metadata.gz: d270cfc87dd0e7cfbd288c3902cc602030c8c55001f60c9bf3c6af44d354be8d
4
+ data.tar.gz: c792ec85c9a4b0cd57bf2e858b560e504ae0c10365c60a50038621151ebb6715
5
5
  SHA512:
6
- metadata.gz: 3e1e0ced53c59664ba1b3eb53f1711bf82da26e244c4fb8a8b48f05456799639314bb6d625e140802b36dc7f8d13e0e2c23cef34677aacee1ebc443cc09bf40b
7
- data.tar.gz: c5cc2da2ed92067ef28e7c5a5b9fc6af21c8fb96675dd085b219ba26e4aa59a1a165218610104b0fd8d68345987ce7eda7807f072aad74384d9541f310fd8cd4
6
+ metadata.gz: 54553c34d78e5277062e839656225363e8184f04b373303240e680e87f48eba7bc3217c1f4e8c23163377446ad2e1490aaf348e6571405a40019e44c376f29a1
7
+ data.tar.gz: 2a29da55b4608fc9df5697b5de1ec016ca4837a10a138ac6032c85e2ae65ff1f1fcea819664932da814583ddc253eda8fc88b1a48a6600c3529877307128064b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.0.4](https://github.com/anakinj/aikido-ruby-client/tree/v0.0.4) (2024-04-2)
4
+
5
+ ** Fixes: **
6
+ - Require the version for the client to work when released
7
+ - Match external repo id as strings
8
+
9
+ ## [v0.0.3](https://github.com/anakinj/aikido-ruby-client/tree/v0.0.3) (2024-03-10)
10
+
11
+ **Features:**
12
+
13
+ - Support for even more endpoints
14
+
3
15
  ## [v0.0.2](https://github.com/anakinj/aikido-ruby-client/tree/v0.0.2) (2024-03-10)
4
16
 
5
17
  **Features:**
data/exe/aikido CHANGED
@@ -5,5 +5,10 @@ require 'aikido-ruby-client'
5
5
 
6
6
  client = Aikido::Client.new
7
7
 
8
- puts client.issues
9
- puts client.code_repositories.to_a
8
+ result = client.public_send(ARGV[0], *ARGV[1..-1])
9
+
10
+ if result.is_a?(Aikido::PaginatedResponse)
11
+ puts result.to_a
12
+ else
13
+ puts result
14
+ end
data/lib/aikido/client.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'httpx'
4
4
 
5
+ require_relative 'version'
5
6
  require_relative 'errors'
6
7
  require_relative 'paginated_response'
7
8
 
@@ -30,8 +31,15 @@ module Aikido
30
31
  end
31
32
  end
32
33
 
33
- def issues(params: {})
34
- get('/public/v1/issues/export', params: params).json
34
+ def connect_aws_cloud(role_arn:, name:, environment:)
35
+ handle_response!(authed_http.post('/public/v1/clouds/aws',
36
+ json: { role_arn: role_arn,
37
+ name: name,
38
+ environment: environment })).json
39
+ end
40
+
41
+ def issues(options = {})
42
+ get('/public/v1/issues/export', params: options).json
35
43
  end
36
44
 
37
45
  def issue(id)
@@ -55,7 +63,25 @@ module Aikido
55
63
  end
56
64
 
57
65
  def code_repository_sbom(id, format: 'csv')
58
- get("repositories/code/#{id.to_i}/licenses/export", params: { format: format }).body
66
+ get("/public/v1/repositories/code/#{id.to_i}/licenses/export", params: { format: format }).read
67
+ end
68
+
69
+ def teams
70
+ PaginatedResponse.new do |page|
71
+ get('/public/v1/teams', params: { page: page }).json
72
+ end
73
+ end
74
+
75
+ def create_team(name:)
76
+ handle_response!(authed_http.post('/public/v1/teams', json: { name: name })).json
77
+ end
78
+
79
+ def update_team(id)
80
+ raise NotImplementedError
81
+ end
82
+
83
+ def containers
84
+ get('/public/v1/containers').json
59
85
  end
60
86
 
61
87
  private
@@ -92,6 +118,8 @@ module Aikido
92
118
 
93
119
  def raise_response_error!(response)
94
120
  case response.status
121
+ when 400
122
+ raise Errors::BadRequestError, response
95
123
  when 401
96
124
  raise Errors::UnauthorizedError, response
97
125
  else
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aikido
4
+ # Represents a context for interacting with the Aikido API
5
+ # Context will store data in memory for further processing
6
+ class Context
7
+ def initialize(client: nil)
8
+ @client = client || Aikido::Client.new
9
+ end
10
+
11
+ def issues_for_code_repository(external_repo_id:)
12
+ repo = code_repositories.find { |r| r['external_repo_id'].to_s == external_repo_id.to_s }
13
+ return [] unless repo
14
+
15
+ issues.select do |issue|
16
+ issue['code_repo_id'] == repo['id']
17
+ end
18
+ end
19
+
20
+ def code_repositories
21
+ @code_repositories ||= @client.code_repositories
22
+ end
23
+
24
+ def issues
25
+ @issues ||= @client.issues
26
+ end
27
+ end
28
+ end
data/lib/aikido/errors.rb CHANGED
@@ -12,14 +12,19 @@ module Aikido
12
12
  end
13
13
 
14
14
  def message
15
- if @response.json['error_description']
16
- "#{super} - #{@response.json['error_description']}"
15
+ json = @response.json
16
+ if json.key?('error_description')
17
+ "#{super} - #{json['error_description']}"
18
+ elsif json.key?('reason_phrase')
19
+ "#{super} - #{json['reason_phrase']}"
17
20
  else
18
21
  super
19
22
  end
20
23
  end
21
24
  end
25
+
26
+ BadRequestError = Class.new(ApiError)
22
27
  UnauthorizedError = Class.new(ApiError)
23
- NotFoundError = Class.new(ApiError)
28
+ NotFoundError = Class.new(ApiError)
24
29
  end
25
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aikido
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.4'
5
5
  end
@@ -1,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'aikido/client'
4
+ require 'aikido/context'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aikido-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joakim Antman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-10 00:00:00.000000000 Z
11
+ date: 2024-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpx
@@ -41,6 +41,7 @@ files:
41
41
  - exe/aikido
42
42
  - lib/aikido-ruby-client.rb
43
43
  - lib/aikido/client.rb
44
+ - lib/aikido/context.rb
44
45
  - lib/aikido/errors.rb
45
46
  - lib/aikido/paginated_response.rb
46
47
  - lib/aikido/version.rb
@@ -49,8 +50,8 @@ licenses:
49
50
  - MIT
50
51
  metadata:
51
52
  homepage_uri: https://github.com/anakinj/aikido-ruby-client
52
- source_code_uri: https://github.com/anakinj
53
- changelog_uri: https://github.com/anakinj/jwk-loader/blob/0.0.2/CHANGELOG.md
53
+ source_code_uri: https://github.com/anakinj/aikido-ruby-client
54
+ changelog_uri: https://github.com/anakinj/aikido-ruby-client/blob/0.0.4/CHANGELOG.md
54
55
  rubygems_mfa_required: 'true'
55
56
  post_install_message:
56
57
  rdoc_options: []