teems 0.3.3 → 0.8.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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +67 -0
  3. data/README.md +77 -0
  4. data/bin/teems +8 -1
  5. data/lib/teems/api/calendar.rb +45 -14
  6. data/lib/teems/api/client.rb +19 -4
  7. data/lib/teems/api/mail.rb +132 -0
  8. data/lib/teems/api/mail_actions.rb +22 -0
  9. data/lib/teems/api/mail_rules.rb +24 -0
  10. data/lib/teems/cli.rb +2 -0
  11. data/lib/teems/commands/base.rb +31 -7
  12. data/lib/teems/commands/cal.rb +109 -28
  13. data/lib/teems/commands/cal_ics.rb +47 -0
  14. data/lib/teems/commands/confirmation.rb +19 -0
  15. data/lib/teems/commands/help.rb +4 -0
  16. data/lib/teems/commands/mail.rb +207 -0
  17. data/lib/teems/commands/mail_decrypting.rb +46 -0
  18. data/lib/teems/commands/mail_help.rb +85 -0
  19. data/lib/teems/commands/mail_rules.rb +201 -0
  20. data/lib/teems/commands/mail_sync.rb +92 -0
  21. data/lib/teems/commands/mail_thread.rb +87 -0
  22. data/lib/teems/commands/mail_triage.rb +241 -0
  23. data/lib/teems/commands/meet.rb +159 -0
  24. data/lib/teems/commands/sync.rb +15 -8
  25. data/lib/teems/commands/sync_folders.rb +118 -0
  26. data/lib/teems/formatters/format_utils.rb +23 -2
  27. data/lib/teems/formatters/html_entities.rb +49 -0
  28. data/lib/teems/formatters/html_text.rb +181 -0
  29. data/lib/teems/formatters/ics_format.rb +112 -0
  30. data/lib/teems/formatters/link_cleaner.rb +91 -0
  31. data/lib/teems/formatters/link_collector.rb +70 -0
  32. data/lib/teems/formatters/mail_formatter.rb +58 -0
  33. data/lib/teems/formatters/mail_markdown.rb +70 -0
  34. data/lib/teems/formatters/mail_rule_formatter.rb +45 -0
  35. data/lib/teems/formatters/mail_rule_text.rb +67 -0
  36. data/lib/teems/formatters/output.rb +45 -8
  37. data/lib/teems/models/chat.rb +19 -5
  38. data/lib/teems/models/event.rb +1 -23
  39. data/lib/teems/models/event_display.rb +40 -0
  40. data/lib/teems/models/ics_event.rb +60 -0
  41. data/lib/teems/models/mail_conversation.rb +62 -0
  42. data/lib/teems/models/mail_encryption.rb +41 -0
  43. data/lib/teems/models/mail_folder.rb +44 -0
  44. data/lib/teems/models/mail_message.rb +152 -0
  45. data/lib/teems/models/mail_rule.rb +38 -0
  46. data/lib/teems/runner.rb +6 -0
  47. data/lib/teems/services/api_client.rb +23 -11
  48. data/lib/teems/services/browser.rb +17 -0
  49. data/lib/teems/services/clipboard.rb +17 -0
  50. data/lib/teems/services/mail_folders.rb +76 -0
  51. data/lib/teems/services/mail_id_cache.rb +51 -0
  52. data/lib/teems/services/mail_legacy_files.rb +96 -0
  53. data/lib/teems/services/mail_sync_attachments.rb +103 -0
  54. data/lib/teems/services/mail_sync_engine.rb +98 -0
  55. data/lib/teems/services/mail_sync_folder.rb +142 -0
  56. data/lib/teems/services/mail_sync_store.rb +116 -0
  57. data/lib/teems/services/smime_content.rb +36 -0
  58. data/lib/teems/services/smime_decryptor.rb +36 -0
  59. data/lib/teems/services/sync_dir_naming.rb +16 -10
  60. data/lib/teems/services/sync_dir_ownership.rb +111 -0
  61. data/lib/teems/services/sync_dir_planning.rb +130 -0
  62. data/lib/teems/services/sync_store.rb +20 -43
  63. data/lib/teems/services/token_extractor.rb +4 -0
  64. data/lib/teems/support/control_chars.rb +19 -0
  65. data/lib/teems/support/mime_header.rb +61 -0
  66. data/lib/teems/support/mime_part.rb +97 -0
  67. data/lib/teems/support/signed_data.rb +23 -0
  68. data/lib/teems/support/time_parsing.rb +9 -1
  69. data/lib/teems/version.rb +1 -1
  70. data/lib/teems.rb +63 -2
  71. metadata +48 -1
data/lib/teems.rb CHANGED
@@ -16,10 +16,12 @@ module Teems
16
16
 
17
17
  # Error raised when a Teams API request fails (4xx/5xx responses)
18
18
  class ApiError < Error
19
- attr_reader :status_code
19
+ # error_code is the service's own code (Graph's error.code, e.g. "syncStateNotFound")
20
+ attr_reader :status_code, :error_code
20
21
 
21
- def initialize(message = nil, status_code: nil)
22
+ def initialize(message = nil, status_code: nil, error_code: nil)
22
23
  @status_code = status_code
24
+ @error_code = error_code
23
25
  super(message)
24
26
  end
25
27
 
@@ -48,6 +50,8 @@ module Teems
48
50
  autoload :Channel, 'teems/models/channel'
49
51
  autoload :Chat, 'teems/models/chat'
50
52
  autoload :Event, 'teems/models/event'
53
+ autoload :IcsEvent, 'teems/models/ics_event'
54
+ autoload :EventDisplay, 'teems/models/event_display'
51
55
  autoload :Message, 'teems/models/message'
52
56
  autoload :InlineImage, 'teems/models/inline_image'
53
57
  autoload :InlineImageParsing, 'teems/models/inline_image'
@@ -55,6 +59,12 @@ module Teems
55
59
  autoload :User, 'teems/models/user'
56
60
  autoload :UserProfile, 'teems/models/user_profile'
57
61
  autoload :Duration, 'teems/models/duration'
62
+ autoload :MailFolder, 'teems/models/mail_folder'
63
+ autoload :MailMessage, 'teems/models/mail_message'
64
+ autoload :MailConversation, 'teems/models/mail_conversation'
65
+ autoload :MailEncryption, 'teems/models/mail_encryption'
66
+ autoload :MailRule, 'teems/models/mail_rule'
67
+ autoload :MAIL_RULE_SENDING_ACTIONS, 'teems/models/mail_rule'
58
68
  end
59
69
 
60
70
  # Application services for configuration, caching, and API communication
@@ -69,10 +79,25 @@ module Teems
69
79
  autoload :InlineImageDownloader, 'teems/services/inline_image_downloader'
70
80
  autoload :TeamsUrlParser, 'teems/services/teams_url_parser'
71
81
  autoload :SyncStore, 'teems/services/sync_store'
82
+ autoload :SyncFileOps, 'teems/services/sync_store'
72
83
  autoload :SyncDirNaming, 'teems/services/sync_dir_naming'
84
+ autoload :SyncDirOwnership, 'teems/services/sync_dir_ownership'
85
+ autoload :SyncDirPlanning, 'teems/services/sync_dir_planning'
73
86
  autoload :SafariJsRunner, 'teems/services/safari_js_runner'
74
87
  autoload :SyncEngine, 'teems/services/sync_engine'
75
88
  autoload :SyncImages, 'teems/services/sync_images'
89
+ autoload :MailFolders, 'teems/services/mail_folders'
90
+ autoload :MailIdCache, 'teems/services/mail_id_cache'
91
+ autoload :Browser, 'teems/services/browser'
92
+ autoload :Clipboard, 'teems/services/clipboard'
93
+ autoload :SmimeContent, 'teems/services/smime_content'
94
+ autoload :SmimeDecryptor, 'teems/services/smime_decryptor'
95
+ autoload :MailLegacyFiles, 'teems/services/mail_legacy_files'
96
+ autoload :MailSyncAttachments, 'teems/services/mail_sync_attachments'
97
+ autoload :MailSyncEngine, 'teems/services/mail_sync_engine'
98
+ autoload :MailSyncFolder, 'teems/services/mail_sync_folder'
99
+ autoload :MailSyncIndex, 'teems/services/mail_sync_folder'
100
+ autoload :MailSyncStore, 'teems/services/mail_sync_store'
76
101
  end
77
102
 
78
103
  # Output formatters for messages and terminal output
@@ -82,7 +107,19 @@ module Teems
82
107
  autoload :MessageFormatter, 'teems/formatters/message_formatter'
83
108
  autoload :MarkdownFormatter, 'teems/formatters/markdown_formatter'
84
109
  autoload :CalendarFormatter, 'teems/formatters/calendar_formatter'
110
+ autoload :IcsFormat, 'teems/formatters/ics_format'
85
111
  autoload :TranscriptMarkdown, 'teems/formatters/transcript_markdown'
112
+ autoload :HtmlEntities, 'teems/formatters/html_entities'
113
+ autoload :HtmlTags, 'teems/formatters/html_text'
114
+ autoload :HtmlText, 'teems/formatters/html_text'
115
+ autoload :TextBuffer, 'teems/formatters/html_text'
116
+ autoload :LinkCleaner, 'teems/formatters/link_cleaner'
117
+ autoload :LinkCollector, 'teems/formatters/link_collector'
118
+ autoload :MailDates, 'teems/formatters/mail_formatter'
119
+ autoload :MailFormatter, 'teems/formatters/mail_formatter'
120
+ autoload :MailMarkdown, 'teems/formatters/mail_markdown'
121
+ autoload :MailRuleText, 'teems/formatters/mail_rule_text'
122
+ autoload :MailRuleFormatter, 'teems/formatters/mail_rule_formatter'
86
123
  end
87
124
 
88
125
  # CLI commands implementing user-facing functionality
@@ -91,17 +128,33 @@ module Teems
91
128
  autoload :Activity, 'teems/commands/activity'
92
129
  autoload :Auth, 'teems/commands/auth'
93
130
  autoload :Cal, 'teems/commands/cal'
131
+ autoload :CalIcsExport, 'teems/commands/cal_ics'
94
132
  autoload :Channels, 'teems/commands/channels'
95
133
  autoload :Chats, 'teems/commands/chats'
96
134
  autoload :Messages, 'teems/commands/messages'
97
135
  autoload :Sync, 'teems/commands/sync'
136
+ autoload :SyncFolders, 'teems/commands/sync_folders'
98
137
  autoload :Help, 'teems/commands/help'
99
138
  autoload :Who, 'teems/commands/who'
100
139
  autoload :Ooo, 'teems/commands/ooo'
101
140
  autoload :Org, 'teems/commands/org'
102
141
  autoload :Meeting, 'teems/commands/meeting'
142
+ autoload :Meet, 'teems/commands/meet'
103
143
  autoload :Transcripts, 'teems/commands/transcripts'
104
144
  autoload :Status, 'teems/commands/status'
145
+ autoload :Mail, 'teems/commands/mail'
146
+ autoload :MailReading, 'teems/commands/mail'
147
+ autoload :MailDecrypting, 'teems/commands/mail_decrypting'
148
+ autoload :MailThread, 'teems/commands/mail_thread'
149
+ autoload :MailTriage, 'teems/commands/mail_triage'
150
+ autoload :MailDueDate, 'teems/commands/mail_triage'
151
+ autoload :MailSelection, 'teems/commands/mail_triage'
152
+ autoload :MailHelp, 'teems/commands/mail_help'
153
+ autoload :MailRules, 'teems/commands/mail_rules'
154
+ autoload :MailRuleOptions, 'teems/commands/mail_rules'
155
+ autoload :MailRuleBuilder, 'teems/commands/mail_rules'
156
+ autoload :Confirmation, 'teems/commands/confirmation'
157
+ autoload :MailSyncing, 'teems/commands/mail_sync'
105
158
  end
106
159
 
107
160
  # Thin wrappers around Teams API endpoints
@@ -111,6 +164,10 @@ module Teems
111
164
  autoload :Channels, 'teems/api/channels'
112
165
  autoload :Chats, 'teems/api/chats'
113
166
  autoload :Files, 'teems/api/files'
167
+ autoload :Mail, 'teems/api/mail'
168
+ autoload :MailActions, 'teems/api/mail_actions'
169
+ autoload :MailRules, 'teems/api/mail_rules'
170
+ autoload :MailPaths, 'teems/api/mail'
114
171
  autoload :Meetings, 'teems/api/meetings'
115
172
  autoload :Messages, 'teems/api/messages'
116
173
  autoload :Users, 'teems/api/users'
@@ -124,5 +181,9 @@ module Teems
124
181
  autoload :Timezone, 'teems/support/timezone'
125
182
  autoload :TimeParsing, 'teems/support/time_parsing'
126
183
  autoload :Subprocess, 'teems/support/subprocess'
184
+ autoload :MimeHeader, 'teems/support/mime_header'
185
+ autoload :MimePart, 'teems/support/mime_part'
186
+ autoload :SignedData, 'teems/support/signed_data'
187
+ autoload :ControlChars, 'teems/support/control_chars'
127
188
  end
128
189
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teems
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Boehs
@@ -28,6 +28,9 @@ files:
28
28
  - lib/teems/api/chats.rb
29
29
  - lib/teems/api/client.rb
30
30
  - lib/teems/api/files.rb
31
+ - lib/teems/api/mail.rb
32
+ - lib/teems/api/mail_actions.rb
33
+ - lib/teems/api/mail_rules.rb
31
34
  - lib/teems/api/meetings.rb
32
35
  - lib/teems/api/messages.rb
33
36
  - lib/teems/api/users.rb
@@ -38,9 +41,19 @@ files:
38
41
  - lib/teems/commands/auth.rb
39
42
  - lib/teems/commands/base.rb
40
43
  - lib/teems/commands/cal.rb
44
+ - lib/teems/commands/cal_ics.rb
41
45
  - lib/teems/commands/channels.rb
42
46
  - lib/teems/commands/chats.rb
47
+ - lib/teems/commands/confirmation.rb
43
48
  - lib/teems/commands/help.rb
49
+ - lib/teems/commands/mail.rb
50
+ - lib/teems/commands/mail_decrypting.rb
51
+ - lib/teems/commands/mail_help.rb
52
+ - lib/teems/commands/mail_rules.rb
53
+ - lib/teems/commands/mail_sync.rb
54
+ - lib/teems/commands/mail_thread.rb
55
+ - lib/teems/commands/mail_triage.rb
56
+ - lib/teems/commands/meet.rb
44
57
  - lib/teems/commands/meeting.rb
45
58
  - lib/teems/commands/meeting_recording.rb
46
59
  - lib/teems/commands/meeting_transcript.rb
@@ -49,10 +62,20 @@ files:
49
62
  - lib/teems/commands/org.rb
50
63
  - lib/teems/commands/status.rb
51
64
  - lib/teems/commands/sync.rb
65
+ - lib/teems/commands/sync_folders.rb
52
66
  - lib/teems/commands/transcripts.rb
53
67
  - lib/teems/commands/who.rb
54
68
  - lib/teems/formatters/calendar_formatter.rb
55
69
  - lib/teems/formatters/format_utils.rb
70
+ - lib/teems/formatters/html_entities.rb
71
+ - lib/teems/formatters/html_text.rb
72
+ - lib/teems/formatters/ics_format.rb
73
+ - lib/teems/formatters/link_cleaner.rb
74
+ - lib/teems/formatters/link_collector.rb
75
+ - lib/teems/formatters/mail_formatter.rb
76
+ - lib/teems/formatters/mail_markdown.rb
77
+ - lib/teems/formatters/mail_rule_formatter.rb
78
+ - lib/teems/formatters/mail_rule_text.rb
56
79
  - lib/teems/formatters/markdown_formatter.rb
57
80
  - lib/teems/formatters/message_formatter.rb
58
81
  - lib/teems/formatters/output.rb
@@ -62,21 +85,41 @@ files:
62
85
  - lib/teems/models/chat.rb
63
86
  - lib/teems/models/duration.rb
64
87
  - lib/teems/models/event.rb
88
+ - lib/teems/models/event_display.rb
89
+ - lib/teems/models/ics_event.rb
65
90
  - lib/teems/models/inline_image.rb
91
+ - lib/teems/models/mail_conversation.rb
92
+ - lib/teems/models/mail_encryption.rb
93
+ - lib/teems/models/mail_folder.rb
94
+ - lib/teems/models/mail_message.rb
95
+ - lib/teems/models/mail_rule.rb
66
96
  - lib/teems/models/message.rb
67
97
  - lib/teems/models/parsing.rb
68
98
  - lib/teems/models/user.rb
69
99
  - lib/teems/models/user_profile.rb
70
100
  - lib/teems/runner.rb
71
101
  - lib/teems/services/api_client.rb
102
+ - lib/teems/services/browser.rb
72
103
  - lib/teems/services/cache_store.rb
104
+ - lib/teems/services/clipboard.rb
73
105
  - lib/teems/services/configuration.rb
74
106
  - lib/teems/services/file_downloader.rb
75
107
  - lib/teems/services/headless_extract.rb
76
108
  - lib/teems/services/inline_image_downloader.rb
109
+ - lib/teems/services/mail_folders.rb
110
+ - lib/teems/services/mail_id_cache.rb
111
+ - lib/teems/services/mail_legacy_files.rb
112
+ - lib/teems/services/mail_sync_attachments.rb
113
+ - lib/teems/services/mail_sync_engine.rb
114
+ - lib/teems/services/mail_sync_folder.rb
115
+ - lib/teems/services/mail_sync_store.rb
77
116
  - lib/teems/services/safari_js_runner.rb
78
117
  - lib/teems/services/safari_oauth.rb
118
+ - lib/teems/services/smime_content.rb
119
+ - lib/teems/services/smime_decryptor.rb
79
120
  - lib/teems/services/sync_dir_naming.rb
121
+ - lib/teems/services/sync_dir_ownership.rb
122
+ - lib/teems/services/sync_dir_planning.rb
80
123
  - lib/teems/services/sync_engine.rb
81
124
  - lib/teems/services/sync_images.rb
82
125
  - lib/teems/services/sync_store.rb
@@ -86,8 +129,12 @@ files:
86
129
  - lib/teems/services/token_extractor_scripts.rb
87
130
  - lib/teems/services/token_refresher.rb
88
131
  - lib/teems/services/token_store.rb
132
+ - lib/teems/support/control_chars.rb
89
133
  - lib/teems/support/error_logger.rb
90
134
  - lib/teems/support/help_formatter.rb
135
+ - lib/teems/support/mime_header.rb
136
+ - lib/teems/support/mime_part.rb
137
+ - lib/teems/support/signed_data.rb
91
138
  - lib/teems/support/subprocess.rb
92
139
  - lib/teems/support/time_parsing.rb
93
140
  - lib/teems/support/timezone.rb