platforms-yammer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []