avmtrf1-tools 0.41.1 → 0.42.0

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: 7c004c200bbd53b895d1ab4b9df5d5e2f01f7d0b3c77605fb6f1049e96c01d66
4
- data.tar.gz: 100127b8522690406d21d3f352e97546ddbd9b066127955d227b9bd57f6fa07a
3
+ metadata.gz: 73ca9a438c2acc50c74bda3da77ac125188cde76748561f720fce83c98501594
4
+ data.tar.gz: abd8fb430e69bc6e79612950f519f390ac2ba1113642e6be8d615c16e25599e0
5
5
  SHA512:
6
- metadata.gz: b46dc0766ba4a2f5b3c6515608192f79ad8fc301b23b2b57a8a892b1307dc5bd35a95e2daf7435c4b575211d039456b28ee6eb2721e4995dd8386fc55f25c357
7
- data.tar.gz: a3eb77e607af031c654dd26e5fef97dc7cfc195d140073dd3343b1087e6e073a6757b7a38084e6dc83cf741736df47cb27acdcdc16e1057a3a2ca6dfabfbaa4e
6
+ metadata.gz: 56891d5de729710444c7279ed072e826b5f2bb91fe575415d92bf40789187e8342e6db923c0faabd784ac175f6e2601ac8b14e503bcc27217ae0308b67126cb5
7
+ data.tar.gz: fa085736e91ce1b4064c4e2ca217810de040ccc44cac42476ed553ca729f757d0c633d56cfaaee2bef0f9c36b3f9909895879ff303e6313f0821beff9fabf088
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avmtrf1/tools/msgraph/request_mixin'
3
4
  require 'eac_rest/entity'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
@@ -8,13 +9,25 @@ module Avmtrf1
8
9
  module Msgraph
9
10
  class Api < ::EacRest::Api
10
11
  class Entity < ::EacRest::Entity
11
- def request_data(url_suffix)
12
- req = api.request(url_suffix)
12
+ def request_data(url_suffix, &block)
13
+ req = request_data_request(url_suffix, &block)
13
14
  req.response.body_data_or_raise
14
- rescue ::Avmtrf1::Tools::Msgraph::InvalidTokenError
15
+ rescue ::Avmtrf1::Tools::Msgraph::Error => e
16
+ raise e unless e.invalid_token?
17
+
15
18
  api.clear_token_info
16
19
  req.response.body_data_or_raise
17
20
  end
21
+
22
+ private
23
+
24
+ # @return [EacRest::Request]
25
+ def request_data_request(url_suffix, &block)
26
+ req = api.request(url_suffix)
27
+ req = block.call(req) if block
28
+ req.singleton_class.prepend(::Avmtrf1::Tools::Msgraph::RequestMixin)
29
+ req
30
+ end
18
31
  end
19
32
  end
20
33
  end
@@ -0,0 +1,36 @@
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 Team < ::Avmtrf1::Tools::Msgraph::Api::Entity
11
+ class MemberAdd
12
+ acts_as_instance_method
13
+
14
+ common_constructor :team, :user_id
15
+
16
+ # @return [Hash]
17
+ def result
18
+ team.members_request do |req|
19
+ req.verb(:post).header('Content-type', 'application/json')
20
+ .body_data(body_hash.to_json)
21
+ end
22
+ end
23
+
24
+ # @return [Hash]
25
+ def body_hash
26
+ {
27
+ '@odata.type' => '#microsoft.graph.aadUserConversationMember',
28
+ 'user@odata.bind' => "https://graph.microsoft.com/v1.0/users('#{user_id}')"
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -21,10 +21,17 @@ module Avmtrf1
21
21
  end
22
22
 
23
23
  def members
24
- request_data("/teams/#{id}/members").map do |member_data|
24
+ members_request.map do |member_data|
25
25
  child_entity(::Avmtrf1::Tools::Msgraph::Api::Member, member_data)
26
26
  end
27
27
  end
28
+
29
+ # @return [EacRest::Request]
30
+ def members_request(&block)
31
+ request_data("/teams/#{id}/members", &block)
32
+ end
33
+
34
+ require_sub __FILE__, require_mode: :kernel
28
35
  end
29
36
  end
30
37
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avmtrf1/tools/msgraph/request_mixin'
4
3
  require 'eac_rest/api'
5
4
  require 'eac_ruby_utils/core_ext'
6
5
 
@@ -26,10 +25,8 @@ module Avmtrf1
26
25
 
27
26
  # @return [EacRest::Request]
28
27
  def request(service_url_suffix, headers = {}, &body_data_proc)
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
28
+ super(service_url_suffix, headers, &body_data_proc)
29
+ .header('Authorization', "Bearer #{access_token}")
33
30
  end
34
31
 
35
32
  def fs_object_id
@@ -0,0 +1,31 @@
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 Error < ::EacRest::Error
10
+ INVALID_TOKEN_CODE = 'InvalidAuthenticationToken'
11
+
12
+ attr_reader :data
13
+
14
+ def initialize(data)
15
+ @data = data
16
+ super(data.pretty_inspect)
17
+ end
18
+
19
+ # @return [String]
20
+ def code
21
+ data.fetch('code')
22
+ end
23
+
24
+ # @return [Boolean]
25
+ def invalid_token?
26
+ code == INVALID_TOKEN_CODE
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avmtrf1/tools/msgraph/invalid_token_error'
3
+ require 'eac_rest/response'
4
+ require 'avmtrf1/tools/msgraph/error'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
6
7
  module Avmtrf1
@@ -8,42 +9,13 @@ module Avmtrf1
8
9
  module Msgraph
9
10
  module ResponseMixin
10
11
  ERROR_KEY = 'error'
11
- INVALID_TOKEN_CODE = 'InvalidAuthenticationToken'
12
12
  VALUE_KEY = 'value'
13
13
 
14
14
  def body_data_or_raise
15
- check_invalid_token
16
15
  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
16
+ r.is_a?(::Hash) && r.key?(VALUE_KEY) ? r.fetch(VALUE_KEY) : r
17
+ rescue ::EacRest::Response => e
18
+ raise ::Avmtrf1::Tools::Msgraph::Error, e.body_data.fetch(ERROR_KEY)
47
19
  end
48
20
  end
49
21
  end
@@ -8,7 +8,9 @@ module Avmtrf1
8
8
  class Runner
9
9
  class Msgraph
10
10
  class JoinedTeams
11
- runner_with :help, :output do
11
+ LIST_COLUMNS = %w[id display_name].freeze
12
+
13
+ runner_with :help, :output_list do
12
14
  desc 'Lista as próprias equipes no MS Teams.'
13
15
  end
14
16
 
@@ -17,12 +19,16 @@ module Avmtrf1
17
19
  run_output
18
20
  end
19
21
 
20
- private
22
+ def list_columns
23
+ LIST_COLUMNS
24
+ end
21
25
 
22
- def output_content
23
- teams.map { |t| "#{t.id}|#{t.display_name}\n" }.join
26
+ def list_rows
27
+ teams
24
28
  end
25
29
 
30
+ private
31
+
26
32
  def teams_uncached
27
33
  api.root_entity.joined_teams.sort_by { |t| [t.display_name, t.id] }
28
34
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/core_ext'
4
+ require 'avmtrf1/tools/msgraph/error'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ class Runner
9
+ class Msgraph
10
+ class Team
11
+ class Member
12
+ class Add
13
+ runner_with :help, :output_item
14
+
15
+ def run
16
+ start_banner
17
+ add_member
18
+ run_output
19
+ fatal_error error.code if error.present?
20
+ end
21
+
22
+ private
23
+
24
+ attr_accessor :error, :result_data
25
+
26
+ def add_member
27
+ self.error = nil
28
+ self.result_data = team.member_add(member_id)
29
+ rescue ::Avmtrf1::Tools::Msgraph::Error => e
30
+ self.error = e
31
+ self.result_data = error.data
32
+ end
33
+
34
+ def start_banner
35
+ infov 'Team', team.id
36
+ infov 'Member ID', member_id
37
+ end
38
+
39
+ def item_hash
40
+ result_data
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,25 @@
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 Member
11
+ runner_with :help, :subcommands do
12
+ pos_arg :member_id
13
+ subcommands
14
+ end
15
+ for_context :member_id
16
+
17
+ delegate :member_id, to: :parsed
18
+
19
+ require_sub __FILE__
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -8,25 +8,27 @@ module Avmtrf1
8
8
  class Msgraph
9
9
  class Team
10
10
  class Members
11
- runner_with :help, :output
11
+ LIST_COLUMNS = %w[id email display_name].freeze
12
+
13
+ runner_with :help, :output_list
12
14
 
13
15
  def run
14
16
  infov 'Found', members.count
15
17
  run_output
16
18
  end
17
19
 
18
- private
19
-
20
- def members_uncached
21
- team.members.sort_by { |m| [m.email, m.id] }
20
+ def list_columns
21
+ LIST_COLUMNS
22
22
  end
23
23
 
24
- def format_member(member)
25
- %w[email display_name].map { |k| member.send(k) }.join('|')
24
+ def list_rows
25
+ members
26
26
  end
27
27
 
28
- def output_content
29
- members.map { |member| "#{format_member(member)}\n" }.join
28
+ private
29
+
30
+ def members_uncached
31
+ team.members.sort_by { |m| [m.email || '_BLANK_', m.id] }
30
32
  end
31
33
  end
32
34
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avmtrf1
4
4
  module Tools
5
- VERSION = '0.41.1'
5
+ VERSION = '0.42.0'
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.41.1
4
+ version: 0.42.0
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-07-21 00:00:00.000000000 Z
11
+ date: 2023-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-selenium
@@ -64,20 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.9'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.9.1
67
+ version: '0.10'
71
68
  type: :runtime
72
69
  prerelease: false
73
70
  version_requirements: !ruby/object:Gem::Requirement
74
71
  requirements:
75
72
  - - "~>"
76
73
  - !ruby/object:Gem::Version
77
- version: '0.9'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.9.1
74
+ version: '0.10'
81
75
  - !ruby/object:Gem::Dependency
82
76
  name: inifile
83
77
  requirement: !ruby/object:Gem::Requirement
@@ -101,7 +95,7 @@ dependencies:
101
95
  version: '1.15'
102
96
  - - ">="
103
97
  - !ruby/object:Gem::Version
104
- version: 1.15.3
98
+ version: 1.15.4
105
99
  type: :runtime
106
100
  prerelease: false
107
101
  version_requirements: !ruby/object:Gem::Requirement
@@ -111,7 +105,7 @@ dependencies:
111
105
  version: '1.15'
112
106
  - - ">="
113
107
  - !ruby/object:Gem::Version
114
- version: 1.15.3
108
+ version: 1.15.4
115
109
  - !ruby/object:Gem::Dependency
116
110
  name: recursive-open-struct
117
111
  requirement: !ruby/object:Gem::Requirement
@@ -322,7 +316,8 @@ files:
322
316
  - lib/avmtrf1/tools/msgraph/api/member.rb
323
317
  - lib/avmtrf1/tools/msgraph/api/root.rb
324
318
  - lib/avmtrf1/tools/msgraph/api/team.rb
325
- - lib/avmtrf1/tools/msgraph/invalid_token_error.rb
319
+ - lib/avmtrf1/tools/msgraph/api/team/member_add.rb
320
+ - lib/avmtrf1/tools/msgraph/error.rb
326
321
  - lib/avmtrf1/tools/msgraph/request_mixin.rb
327
322
  - lib/avmtrf1/tools/msgraph/response_mixin.rb
328
323
  - lib/avmtrf1/tools/msgraph/token_retrieve.rb
@@ -348,6 +343,8 @@ files:
348
343
  - lib/avmtrf1/tools/runner/msgraph/joined_teams.rb
349
344
  - lib/avmtrf1/tools/runner/msgraph/request.rb
350
345
  - lib/avmtrf1/tools/runner/msgraph/team.rb
346
+ - lib/avmtrf1/tools/runner/msgraph/team/member.rb
347
+ - lib/avmtrf1/tools/runner/msgraph/team/member/add.rb
351
348
  - lib/avmtrf1/tools/runner/msgraph/team/members.rb
352
349
  - lib/avmtrf1/tools/runner/msgraph/token.rb
353
350
  - lib/avmtrf1/tools/runner/node_js.rb
@@ -1,13 +0,0 @@
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