avmtrf1-tools 0.40.0 → 0.41.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 409b614dd9df105476d7d7ce456efbaf3166b6c7eacf0d51bf507e84b0814423
4
- data.tar.gz: ce1872a84c657132015e826bb8bbc59fc939b031f5cb7c9d90ea706877618eda
3
+ metadata.gz: 7c004c200bbd53b895d1ab4b9df5d5e2f01f7d0b3c77605fb6f1049e96c01d66
4
+ data.tar.gz: 100127b8522690406d21d3f352e97546ddbd9b066127955d227b9bd57f6fa07a
5
5
  SHA512:
6
- metadata.gz: 786b256eb94d24cad76a280e6621c5b37b8042b38bf0a95d0c7df81592e917b3698abb774d27569087146a78c782bc62c0fae488235bdc888464db610699ced0
7
- data.tar.gz: c53d815127b4e1da902e3ac1e239c55aa40b2c4817e6c4d911b50507c94c6052c3e05b2d9bc1778dfed303bb0052ab019be9e72af0ec7c060d671b439b62d156
6
+ metadata.gz: b46dc0766ba4a2f5b3c6515608192f79ad8fc301b23b2b57a8a892b1307dc5bd35a95e2daf7435c4b575211d039456b28ee6eb2721e4995dd8386fc55f25c357
7
+ data.tar.gz: a3eb77e607af031c654dd26e5fef97dc7cfc195d140073dd3343b1087e6e073a6757b7a38084e6dc83cf741736df47cb27acdcdc16e1057a3a2ca6dfabfbaa4e
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_rest/entity'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ class Api < ::EacRest::Api
10
+ class Entity < ::EacRest::Entity
11
+ def request_data(url_suffix)
12
+ req = api.request(url_suffix)
13
+ req.response.body_data_or_raise
14
+ rescue ::Avmtrf1::Tools::Msgraph::InvalidTokenError
15
+ api.clear_token_info
16
+ req.response.body_data_or_raise
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/msgraph/api/entity'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ class Api < ::EacRest::Api
10
+ class Member < ::Avmtrf1::Tools::Msgraph::Api::Entity
11
+ %w[displayName email roles tenantId userId visibleHistoryStartDateTime]
12
+ .each do |key|
13
+ define_method key.underscore do
14
+ data.fetch(key)
15
+ end
16
+ end
17
+
18
+ # @return [String]
19
+ def id_from_data
20
+ data.fetch('id')
21
+ end
22
+
23
+ # @return [String]
24
+ def type
25
+ data.fetch('@odata.type')
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,24 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avmtrf1/tools/msgraph/api/entity'
3
4
  require 'avmtrf1/tools/msgraph/api/team'
4
- require 'eac_rest/entity'
5
5
  require 'eac_ruby_utils/core_ext'
6
6
 
7
7
  module Avmtrf1
8
8
  module Tools
9
9
  module Msgraph
10
10
  class Api < ::EacRest::Api
11
- class Root < ::EacRest::Entity
11
+ class Root < ::Avmtrf1::Tools::Msgraph::Api::Entity
12
12
  # @return [Array<Avmtrf1::Tools::Msgraph::Api::Group>]
13
13
  def joined_teams
14
- api.request('/me/joinedTeams').response.body_data.fetch('value').map do |team_data|
14
+ request_data('/me/joinedTeams').map do |team_data|
15
15
  child_entity(::Avmtrf1::Tools::Msgraph::Api::Team, team_data)
16
16
  end
17
17
  end
18
18
 
19
- # @return [Avmtrf1::Tools::Msgraph::Api::Group]
20
- def group(group_id)
21
- child_entity(::Avmtrf1::Tools::Msgraph::Api::Group, group_id)
19
+ # @return [Avmtrf1::Tools::Msgraph::Api::Team]
20
+ def team(team_id)
21
+ child_entity(::Avmtrf1::Tools::Msgraph::Api::Team, team_id)
22
22
  end
23
23
  end
24
24
  end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_rest/entity'
3
+ require 'avmtrf1/tools/msgraph/api/entity'
4
4
  require 'eac_ruby_utils/core_ext'
5
5
 
6
6
  module Avmtrf1
7
7
  module Tools
8
8
  module Msgraph
9
9
  class Api < ::EacRest::Api
10
- class Team < ::EacRest::Entity
10
+ class Team < ::Avmtrf1::Tools::Msgraph::Api::Entity
11
11
  %w[classification createdDateTime description discoverySettings displayName funSettings
12
12
  guestSettings internalId isArchived isMembershipLimitedToOwners memberSettings
13
13
  messagingSettings specialization summary tenantId visibility webUrl].each do |key|
@@ -19,6 +19,12 @@ module Avmtrf1
19
19
  def id_from_data
20
20
  data.fetch('id')
21
21
  end
22
+
23
+ def members
24
+ request_data("/teams/#{id}/members").map do |member_data|
25
+ child_entity(::Avmtrf1::Tools::Msgraph::Api::Member, member_data)
26
+ end
27
+ end
22
28
  end
23
29
  end
24
30
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avmtrf1/tools/msgraph/request_mixin'
3
4
  require 'eac_rest/api'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
@@ -17,10 +18,18 @@ module Avmtrf1
17
18
  token_info.fetch(:token).fetch(:accessToken)
18
19
  end
19
20
 
21
+ # @return [void]
22
+ def clear_token_info
23
+ token_info_cache.clear
24
+ reset_cache(:token_info)
25
+ end
26
+
20
27
  # @return [EacRest::Request]
21
28
  def request(service_url_suffix, headers = {}, &body_data_proc)
22
- super(service_url_suffix, headers, &body_data_proc)
23
- .header('Authorization', "Bearer #{access_token}")
29
+ r = super(service_url_suffix, headers, &body_data_proc)
30
+ .header('Authorization', "Bearer #{access_token}")
31
+ r.singleton_class.prepend(::Avmtrf1::Tools::Msgraph::RequestMixin)
32
+ r
24
33
  end
25
34
 
26
35
  def fs_object_id
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_rest/error'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ class InvalidTokenError < ::EacRest::Error
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/msgraph/response_mixin'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ module RequestMixin
10
+ def response
11
+ r = super
12
+ r.singleton_class.prepend(::Avmtrf1::Tools::Msgraph::ResponseMixin)
13
+ r
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/msgraph/invalid_token_error'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ module ResponseMixin
10
+ ERROR_KEY = 'error'
11
+ INVALID_TOKEN_CODE = 'InvalidAuthenticationToken'
12
+ VALUE_KEY = 'value'
13
+
14
+ def body_data_or_raise
15
+ check_invalid_token
16
+ r = super
17
+ return r unless r.is_a?(::Hash)
18
+
19
+ body_hash_or_raise(r)
20
+ end
21
+
22
+ # @return [String, nil]
23
+ def error_code
24
+ return false unless body_data.is_a?(::Hash)
25
+ return false unless body_data.key?(ERROR_KEY)
26
+
27
+ body_data.fetch(ERROR_KEY).fetch('code')
28
+ end
29
+
30
+ protected
31
+
32
+ def body_hash_or_raise(result_data)
33
+ return result_data.fetch(VALUE_KEY) if result_data.key?(VALUE_KEY)
34
+ return raise_error_from_hash(result_data.fetch(ERROR_KEY)) if result_data.key?(ERROR_KEY)
35
+
36
+ nbr
37
+ end
38
+
39
+ def check_invalid_token
40
+ return unless error_code == INVALID_TOKEN_CODE
41
+
42
+ raise ::Avmtrf1::Tools::Msgraph::InvalidTokenError
43
+ end
44
+
45
+ def raise_error_from_hash(error_hash)
46
+ raise ::EacRest::Error, error_hash.pretty_inspect
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/core_ext'
4
+
5
+ module Avmtrf1
6
+ module Tools
7
+ class Runner
8
+ class Msgraph
9
+ class Request
10
+ runner_with :help do
11
+ pos_arg :url_suffix
12
+ end
13
+
14
+ def run
15
+ request_banner
16
+ fetch_response
17
+ end
18
+
19
+ private
20
+
21
+ def request_banner
22
+ api_banner
23
+ infov 'URL', request.url
24
+ end
25
+
26
+ def fetch_response
27
+ infom 'Requesting...'
28
+ infov 'Response status', response.status
29
+ infov 'Response body class', response.body_data.class
30
+ infov 'Response body', '*'
31
+ out response.body_data.to_yaml + "\n"
32
+ end
33
+
34
+ def request_uncached
35
+ api.request_json(parsed.url_suffix)
36
+ end
37
+
38
+ def response_uncached
39
+ request.response
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/core_ext'
4
+
5
+ module Avmtrf1
6
+ module Tools
7
+ class Runner
8
+ class Msgraph
9
+ class Team
10
+ class Members
11
+ runner_with :help, :output
12
+
13
+ def run
14
+ infov 'Found', members.count
15
+ run_output
16
+ end
17
+
18
+ private
19
+
20
+ def members_uncached
21
+ team.members.sort_by { |m| [m.email, m.id] }
22
+ end
23
+
24
+ def format_member(member)
25
+ %w[email display_name].map { |k| member.send(k) }.join('|')
26
+ end
27
+
28
+ def output_content
29
+ members.map { |member| "#{format_member(member)}\n" }.join
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/core_ext'
4
+
5
+ module Avmtrf1
6
+ module Tools
7
+ class Runner
8
+ class Msgraph
9
+ class Team
10
+ runner_with :help, :subcommands do
11
+ pos_arg :team_id
12
+ subcommands
13
+ end
14
+ for_context :team
15
+
16
+ private
17
+
18
+ def team_uncached
19
+ api.root_entity.team(parsed.team_id)
20
+ end
21
+
22
+ require_sub __FILE__
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -12,7 +12,12 @@ module Avmtrf1
12
12
  arg_opt '-i', '--client-id', 'ID de aplicação cliente alternativo.'
13
13
  subcommands
14
14
  end
15
- for_context :api
15
+ for_context :api, :api_banner
16
+
17
+ def api_banner
18
+ infov 'Client ID', api.client_id
19
+ infov 'Root URL', api.root_url
20
+ end
16
21
 
17
22
  def client_id
18
23
  client_id_by_argument || client_id_by_config
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avmtrf1
4
4
  module Tools
5
- VERSION = '0.40.0'
5
+ VERSION = '0.41.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avmtrf1-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
4
+ version: 0.41.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-30 00:00:00.000000000 Z
11
+ date: 2023-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-selenium
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '0.18'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 0.18.1
36
+ version: 0.18.2
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,21 +43,21 @@ dependencies:
43
43
  version: '0.18'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 0.18.1
46
+ version: 0.18.2
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: avm-tools
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.153'
53
+ version: '0.154'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.153'
60
+ version: '0.154'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: eac_rest
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -101,7 +101,7 @@ dependencies:
101
101
  version: '1.15'
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: 1.15.2
104
+ version: 1.15.3
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
@@ -111,7 +111,7 @@ dependencies:
111
111
  version: '1.15'
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
- version: 1.15.2
114
+ version: 1.15.3
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: recursive-open-struct
117
117
  requirement: !ruby/object:Gem::Requirement
@@ -318,8 +318,13 @@ files:
318
318
  - lib/avmtrf1/tools/core_ext.rb
319
319
  - lib/avmtrf1/tools/msgraph.rb
320
320
  - lib/avmtrf1/tools/msgraph/api.rb
321
+ - lib/avmtrf1/tools/msgraph/api/entity.rb
322
+ - lib/avmtrf1/tools/msgraph/api/member.rb
321
323
  - lib/avmtrf1/tools/msgraph/api/root.rb
322
324
  - lib/avmtrf1/tools/msgraph/api/team.rb
325
+ - lib/avmtrf1/tools/msgraph/invalid_token_error.rb
326
+ - lib/avmtrf1/tools/msgraph/request_mixin.rb
327
+ - lib/avmtrf1/tools/msgraph/response_mixin.rb
323
328
  - lib/avmtrf1/tools/msgraph/token_retrieve.rb
324
329
  - lib/avmtrf1/tools/runner.rb
325
330
  - lib/avmtrf1/tools/runner/check_point.rb
@@ -341,6 +346,9 @@ files:
341
346
  - lib/avmtrf1/tools/runner/inventario_sistemas.rb
342
347
  - lib/avmtrf1/tools/runner/msgraph.rb
343
348
  - lib/avmtrf1/tools/runner/msgraph/joined_teams.rb
349
+ - lib/avmtrf1/tools/runner/msgraph/request.rb
350
+ - lib/avmtrf1/tools/runner/msgraph/team.rb
351
+ - lib/avmtrf1/tools/runner/msgraph/team/members.rb
344
352
  - lib/avmtrf1/tools/runner/msgraph/token.rb
345
353
  - lib/avmtrf1/tools/runner/node_js.rb
346
354
  - lib/avmtrf1/tools/runner/node_js/docker.rb