yam 0.0.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.travis.yml +5 -0
  3. data/.yardopts +10 -0
  4. data/AUTHORS +1 -0
  5. data/CHANGELOG.md +7 -0
  6. data/CONTRIBUTING.md +0 -7
  7. data/Gemfile +27 -1
  8. data/README.md +190 -67
  9. data/Rakefile +9 -3
  10. data/certs/public.pem +20 -0
  11. data/lib/yammer.rb +47 -0
  12. data/lib/yammer/api.rb +29 -0
  13. data/lib/yammer/api/autocomplete.rb +39 -0
  14. data/lib/yammer/api/group.rb +92 -0
  15. data/lib/yammer/api/group_membership.rb +46 -0
  16. data/lib/yammer/api/invitation.rb +39 -0
  17. data/lib/yammer/api/like.rb +57 -0
  18. data/lib/yammer/api/message.rb +227 -0
  19. data/lib/yammer/api/network.rb +35 -0
  20. data/lib/yammer/api/notification.rb +32 -0
  21. data/lib/yammer/api/open_graph_object.rb +92 -0
  22. data/lib/yammer/api/pending_attachment.rb +64 -0
  23. data/lib/yammer/api/search.rb +42 -0
  24. data/lib/yammer/api/subscription.rb +32 -0
  25. data/lib/yammer/api/thread.rb +37 -0
  26. data/lib/yammer/api/topic.rb +37 -0
  27. data/lib/yammer/api/user.rb +168 -0
  28. data/lib/yammer/api_handler.rb +27 -0
  29. data/lib/yammer/api_response.rb +57 -0
  30. data/lib/yammer/base.rb +208 -0
  31. data/lib/yammer/client.rb +100 -0
  32. data/lib/yammer/configurable.rb +81 -0
  33. data/lib/yammer/error.rb +75 -0
  34. data/lib/yammer/group.rb +27 -0
  35. data/lib/yammer/group_membership.rb +25 -0
  36. data/lib/yammer/http_adapter.rb +100 -0
  37. data/lib/yammer/identity_map.rb +56 -0
  38. data/lib/yammer/message.rb +32 -0
  39. data/lib/yammer/message_body.rb +27 -0
  40. data/lib/yammer/pending_attachment.rb +19 -0
  41. data/lib/yammer/thread.rb +58 -0
  42. data/lib/yammer/user.rb +66 -0
  43. data/lib/yammer/version.rb +32 -0
  44. data/{lib/yam/configuration.rb → spec/api/autocomplete_spec.rb} +18 -23
  45. data/spec/api/group_membership_spec.rb +48 -0
  46. data/spec/api/group_spec.rb +76 -0
  47. data/spec/api/invitation_spec.rb +60 -0
  48. data/spec/api/like_spec.rb +46 -0
  49. data/spec/api/message_spec.rb +136 -0
  50. data/spec/api/network_spec.rb +41 -0
  51. data/{lib/yam/client.rb → spec/api/notification_spec.rb} +22 -4
  52. data/spec/api/open_graph_object_spec.rb +67 -0
  53. data/spec/api/pending_attachment_spec.rb +56 -0
  54. data/{lib/yam/constants.rb → spec/api/search_spec.rb} +21 -8
  55. data/spec/api/subscription_spec.rb +41 -0
  56. data/{lib/yam.rb → spec/api/thread_spec.rb} +19 -12
  57. data/{lib/yam/request.rb → spec/api/topic_spec.rb} +19 -15
  58. data/spec/api/user_spec.rb +108 -0
  59. data/spec/api_response.rb +86 -0
  60. data/spec/client_spec.rb +364 -0
  61. data/spec/error_spec.rb +88 -0
  62. data/spec/fixtures/group.json +1 -0
  63. data/spec/fixtures/message.json +1 -0
  64. data/spec/fixtures/messages_in_thread.json +1 -0
  65. data/spec/fixtures/portal_thread.json +1 -0
  66. data/spec/fixtures/private_thread.json +1 -0
  67. data/spec/fixtures/public_thread.json +1 -0
  68. data/spec/fixtures/user.json +1 -0
  69. data/spec/fixtures/users_followed.json +1 -0
  70. data/spec/fixtures/users_following.json +1 -0
  71. data/spec/http_adapter_spec.rb +109 -0
  72. data/spec/identity_map_spec.rb +127 -0
  73. data/spec/mocks/attachment.txt +1 -0
  74. data/spec/model/base_spec.rb +196 -0
  75. data/spec/model/group_membership_spec.rb +57 -0
  76. data/spec/model/group_spec.rb +73 -0
  77. data/spec/model/message_spec.rb +74 -0
  78. data/spec/model/thread_spec.rb +91 -0
  79. data/spec/model/user_spec.rb +222 -0
  80. data/spec/spec_helper.rb +39 -14
  81. data/yam.gemspec +50 -28
  82. metadata +270 -187
  83. metadata.gz.sig +0 -0
  84. data/lib/yam/api.rb +0 -53
  85. data/lib/yam/connection.rb +0 -57
  86. data/lib/yam/version.rb +0 -20
  87. data/spec/yam/client_spec.rb +0 -50
  88. data/spec/yam_spec.rb +0 -87
data.tar.gz.sig ADDED
Binary file
data/.travis.yml CHANGED
@@ -1,9 +1,14 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.0.0
3
4
  - 1.9.3
4
5
  - 1.9.2
5
6
  - 1.8.7
6
7
  - ree
8
+ - rbx-19mode
9
+ branches:
10
+ only:
11
+ - master
7
12
  before_install:
8
13
  - gem update --system
9
14
  - gem --version
data/.yardopts ADDED
@@ -0,0 +1,10 @@
1
+ --no-private
2
+ --protected
3
+ --tag api_path:"Rest API path"
4
+ --tag rate_limited:"Rate Limited?"
5
+ --tag authentication:"Authentication"
6
+ --markup markdown
7
+ -
8
+ CHANGELOG.md
9
+ LICENSE.md
10
+ README.md
data/AUTHORS ADDED
@@ -0,0 +1 @@
1
+ * Kevin Mutyaba <kmutyaba@microsoft.com>
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ 1.0.0
2
+ ====================================
3
+ - Customized fork of yammer-client (https://github.com/tiabas/yammer-client)
4
+
5
+ 0.0.6
6
+ ====================================
7
+ - Alpha
data/CONTRIBUTING.md CHANGED
@@ -81,10 +81,3 @@ Syntax
81
81
  * Follow the conventions you see used in the source already.
82
82
 
83
83
  And in case we didn't emphasize it enough: we love tests!
84
-
85
-
86
- Development process
87
- -------------------
88
-
89
- For details and screenshots of the feature branch code review process,
90
- read [this blog post](http://robots.thoughtbot.com/post/2831837714/feature-branch-code-reviews).
data/Gemfile CHANGED
@@ -1,4 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ # Copyright (c) Microsoft Corporation
4
+ # All rights reserved.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
13
+ # ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
14
+ # IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
15
+ # PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
16
+ #
17
+ # See the Apache Version 2.0 License for specific language governing
18
+ # permissions and limitations under the License.
19
+
1
20
  source 'https://rubygems.org'
2
21
 
3
- # Specify your gem's dependencies in yam.gemspec
22
+ group :test do
23
+ # gem 'json', :platforms => :ruby_18
24
+ gem 'rspec', '>= 2.11'
25
+ gem 'simplecov', :require => false
26
+ gem 'coveralls', :require => false
27
+ gem 'webmock', '>= 1.10.1'
28
+ end
29
+
4
30
  gemspec
data/README.md CHANGED
@@ -1,14 +1,25 @@
1
1
  Yam
2
- ===
2
+ =============
3
+ [![Gem Version](https://badge.fury.io/rb/yam.png)](http://badge.fury.io/rb/yam)
4
+ [![Build Status](https://travis-ci.org/yammer/yam.png?branch=master)][travis]
5
+ [![Coverage Status](https://coveralls.io/repos/yammer/yam/badge.png)](https://coveralls.io/r/yammer/yam)
3
6
 
4
- [![Build Status](https://api.travis-ci.org/yammer/yam.png)](https://travis-ci.org/yammer/yam)
7
+ [gemversion]: (http://badge.fury.io/rb/yam)
8
+ [travis]: (https://travis-ci.org/yammer/yam)
9
+ [coveralls]: (https://coveralls.io/r/yammer/yam)
5
10
 
6
- The official Yammer Ruby gem.
11
+ A Yammer Ruby gem
7
12
 
8
- NOTE: Currently in alpha - use at your own risk
13
+ ## Documentation
9
14
 
10
- Installation
11
- ------------
15
+ This README provides only a basic overview of how to use this gem.For more information about the API endpoints and helper methods available, look at the rdoc documentation.
16
+
17
+ [http://rdoc.info/github/yammer/yam][documentation]
18
+
19
+ [documentation]: http://rdoc.info/github/yammer/yam/index
20
+
21
+
22
+ ## Installation
12
23
 
13
24
  Add this line to your application's Gemfile:
14
25
 
@@ -28,119 +39,231 @@ Or install it yourself as:
28
39
  $ gem install yam
29
40
  ```
30
41
 
31
- General Configuration
32
- ---------------------
42
+ ## Configuration
33
43
 
34
- The Yammer API requires you to authenticate via OAuth, so you'll need to register your Yammer application. To register a new application, sign in to Yammer and then fill out the form at https://www.yammer.com/client_applications.
44
+ The Yammer API requires authentication for access to certain endpoints. Below are the basic steps to get this done.
35
45
 
36
- If you already have your access token, you can skip this section.
46
+ ### Register your application
37
47
 
38
- To retrieve your access token, follow these steps.
48
+ Setup a Yammer client application as described in [Build your first Yammer App](https://developer.yammer.com/introduction/)
39
49
 
40
- 1. Construct the following URL using the client_id you received after registering your app with Yammer: <https://www.yammer.com/dialog/oauth?client_id=[:client_id]>
50
+ ### Obtaining an access token
41
51
 
42
- 2. Follow the URL you constructed above. It will take you to a Yammer OAuth dialog. Click the "Allow" button.
52
+ 1. Construct the following URL using the client_id you received `https://www.yammer.com/dialog/oauth?client_id=[:client_id]`
43
53
 
44
- 3. You will be redirected to a URL that looks something like this: <http://[:redirect_uri]?code=[:code]>
54
+ 2. Have your users follow the URL you constructed above to allow your application to access their data
45
55
 
46
- 4. Use the code from step 3 along with your client_id and client_secret (obtained when registering your app) to construct the following URL:
47
- <https://www.yammer.com/oauth2/access_token.json?client_id=[:client_id]&client_secret=[:client_secret]&code=[:code]>
56
+ 3. After allowing access, your users will be redirected to your callback URL `http://[:redirect_uri]?code=[:code]`
48
57
 
49
- 5. The authorization server will return an access token object as part of a broader response that includes user profile information.
58
+ 4. Exchange the code for an access token by making an HTTP GET request to `https://www.yammer.com/oauth2/access_token.json?client_id=[:client_id]&client_secret=[:client_secret]&code=[:code]`
50
59
 
51
- Sample access token (token is 'abcdefghijklmn' in this example) as part of response:
60
+ 5. The authorization server will respond with an access token
52
61
 
53
62
  ```
54
- access_token”: {
55
- view_subscriptions”: true,
56
- expires_at”: null,
57
- authorized_at”: 2011/04/06 16:25:46 +0000”,
58
- modify_subscriptions”: true,
59
- modify_messages”: true,
60
- network_permalink”: yammer-inc.com”,
61
- view_members”: true,
62
- view_tags”: true,
63
- network_id”: 155465488,
64
- user_id”: 1014216,
65
- view_groups”: true,
66
- token”: abcdefghijklmn”,
67
- network_name”: Yammer”,
68
- view_messages”: true,
69
- created_at”: 2011/04/06 16:25:46 +0000
63
+ "access_token": {
64
+ "view_subscriptions": true,
65
+ "expires_at": null,
66
+ authorized_at": "2011/04/06 16:25:46 +0000",
67
+ "modify_subscriptions": true,
68
+ "modify_messages": true,
69
+ "network_permalink": "yammer-inc.com",
70
+ "view_members": true,
71
+ "view_tags": true,
72
+ "network_id": 155465488,
73
+ "user_id": 1014216,
74
+ "view_groups": true,
75
+ "token": "abcdefghijklmn",
76
+ "network_name": "Yammer",
77
+ "view_messages": true,
78
+ "created_at": "2011/04/06 16:25:46 +0000"
70
79
  }
71
80
  ```
72
81
 
73
- Set the OAuth token on your app. Example:
82
+ ### Configuring yammer-client
83
+
84
+ To view the current state of the client use the `options` method
74
85
 
75
86
  ```ruby
76
- Yam.configure do |config|
77
- config.oauth_token = your_oauth_token
87
+ require 'yammer'
88
+
89
+ Yammer.options
90
+ #> {:site_url=>"https://www.yammer.com", :client_id=>nil, :client_secret=>nil, :access_token=>nil, :http_adapter=>Yammer::Connection, :connection_options=>{:max_redirects=>5, :use_ssl=>true}}
91
+ ```
92
+
93
+ You may change this configuration by using the `configure` method
94
+
95
+ ```ruby
96
+ Yammer.configure do |c|
97
+ c.client_id = '[client_id]'
98
+ c.client_secret = '[client_secret]'
99
+ c.token = '[access_token]'
78
100
  end
101
+ #> Yammer
102
+ ```
103
+
104
+ At this point, your new settings will take effect
105
+
106
+ ```ruby
107
+ Yammer.options
108
+ #> {:site_url=>"https://www.yammer.com", :client_id=>'[client_id]', :client_secret=>'[client_secret]', :access_token=>'[access_token]', :http_adapter=>Yammer::Connection, :connection_options=>{ :max_redirects=>5, :use_ssl=>true }}
109
+ ```
110
+
111
+ ## Usage
112
+
113
+ `yammer-client` provides two ways to access Yammer's API. One of these ways is by using HTTP helper methods on and instance of `Yammer::Client`. The other
114
+ way is using methods on the object models that come bundled with this gem.
115
+
116
+ ### Using the client
117
+
118
+ 1. Create an instance of the Yammer client
119
+
120
+ ```ruby
121
+ yamr = Yammer::Client.new(
122
+ :client_id => 'vAbMcg9qjgKsp4jjpm1pw',
123
+ :client_secret => 'Wn0kp7Lu0TCY4GtZWkmSsqGErg10DmMADyjWkf2U',
124
+ :access_token => 'HqsKG3ka9Uls2DxahNi78A'
125
+ )
79
126
  ```
80
127
 
81
- Rails Configuration
82
- -------------------
128
+ 2. Call methods on the instance:
83
129
 
84
- Retrieve your access token using the steps outlined in the <a href="#general-configuration">general configuration</a> section above.
130
+ **User**
85
131
 
86
- Add the following to a `yammer.rb` file in your `config/initializers` directory:
132
+ *find a user by email*
87
133
 
88
134
  ```ruby
89
- Yam.configure do |config|
90
- config.oauth_token = oauth_token
91
- end
135
+ yamr.get_user_by_email('user@example.com')
136
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
137
+ ```
138
+
139
+ *find a user by user id*
140
+
141
+ ```ruby
142
+ yamr.get_user('1588')
143
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
144
+ ```
145
+
146
+ *get the current user*
147
+
148
+ ```ruby
149
+ yamr.current_user
150
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
92
151
  ```
93
152
 
94
- Set up Yammer OAuth 2.0
95
- -----------------------
96
153
 
97
- See Yammer's Developer Guide for step-by-step instructions on setting up OAuth 2.0: <http://developer.yammer.com/files/2012/10/PlatformDeveloperGuide.pdf>
154
+ **Message**
98
155
 
99
- Usage Examples
100
- --------------
156
+ *post a update as the current user*
101
157
 
102
- All examples require an authenticated Yammer client. See the <a
103
- href="#general-configuration">general configuration</a> section for instructions for finding and setting your access token.
158
+ ```ruby
159
+ yamr.create_message('status update')
160
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
161
+ ```
162
+
163
+ *send a private message to another Yammer user*
164
+
165
+ ```ruby
166
+ yamr.create_message('private message', :direct_to_id => 24)
167
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
168
+ ```
169
+
170
+ *send a message with an Open Graph Object as an attachment*
171
+
172
+ ```ruby
173
+ yamr.create_message('here is my open graph object', :og_url => "https://www.yammer.com/example/graph/31415926")
174
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
175
+ ```
176
+
177
+
178
+ **Search**
179
+
180
+ *search for a term within the context of current user*
181
+
182
+ ```ruby
183
+ yamr.search(:search => 'thekev', :model_types => 'users;groups')
184
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
185
+ ```
104
186
 
105
- For a list of all Yammer API endpoints, see the <a href="http://developer.yammer.com/restapi/">REST API documentation</a>.
187
+ **Thread**
106
188
 
107
- **Find a Yammer user by email**
189
+ *fetch a thread with a given id*
108
190
 
109
191
  ```ruby
110
- Yam.get('/users/by_email', email: 'user@example.com')
192
+ yamr.get_thread(42)
193
+ #<Yammer::ApiResponse:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
111
194
  ```
112
195
 
113
- **Find a Yammer user by the Yammer user id**
196
+
197
+ ### Using the object models (Experimental)
198
+
199
+ The object model is an abstraction that makes it easy to manipulate the JSON data return when accessing Yammer's API. Each model has accessor methods for all keys contained in the JSON response for a given model type.
200
+
201
+
202
+ **User**
203
+
204
+ *get the current user*
205
+
114
206
 
115
207
  ```ruby
116
- Yam.get('/users/123456')
208
+ u = Yammer::User.current
209
+ #> <Yammer::User:0x007f9f4b0c39c8>
210
+
211
+ u.full_name
212
+ #> 'Kevin Mutyaba'
213
+
214
+ u.update!(:job_title => 'k0dR')
117
215
  ```
118
216
 
119
- **Post a status update from the current user**
217
+
218
+ **Thread**
219
+
220
+ *fetch a thread with a given id*
120
221
 
121
222
  ```ruby
122
- Yam.post('/messages', body: 'status update')
223
+ t = Yammer::Thread.get(3)
123
224
  ```
124
225
 
125
- **Send a private message to another Yammer user**
226
+ View the participants in the thread
126
227
 
127
228
  ```ruby
128
- Yam.post('/messages', body: 'this is a private message', direct_to_id: 123456)
229
+ parts = t.participants
230
+ #> [{:type=>"user", :id=>18}, {:type=>"user", :id=>64}]
129
231
  ```
130
232
 
131
- **Send a private message to a Yammer group**
233
+ View the participants in the thread as user object models
132
234
 
133
235
  ```ruby
134
- Yam.post('/messages', body: 'this is a group message', group_id: 987654)
236
+ peepl = t.people
237
+ #> [#<Yammer::User:0x007f9f4c086630 @modified_attributes={}, @attrs={}, @new_record=false, @id=18>, #<Yammer::User:0x007f9f4c086568 @modified_attributes={}, @attrs={}, @new_record=false, @id=64>]
135
238
  ```
136
239
 
137
- **Send a message with an Open Graph Object as an attachment**
240
+ Object models are lazyly loaded. Calling an accessor on a model will hydrate it
138
241
 
139
242
  ```ruby
140
- Yam.post('/messages', :body: 'here is my open graph object', og_url: "https://www.yammer.com/example/graph/123456789")
243
+ peepl[0]
244
+ #> #<Yammer::User:0x007f9f4c086568 @modified_attributes={}, @attrs={}, @new_record=false, @id=18>
245
+
246
+ peepl[0].permalink
247
+ #> 'thekev'
248
+
249
+ peepl[0]
250
+ #=> #<Yammer::User:0x007f9f4c086568 @modified_attributes={}, @attrs={:last_name=>"Mutyaba", :network_id=>1, :first_name=>"Kevin", :id => 18, :permalink=>"thekev" }, @network_id=1, @first_name="Kev", @full_name="Tiaba", @permalink="thekev", @id=18 >
141
251
  ```
142
252
 
143
- Contributing
144
- ------------
253
+ ## Supported Ruby Versions
254
+ This library aims to support and is [tested against][travis] the following Ruby
255
+ version:
256
+
257
+ * Ruby 1.8.7
258
+ * Ruby 1.9.2
259
+ * Ruby 1.9.3
260
+ * Ruby 2.0.0
261
+
262
+ This library may inadvertently work (or seem to work) on other Ruby
263
+ implementations, however support will only be provided for the versions listed
264
+ above.
145
265
 
146
- To contribute to this project, see the [CONTRIBUTING.md](https://github.com/yammer/yam/blob/master/CONTRIBUTING.md) file.
266
+ ## Copyright
267
+ Copyright (c) 2013 Microsoft Corporation
268
+ See [LICENSE][license] for details.
269
+ [license]: https://github.com/tiabas/yammer-client/blob/master/LICENSE.md
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  # Copyright (c) Microsoft Corporation
2
4
  # All rights reserved.
3
5
  #
@@ -14,10 +16,14 @@
14
16
  #
15
17
  # See the Apache Version 2.0 License for specific language governing
16
18
  # permissions and limitations under the License.
17
- #
18
- require 'bundler/gem_tasks'
19
+
20
+ require 'rake'
19
21
  require 'rspec/core/rake_task'
20
22
 
21
- RSpec::Core::RakeTask.new(:spec)
23
+ RSpec::Core::RakeTask.new(:spec) do |t|
24
+ t.verbose = true
25
+ end
22
26
 
27
+ desc "Run spec"
23
28
  task :default => :spec
29
+ task :test => :spec
data/certs/public.pem ADDED
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDMjCCAhqgAwIBAgIBADANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAh0aWFi
3
+ YXNuazEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
4
+ MB4XDTEzMDQyOTA0MTkwMFoXDTE0MDQyOTA0MTkwMFowPzERMA8GA1UEAwwIdGlh
5
+ YmFzbmsxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
6
+ bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMWly4vv32/qfYWuiRJq
7
+ /x9CDRpdQ2JFwRiiKA6hjWjkpvYwgssfAVNJcwYSyVWkvRF8wp3UjpWqq+W3zGwR
8
+ XHtKysmt8CZl7Y+JdcltSuaRuZljwN37RPnFg7gGHUfhS4klm6s8csvawLzi50eH
9
+ 6M/7AeKmYS7sRFQoVR0tfHxq+e5uqo47Qus+aLNFU/bgYJeAhZlYHeU0ANZIp3ig
10
+ HRfYE3zz3CA+LffxQ0UXwiySLgUUsdX1Gtv/7AjoLu6v3GS0lbN9o357b0n7fXym
11
+ A5iMUeygRZryvLab9kz1YuwgOgx6OpyQD8JfO9PZeBKYd9XFlZwp44W7Z1akxcu+
12
+ +E8CAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUt6oHkpfViE/jN5InJLzl
13
+ DUxUNR8wCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQBunWeru+ZC1uVt
14
+ BZj6230whZIvdvGnvcWW6JGG6JZJljYwOHHnaG+u74qE16Voh3n7rT77obp/Wrmx
15
+ HUhp4nK+j1AHpdiZman0RxMZzS2fczev9gTyAs/cmaqgVb3YXXniwvZy4P7y07iT
16
+ MIbAh4p4NK72MJrOsepD3qhOgE23o8dyFB3+RTB0U7yv3ZW1sMNDxkliqCBqcrBF
17
+ bSEMaRUpbbsivejLXgRsxP5cXYy0Wd9GNSOtQ5932HDEoo0F9nXIMZGQSLqEXz3l
18
+ B+kZ9/4dAvmKkr2NPSoxBQtO7Rz0HDNLtjMxkXbQUWMDsGnB6Kk1WUBb/w3kQ9Ah
19
+ JgIHF4cG
20
+ -----END CERTIFICATE-----