platforms-yammer 0.1.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 (37) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +157 -0
  4. data/Rakefile +18 -0
  5. data/lib/generators/platforms/yammer/install/USAGE +11 -0
  6. data/lib/generators/platforms/yammer/install/install_generator.rb +29 -0
  7. data/lib/generators/platforms/yammer/install/templates/platforms_yammer.rb +4 -0
  8. data/lib/platforms/yammer.rb +15 -0
  9. data/lib/platforms/yammer/api.rb +39 -0
  10. data/lib/platforms/yammer/api/base.rb +20 -0
  11. data/lib/platforms/yammer/api/group_memberships.rb +35 -0
  12. data/lib/platforms/yammer/api/groups.rb +22 -0
  13. data/lib/platforms/yammer/api/invitations.rb +23 -0
  14. data/lib/platforms/yammer/api/messages.rb +165 -0
  15. data/lib/platforms/yammer/api/networks.rb +22 -0
  16. data/lib/platforms/yammer/api/oauth.rb +28 -0
  17. data/lib/platforms/yammer/api/open_graph_objects.rb +29 -0
  18. data/lib/platforms/yammer/api/pending_attachments.rb +34 -0
  19. data/lib/platforms/yammer/api/relationships.rb +39 -0
  20. data/lib/platforms/yammer/api/search.rb +22 -0
  21. data/lib/platforms/yammer/api/streams.rb +21 -0
  22. data/lib/platforms/yammer/api/subscriptions.rb +53 -0
  23. data/lib/platforms/yammer/api/suggestions.rb +31 -0
  24. data/lib/platforms/yammer/api/supervisor_mode.rb +22 -0
  25. data/lib/platforms/yammer/api/threads.rb +23 -0
  26. data/lib/platforms/yammer/api/topics.rb +23 -0
  27. data/lib/platforms/yammer/api/uploaded_files.rb +22 -0
  28. data/lib/platforms/yammer/api/users.rb +109 -0
  29. data/lib/platforms/yammer/authentication.rb +233 -0
  30. data/lib/platforms/yammer/client.rb +228 -0
  31. data/lib/platforms/yammer/configuration.rb +76 -0
  32. data/lib/platforms/yammer/engine.rb +27 -0
  33. data/lib/platforms/yammer/omni_auth_setup.rb +31 -0
  34. data/lib/platforms/yammer/railtie.rb +19 -0
  35. data/lib/platforms/yammer/version.rb +7 -0
  36. data/lib/tasks/platforms/yammer_tasks.rake +4 -0
  37. metadata +280 -0
@@ -0,0 +1,76 @@
1
+ module Platforms
2
+ module Yammer
3
+
4
+ # Configuration pattern for Rails, allows defaults and initializers to
5
+ # override those defaults.
6
+ # @see https://stackoverflow.com/a/24151439 Stack Overflow
7
+ class << self
8
+
9
+ # Get the configuration
10
+ # @return [Configuration] the current configuration
11
+ def configuration
12
+ @configuration ||= Configuration.new
13
+ end
14
+
15
+ # Used by initializers to set the configuration
16
+ # @yieldparam configuration [Configuration] the object to configure
17
+ def configure
18
+ yield configuration
19
+ end
20
+ end
21
+
22
+ # The class which stores the gem's configuration
23
+ # Should only store Yammer configuration options, other configuration
24
+ # options should be made in core.
25
+ #
26
+ # @author Benjamin Elias
27
+ # @since 0.1.0
28
+ class Configuration
29
+ include ActiveSupport::Configurable
30
+
31
+ ##
32
+ # The default client_id, if no saved {Platforms::Certificate} exists.
33
+ # A saved Certificate will be used in preference to this default.
34
+ # @return [String] the default client_id
35
+ config_accessor(:client_id, instance_reader: false)
36
+
37
+ def client_id
38
+ if config[:client_id].blank?
39
+ raise "Please configure Client ID as a non-empty value"
40
+ elsif config[:client_id] == 'your_client_id'
41
+ raise "Please configure Client ID as a real value, not 'your_client_id'"
42
+ end
43
+ config[:client_id]
44
+ end
45
+
46
+ ##
47
+ # The default client_secret, if no saved {Platforms::Certificate} exists.
48
+ # A saved Certificate will be used in preference to this default.
49
+ # @return [String] the default client_secret
50
+ config_accessor(:client_secret, instance_reader: false)
51
+
52
+ def client_secret
53
+ if config[:client_secret].blank?
54
+ raise "Please configure Client Secret as a non-empty value"
55
+ elsif config[:client_secret] == 'your_client_secret'
56
+ raise "Please configure Client Secret as a real value, not 'your_client_secret'"
57
+ end
58
+ config[:client_secret]
59
+ end
60
+
61
+ ##
62
+ # The base Yammer URL for API requests. Defaults to
63
+ # https://www.yammer.com/api/v1
64
+ # @return [String] the base Yammer URL
65
+ config_accessor(:api_base, instance_reader: false) do
66
+ 'https://www.yammer.com/api/v1'
67
+ end
68
+
69
+ def api_base
70
+ URI.parse config[:api_base]
71
+ config[:api_base]
72
+ end
73
+
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,27 @@
1
+ module Platforms
2
+ module Yammer
3
+
4
+ # Isolated Rails Engine
5
+ # @see https://guides.rubyonrails.org/engines.html
6
+ #
7
+ # @author Benjamin Elias
8
+ # @since 0.1.0
9
+ class Engine < ::Rails::Engine
10
+
11
+ # Isolate namespace, as generally required for gems
12
+ isolate_namespace Platforms::Yammer
13
+
14
+ # Use RSpec and FactoryBot
15
+ config.generators do |g|
16
+ g.test_framework :rspec
17
+ g.fixture_replacement :factory_bot
18
+ g.factory_bot dir: 'spec/factories'
19
+ end
20
+
21
+ # Set factory paths for FactoryBot
22
+ initializer "platforms.factories", :after => "factory_bot.set_factory_paths" do
23
+ FactoryBot.definition_file_paths << File.expand_path('../../../spec/factories', __FILE__) if defined?(FactoryBot)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,31 @@
1
+ require 'platforms/core'
2
+ require 'platforms/yammer/configuration'
3
+
4
+ module Platforms
5
+ module Yammer
6
+
7
+ # Yammer-specific requirements for OmniAuth setup.
8
+ # Sets the default certificate to the {Configuration} values.
9
+ # Setting Client ID and Client Secret are done in Platforms::Core:OmniAuthSetup
10
+ #
11
+ # @author Benjamin Elias
12
+ # @since 0.1.0
13
+ # @see https://www.createdbypete.com/dynamic-omniauth-provider-setup/ Dynamic providers.
14
+ # @see https://github.com/omniauth/omniauth/wiki/Setup-Phase OmniAuth Setup Phase
15
+ class OmniAuthSetup < ::Platforms::Core::OmniAuthSetup
16
+
17
+ # Create a Certificate with the default configuration setup
18
+ # according to the {Configuration} for client_id and client_secret,
19
+ # usually specified in the gem's initializer.
20
+ # This can be used if there is no Certificate saved in the database.
21
+ # @return [Platforms::Certificate] the Certificate to use by default
22
+ def default_certificate
23
+ Certificate.new do |c|
24
+ c.client_id = Platforms::Yammer.configuration.client_id
25
+ c.client_secret = Platforms::Yammer.configuration.client_secret
26
+ end
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ require 'omniauth'
2
+ require 'omniauth-yammer'
3
+ require 'platforms/yammer/omni_auth_setup'
4
+
5
+ module Platforms
6
+ module Yammer
7
+
8
+ # Railtie to configure OmniAuth with {OmniAuthSetup}
9
+ # @author Benjamin Elias
10
+ # @since 0.1.0
11
+ class Railtie < ::Rails::Railtie
12
+ initializer "configure OmniAuth for Yammer" do |app|
13
+ app.config.middleware.use ::OmniAuth::Builder do
14
+ provider :yammer, setup: OmniAuthSetup
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module Platforms
2
+ module Yammer
3
+ # Current version
4
+ # Use semantic versioning (major.minor.patch)
5
+ VERSION = '0.1.0'
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :platforms_yammer do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,280 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: platforms-yammer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Benjamin Elias
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 6.0.2.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '6.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 6.0.2.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: platforms-core
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0.1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: omniauth
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '1.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: omniauth-yammer
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.2.0
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 0.2.0
75
+ - !ruby/object:Gem::Dependency
76
+ name: faraday
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.0.0
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.0.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: faraday_middleware
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: sqlite3
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rspec-rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '4.0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '4.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: factory_bot_rails
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: generator_spec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: simplecov
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: webmock
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: yard
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: yard-activerecord
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ description: Authentication with OmniAuth, API integration
216
+ email:
217
+ - 12136262+collabital@users.noreply.github.com
218
+ executables: []
219
+ extensions: []
220
+ extra_rdoc_files: []
221
+ files:
222
+ - MIT-LICENSE
223
+ - README.md
224
+ - Rakefile
225
+ - lib/generators/platforms/yammer/install/USAGE
226
+ - lib/generators/platforms/yammer/install/install_generator.rb
227
+ - lib/generators/platforms/yammer/install/templates/platforms_yammer.rb
228
+ - lib/platforms/yammer.rb
229
+ - lib/platforms/yammer/api.rb
230
+ - lib/platforms/yammer/api/base.rb
231
+ - lib/platforms/yammer/api/group_memberships.rb
232
+ - lib/platforms/yammer/api/groups.rb
233
+ - lib/platforms/yammer/api/invitations.rb
234
+ - lib/platforms/yammer/api/messages.rb
235
+ - lib/platforms/yammer/api/networks.rb
236
+ - lib/platforms/yammer/api/oauth.rb
237
+ - lib/platforms/yammer/api/open_graph_objects.rb
238
+ - lib/platforms/yammer/api/pending_attachments.rb
239
+ - lib/platforms/yammer/api/relationships.rb
240
+ - lib/platforms/yammer/api/search.rb
241
+ - lib/platforms/yammer/api/streams.rb
242
+ - lib/platforms/yammer/api/subscriptions.rb
243
+ - lib/platforms/yammer/api/suggestions.rb
244
+ - lib/platforms/yammer/api/supervisor_mode.rb
245
+ - lib/platforms/yammer/api/threads.rb
246
+ - lib/platforms/yammer/api/topics.rb
247
+ - lib/platforms/yammer/api/uploaded_files.rb
248
+ - lib/platforms/yammer/api/users.rb
249
+ - lib/platforms/yammer/authentication.rb
250
+ - lib/platforms/yammer/client.rb
251
+ - lib/platforms/yammer/configuration.rb
252
+ - lib/platforms/yammer/engine.rb
253
+ - lib/platforms/yammer/omni_auth_setup.rb
254
+ - lib/platforms/yammer/railtie.rb
255
+ - lib/platforms/yammer/version.rb
256
+ - lib/tasks/platforms/yammer_tasks.rake
257
+ homepage: https://www.collabital.com
258
+ licenses:
259
+ - MIT
260
+ metadata: {}
261
+ post_install_message:
262
+ rdoc_options: []
263
+ require_paths:
264
+ - lib
265
+ required_ruby_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ required_rubygems_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - ">="
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
275
+ requirements: []
276
+ rubygems_version: 3.0.6
277
+ signing_key:
278
+ specification_version: 4
279
+ summary: Authentication and API integration with Yammer
280
+ test_files: []