yammer-client 0.1.0 → 0.1.1

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.
Binary file
data/Gemfile CHANGED
@@ -1,7 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rake'
4
-
5
3
  group :test do
6
4
  gem 'json', :platforms => :ruby_18
7
5
  gem 'rspec', '>= 2.11'
data/README.md CHANGED
@@ -1,7 +1,14 @@
1
1
  Yammer Client
2
2
  =============
3
+ [![GemVersion](https://badge.fury.io/rb/yammer-client.png)][gemversion]
4
+ [![Build Status](https://travis-ci.org/tiabas/yammer-client.png?branch=master)][travis]
5
+ [![Coverage Status](https://coveralls.io/repos/tiabas/yammer-client/badge.png?branch=master)][coveralls]
6
+ [![Dependency Status](https://gemnasium.com/tiabas/yammer-client.png)][gemnasium]
3
7
 
4
- [![Build Status](https://travis-ci.org/tiabas/yammer-client.png?branch=master)](https://travis-ci.org/tiabas/yammer-client)
8
+ [gemversion]: (http://badge.fury.io/rb/yammer-client)
9
+ [travis]: (https://travis-ci.org/tiabas/yammer-client)
10
+ [coveralls]: (https://coveralls.io/r/tiabas/yammer-client)
11
+ [gemnasium]: https://gemnasium.com/tiabas/yammer-client
5
12
 
6
13
  A Yammer Ruby gem
7
14
 
@@ -88,8 +95,7 @@ To view the current state of the client use the `options` method
88
95
  require 'yammer'
89
96
 
90
97
  Yammer.options
91
-
92
- # => {:site_url=>"https://www.yammer.com", :client_id=>nil, :client_secret=>nil, :access_token=>nil, :http_adapter=>Yammer::HttpConnection, :connection_options=>{:max_redirects=>5, :use_ssl=>true}}
98
+ #> {:site_url=>"https://www.yammer.com", :client_id=>nil, :client_secret=>nil, :access_token=>nil, :http_adapter=>Yammer::HttpConnection, :connection_options=>{:max_redirects=>5, :use_ssl=>true}}
93
99
  ```
94
100
 
95
101
  You may change this configuration by using the `configure` method
@@ -100,16 +106,14 @@ Yammer.configure do |c|
100
106
  c.client_secret = '[client_secret]'
101
107
  c.token = '[access_token]'
102
108
  end
103
-
104
- # => Yammer
109
+ #> Yammer
105
110
  ```
106
111
 
107
112
  At this point, your new settings will take effect
108
113
 
109
114
  ```ruby
110
115
  Yammer.options
111
-
112
- # => {:site_url=>"https://www.yammer.com", :client_id=>'[client_id]', :client_secret=>'[client_secret]', :access_token=>'[access_token]', :http_adapter=>Yammer::HttpConnection, :connection_options=>{ :max_redirects=>5, :use_ssl=>true }}
116
+ #> {:site_url=>"https://www.yammer.com", :client_id=>'[client_id]', :client_secret=>'[client_secret]', :access_token=>'[access_token]', :http_adapter=>Yammer::HttpConnection, :connection_options=>{ :max_redirects=>5, :use_ssl=>true }}
113
117
  ```
114
118
 
115
119
  ## Usage
@@ -137,18 +141,21 @@ yamr = Yammer::Client.new(
137
141
 
138
142
  ```ruby
139
143
  yamr.get_user_by_email('user@example.com')
144
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
140
145
  ```
141
146
 
142
147
  *find a user by user id*
143
148
 
144
149
  ```ruby
145
150
  yamr.get_user('1588')
151
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
146
152
  ```
147
153
 
148
154
  *get the current user*
149
155
 
150
156
  ```ruby
151
157
  yamr.current_user
158
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
152
159
  ```
153
160
 
154
161
 
@@ -158,18 +165,21 @@ yamr.current_user
158
165
 
159
166
  ```ruby
160
167
  yamr.create_message(:body => 'status update')
168
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
161
169
  ```
162
170
 
163
171
  *send a private message to another Yammer user*
164
172
 
165
173
  ```ruby
166
174
  yamr.create_message(:body => 'private message', :direct_to_id => 24)
175
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
167
176
  ```
168
177
 
169
178
  *send a message with an Open Graph Object as an attachment*
170
179
 
171
180
  ```ruby
172
181
  yamr.create_message(:body => 'here is my open graph object', og_url: "https://www.yammer.com/example/graph/31415926")
182
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
173
183
  ```
174
184
 
175
185
 
@@ -179,12 +189,16 @@ yamr.create_message(:body => 'here is my open graph object', og_url: "https://ww
179
189
 
180
190
  ```ruby
181
191
  yamr.search(:search => 'thekev', :model_types => 'users;groups')
192
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
182
193
  ```
183
194
 
184
195
  **Thread**
196
+
185
197
  *fetch a thread with a given id*
198
+
186
199
  ```ruby
187
200
  yamr.get_thread(42, :model_types => 'users;groups')
201
+ #<Yammer::Response:0x007fb949434ec8 @headers=#<Net::HTTPOK 200 OK readbody=true>, @body="[JSON Response]", @code=200>
188
202
  ```
189
203
 
190
204
 
@@ -201,15 +215,12 @@ any given request. Each model has accessor metods for all keys contained in the
201
215
 
202
216
  ```ruby
203
217
  u = Yammer::User.current
204
-
205
- #=> #<Yammer::User:0x007f9f4b0c39c8>
218
+ #> <Yammer::User:0x007f9f4b0c39c8>
206
219
 
207
220
  u.full_name
208
-
209
- #=> 'Kevin Mutyaba'
221
+ #> 'Kevin Mutyaba'
210
222
 
211
223
  u.update!(:job_title => 'k0dR')
212
-
213
224
  ```
214
225
 
215
226
 
@@ -218,33 +229,32 @@ u.update!(:job_title => 'k0dR')
218
229
  *fetch a thread with a given id*
219
230
 
220
231
  ```ruby
221
-
222
232
  t = Yammer::Thread.get(3)
223
233
 
224
234
  # view the participants in the thread
225
235
 
226
236
  parts = t.participants
227
- #=> [{:type=>"user", :id=>18}, {:type=>"user", :id=>64}]
237
+ #> [{:type=>"user", :id=>18}, {:type=>"user", :id=>64}]
228
238
 
229
239
 
230
240
  # view the participants in the thread as user object models
231
241
 
232
242
  peepl = t.people
233
- #=> [#<Yammer::User:0x007f9f4c086630 @modified_attributes={}, @attrs={}, @new_record=false, @id=18>, #<Yammer::User:0x007f9f4c086568 @modified_attributes={}, @attrs={}, @new_record=false, @id=64>]
243
+ #> [#<Yammer::User:0x007f9f4c086630 @modified_attributes={}, @attrs={}, @new_record=false, @id=18>, #<Yammer::User:0x007f9f4c086568 @modified_attributes={}, @attrs={}, @new_record=false, @id=64>]
234
244
 
235
245
 
236
246
  # object models are lazyly loaded
237
247
 
238
248
  peepl[0]
239
- #=> #<Yammer::User:0x007f9f4c086568 @modified_attributes={}, @attrs={}, @new_record=false, @id=18>
249
+ #> #<Yammer::User:0x007f9f4c086568 @modified_attributes={}, @attrs={}, @new_record=false, @id=18>
240
250
 
241
251
  # calling an accessor on a model will hydrate it
242
252
 
243
253
  peepl[0].permalink
244
- #=> 'thekev'
254
+ #> 'thekev'
245
255
 
246
256
  peepl[0]
247
- #=> #<Yammer::User:0x007f9f4c086630 @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 >
257
+ #=> #<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 >
248
258
  ```
249
259
 
250
260
  ## Supported Ruby Versions
@@ -262,4 +272,4 @@ above.
262
272
  ## Copyright
263
273
  Copyright (c) 2013 Kevin Mutyaba
264
274
  See [LICENSE][license] for details.
265
- [license]: https://github.com/tiabas/yammer-client/blob/master/LICENSE.md
275
+ [license]: https://github.com/tiabas/yammer-client/blob/master/LICENSE.md
@@ -5,7 +5,12 @@ require 'yammer/configurable'
5
5
  require 'yammer/response'
6
6
  require 'yammer/client'
7
7
  require 'yammer/identity_map'
8
- require 'yammer/model'
8
+ require 'yammer/base'
9
+ require 'yammer/user'
10
+ require 'yammer/group'
11
+ require 'yammer/group_membership'
12
+ require 'yammer/message'
13
+ require 'yammer/thread'
9
14
  require 'yammer/api'
10
15
 
11
16
  module Yammer
@@ -0,0 +1,131 @@
1
+ module Yammer
2
+ class Base
3
+
4
+ def self.attr_accessor_deffered(*symbols)
5
+ symbols.each do |key|
6
+ fetchable_keys[key] = true
7
+
8
+ define_method (key.to_s) do
9
+ if self.class.fetchable_keys.has_key?(key) && !@attrs.has_key?(key) && @id
10
+ load!
11
+ end
12
+ instance_variable_get("@#{key}")
13
+ end
14
+
15
+ define_method ("#{key}=") do |value|
16
+ if @attrs.fetch(key, false) && !new_record?
17
+ @modified_attributes[key] = value
18
+ else
19
+ @attrs[key] = value
20
+ end
21
+ instance_variable_set("@#{key}", value)
22
+ end
23
+ end
24
+ end
25
+
26
+ # @!scope class
27
+ def self.fetchable_keys
28
+ @fetchable_keys ||= {}
29
+ return @fetchable_keys
30
+ end
31
+
32
+ # @!scope class
33
+ def self.identity_map
34
+ @identity_map ||= Yammer::IdentityMap.new
35
+ end
36
+
37
+ # @!scope class
38
+ def self.base_name
39
+ word = "#{self.name.split(/::/).last}"
40
+ word.gsub!(/::/, '/')
41
+ word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
42
+ word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
43
+ word.tr!("-", "_")
44
+ word.downcase!
45
+ word
46
+ end
47
+
48
+ # @!scope class
49
+ def self.fetch(id)
50
+ return unless identity_map
51
+ attributes = identity_map.get("#{self.base_name}_#{id}")
52
+ unless attributes
53
+ result = Yammer.send("get_#{self.base_name}", id)
54
+ attributes = result.body || {}
55
+ unless attributes.empty?
56
+ identity_map.put("#{self.base_name}_#{id}", attributes)
57
+ end
58
+ end
59
+ attributes
60
+ end
61
+
62
+ # @!scope class
63
+ def self.get(id)
64
+ new(fetch(id))
65
+ end
66
+
67
+ attr_reader :id, :attrs
68
+
69
+ def initialize(props={})
70
+ @modified_attributes = {}
71
+ @attrs = {}
72
+ @new_record = true
73
+ self.id = props.delete(:id)
74
+ self.update(props)
75
+ end
76
+
77
+ def base_name
78
+ self.class.base_name
79
+ end
80
+
81
+ def new_record?
82
+ @new_record
83
+ end
84
+
85
+ def changes
86
+ @modified_attributes
87
+ end
88
+
89
+ def modified?
90
+ !changes.empty?
91
+ end
92
+
93
+ def load!
94
+ result = self.class.fetch(@id)
95
+ update(result)
96
+ end
97
+ alias_method :reload!, :load!
98
+
99
+ def save
100
+ return self if ((!new_record? && @modified_attributes.empty?) || @attrs.empty?)
101
+ result = if new_record?
102
+ Yammer.send("create_#{self.base_name}", @attrs)
103
+ else
104
+ Yammer.send("update_#{self.base_name}", @id, @modified_attributes)
105
+ end
106
+ @modified_attributes = {}
107
+ self
108
+ end
109
+
110
+ def delete!
111
+ return if new_record?
112
+ result = Yammer.send("delete_#{self.base_name}", @id)
113
+ result.success?
114
+ end
115
+
116
+ private
117
+
118
+ def id=(model_id)
119
+ return if model_id.nil?
120
+ @id = model_id.to_i
121
+ @new_record = false
122
+ end
123
+
124
+ protected
125
+ def update(props={})
126
+ props.each do |key, value|
127
+ send("#{key}=", value)
128
+ end
129
+ end
130
+ end
131
+ end
@@ -1,5 +1,5 @@
1
1
  module Yammer
2
- class Group < Yammer::Model::Base
2
+ class Group < Yammer::Base
3
3
 
4
4
  attr_accessor_deffered :show_in_directory, :privacy, :description, :creator_type,
5
5
  :creator_id, :mugshot_id, :stats, :state, :web_url, :name, :created_at, :type,
@@ -1,5 +1,5 @@
1
1
  module Yammer
2
- class GroupMembership < Yammer::Model::Base
2
+ class GroupMembership < Yammer::Base
3
3
 
4
4
  attr_accessor_deffered
5
5
 
@@ -1,5 +1,5 @@
1
1
  module Yammer
2
- class Message < Yammer::Model::Base
2
+ class Message < Yammer::Base
3
3
 
4
4
  attr_accessor_deffered :direct_message, :privacy, :group_id, :created_at,
5
5
  :attachments, :liked_by, :chat_client_sequence, :client_url, :content_excerpt,
@@ -1,6 +1,6 @@
1
- require 'yammer/model/base'
2
- require 'yammer/model/user'
3
- require 'yammer/model/group'
4
- require 'yammer/model/group_membership'
5
- require 'yammer/model/message'
6
- require 'yammer/model/thread'
1
+ require 'yammer/base'
2
+ require 'yammer/user'
3
+ require 'yammer/group'
4
+ require 'yammer/group_membership'
5
+ require 'yammer/message'
6
+ require 'yammer/thread'
@@ -1,5 +1,5 @@
1
1
  module Yammer
2
- class Thread < Yammer::Model::Base
2
+ class Thread < Yammer::Base
3
3
 
4
4
  attr_accessor_deffered :participants, :web_url, :references, :thread_starter_id,
5
5
  :type, :privacy, :has_attachments, :attachments_meta, :topics, :url, :attachments,
@@ -1,5 +1,5 @@
1
1
  module Yammer
2
- class User < Yammer::Model::Base
2
+ class User < Yammer::Base
3
3
 
4
4
  # @!scope class
5
5
  def self.create(email)
@@ -2,7 +2,7 @@ module Yammer
2
2
  class Version
3
3
  MAJOR = 0 unless defined? Yammer::MAJOR
4
4
  MINOR = 1 unless defined? Yammer::MINOR
5
- PATCH = 0 unless defined? Yammer::PATCH
5
+ PATCH = 1 unless defined? Yammer::PATCH
6
6
  PRE = nil unless defined? Yammer::PRE
7
7
 
8
8
  class << self
@@ -1,7 +1,7 @@
1
1
  require File.expand_path('../../spec_helper', __FILE__)
2
2
 
3
- describe Yammer::Model::Base do
4
- class DummyModel < Yammer::Model::Base
3
+ describe Yammer::Base do
4
+ class DummyModel < Yammer::Base
5
5
  attr_accessor_deffered :first_name, :last_name
6
6
  end
7
7
 
@@ -1,14 +1,18 @@
1
- unless ENV['CI']
2
- require 'simplecov'
3
- SimpleCov.start do
4
- add_filter 'spec'
5
- end
6
- end
1
+ require 'simplecov'
2
+ require 'coveralls'
7
3
 
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+ require 'yammer'
8
11
  require 'rspec'
9
12
  require 'rspec/autorun'
10
13
  require 'webmock/rspec'
11
- require 'yammer'
14
+
15
+ WebMock.disable_net_connect!(:allow => 'coveralls.io')
12
16
 
13
17
  RSpec.configure do |config|
14
18
  config.mock_with :rspec
@@ -39,4 +43,4 @@ end
39
43
 
40
44
  def fixture(file)
41
45
  File.new("#{fixture_path}/#{file}")
42
- end
46
+ end
@@ -14,16 +14,22 @@ Gem::Specification.new do |s|
14
14
  s.rubygems_version = Yammer::Version
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.require_paths = ['lib']
17
- s.cert_chain = ['tiabas-public.pem']
17
+
18
18
  s.licenses = ['MIT']
19
19
  s.test_files = Dir.glob("spec/**/*")
20
20
 
21
- s.add_dependency 'oauth2-client', '>= 1.1.2'
22
- s.add_dependency 'addressable'
23
- s.add_dependency 'oj', '>= 2.0.10'
24
- s.add_dependency 'multi_json', '>= 1.3'
21
+ s.cert_chain = ['certs/tiabas-public.pem']
22
+ s.signing_key = File.expand_path("~/.gem/certs/private_key.pem") if $0 =~ /gem\z/
23
+
24
+ s.add_dependency 'oj', '~> 2.0.10'
25
+ s.add_dependency 'multi_json', '~> 1.3'
26
+ s.add_dependency 'oauth2-client', '~> 1.1.2'
27
+ s.add_dependency 'addressable', '~> 2.3.3'
28
+
25
29
  s.add_development_dependency 'rake'
26
30
  s.add_development_dependency 'rspec'
27
31
  s.add_development_dependency 'simplecov', '>= 0.7.1'
28
32
  s.add_development_dependency 'webmock', '>= 1.9.0'
33
+
34
+ s.post_install_message = %q{ Thanks for installing! If you like this gem please spread the word }
29
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yammer-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,73 +9,101 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
- - tiabas-public.pem
12
+ - !binary |-
13
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURjRENDQWxpZ0F3SUJB
14
+ Z0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREEvTVJFd0R3WURWUVFEREFoMGFX
15
+ RmkKWVhOdWF6RVZNQk1HQ2dtU0pvbVQ4aXhrQVJrV0JXZHRZV2xzTVJNd0VR
16
+ WUtDWkltaVpQeUxHUUJHUllEWTI5dApNQjRYRFRFek1ETXdNekEyTWpBeE5W
17
+ b1hEVEUwTURNd016QTJNakF4TlZvd1B6RVJNQThHQTFVRUF3d0lkR2xoCllt
18
+ RnpibXN4RlRBVEJnb0praWFKay9Jc1pBRVpGZ1ZuYldGcGJERVRNQkVHQ2dt
19
+ U0pvbVQ4aXhrQVJrV0EyTnYKYlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFB
20
+ RGdnRVBBRENDQVFvQ2dnRUJBTXNtVnNFcmNOdXdRTEtMaDlUNgphNTdRaUsz
21
+ NWc5empwSUQycFVCbjRhbE1UbUllQVhnMmJYV0xkQXpVMHN3Y2ptYUdCV3o1
22
+ QWFaZXFUbm5CdmVPClpEb0g2ZTgxMXV1UmpKTVlDa0xReGhsZ2hFQjBUUWtB
23
+ cU9ueGxqODBUTjJqRncrWUZXTG1TbnhSNFBCb252cHAKWXdXQVkweWxxTTU0
24
+ RlBSaGFBSVlDNS8zUHZ4MVNZTDkvVXMwMzc2SEVwVjBSdHk2Vlh6N3RVenY4
25
+ dkZraTVvdApneWZwNWNlV2lZSVpqUTlVdmhtNGx1SlNmWGNpMTNVSFowQWVP
26
+ N0UxcGFkV2x4M3o4aFpJdmphd3VlVEdSZTVwCkJnWmxJMCt4VjJvZ3ZBbHU4
27
+ L05DeTBoV1V3Y3BudlJkUHlCVkRSTWxpOGdYR0U5ak52OGRCV2U2N3ZkanpH
28
+ U2sKWURVQ0F3RUFBYU4zTUhVd0NRWURWUjBUQkFJd0FEQUxCZ05WSFE4RUJB
29
+ TUNCTEF3SFFZRFZSME9CQllFRkluaApxdkprdUlTTnFET2NzckJSb3RaQzBx
30
+ b2xNQjBHQTFVZEVRUVdNQlNCRW5ScFlXSmhjMjVyUUdkdFlXbHNMbU52CmJU
31
+ QWRCZ05WSFJJRUZqQVVnUkowYVdGaVlYTnVhMEJuYldGcGJDNWpiMjB3RFFZ
32
+ SktvWklodmNOQVFFRkJRQUQKZ2dFQkFFR2I0Z1JEdWxKOWprZjVvUkx5ZGZ3
33
+ OVVaaTZmVldqNmFhaUpmYmJUNU5Mb3RwVmFXbldkQ09PN2h5OApIRFBZV040
34
+ MzB6THdyME9ET1U5WE51ZUtuRWtobkJSaVlrY1EwSm1ZZGRQa0w1N2twMHFs
35
+ SDRnMklxUWZRVjJXCjFiN3NFNDEwekZIbjU1QjVuaWhRWTNjME1NU0w3d3E5
36
+ RHoyRWt0YklNaWtmNnNHNnpmVWdZRkU0SVFHaTJSYk8KeGE1Zm5UV3Q3S0I1
37
+ REQwMkhuSExUWjlIbDJreGxQeVd3eWpSRXdOd0VqUG9TVUpGRUJpb3N2QW1s
38
+ OGZyVURBOQpqNmZBVGcvNGZxcGdJTFBWcUZJR1pPTUpERmNKeS9vZWh3d3hM
39
+ dTVYTXg4OFdGRDlqVDF2Umo3N0Q3aVBMYlhkCnJmR3MvcUNKS2dpZlhkLzFh
40
+ bTVobEFINWpYVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
13
41
  date: 2013-04-08 00:00:00.000000000 Z
14
42
  dependencies:
15
43
  - !ruby/object:Gem::Dependency
16
- name: oauth2-client
44
+ name: oj
17
45
  requirement: !ruby/object:Gem::Requirement
18
46
  none: false
19
47
  requirements:
20
- - - ! '>='
48
+ - - ~>
21
49
  - !ruby/object:Gem::Version
22
- version: 1.1.2
50
+ version: 2.0.10
23
51
  type: :runtime
24
52
  prerelease: false
25
53
  version_requirements: !ruby/object:Gem::Requirement
26
54
  none: false
27
55
  requirements:
28
- - - ! '>='
56
+ - - ~>
29
57
  - !ruby/object:Gem::Version
30
- version: 1.1.2
58
+ version: 2.0.10
31
59
  - !ruby/object:Gem::Dependency
32
- name: addressable
60
+ name: multi_json
33
61
  requirement: !ruby/object:Gem::Requirement
34
62
  none: false
35
63
  requirements:
36
- - - ! '>='
64
+ - - ~>
37
65
  - !ruby/object:Gem::Version
38
- version: '0'
66
+ version: '1.3'
39
67
  type: :runtime
40
68
  prerelease: false
41
69
  version_requirements: !ruby/object:Gem::Requirement
42
70
  none: false
43
71
  requirements:
44
- - - ! '>='
72
+ - - ~>
45
73
  - !ruby/object:Gem::Version
46
- version: '0'
74
+ version: '1.3'
47
75
  - !ruby/object:Gem::Dependency
48
- name: oj
76
+ name: oauth2-client
49
77
  requirement: !ruby/object:Gem::Requirement
50
78
  none: false
51
79
  requirements:
52
- - - ! '>='
80
+ - - ~>
53
81
  - !ruby/object:Gem::Version
54
- version: 2.0.10
82
+ version: 1.1.2
55
83
  type: :runtime
56
84
  prerelease: false
57
85
  version_requirements: !ruby/object:Gem::Requirement
58
86
  none: false
59
87
  requirements:
60
- - - ! '>='
88
+ - - ~>
61
89
  - !ruby/object:Gem::Version
62
- version: 2.0.10
90
+ version: 1.1.2
63
91
  - !ruby/object:Gem::Dependency
64
- name: multi_json
92
+ name: addressable
65
93
  requirement: !ruby/object:Gem::Requirement
66
94
  none: false
67
95
  requirements:
68
- - - ! '>='
96
+ - - ~>
69
97
  - !ruby/object:Gem::Version
70
- version: '1.3'
98
+ version: 2.3.3
71
99
  type: :runtime
72
100
  prerelease: false
73
101
  version_requirements: !ruby/object:Gem::Requirement
74
102
  none: false
75
103
  requirements:
76
- - - ! '>='
104
+ - - ~>
77
105
  - !ruby/object:Gem::Version
78
- version: '1.3'
106
+ version: 2.3.3
79
107
  - !ruby/object:Gem::Dependency
80
108
  name: rake
81
109
  requirement: !ruby/object:Gem::Requirement
@@ -167,20 +195,20 @@ files:
167
195
  - lib/yammer/api/thread.rb
168
196
  - lib/yammer/api/topic.rb
169
197
  - lib/yammer/api/user.rb
198
+ - lib/yammer/base.rb
170
199
  - lib/yammer/client.rb
171
200
  - lib/yammer/configurable.rb
172
201
  - lib/yammer/error.rb
202
+ - lib/yammer/group.rb
203
+ - lib/yammer/group_membership.rb
173
204
  - lib/yammer/http_connection.rb
174
205
  - lib/yammer/identity_map.rb
206
+ - lib/yammer/message.rb
207
+ - lib/yammer/message_body.rb
175
208
  - lib/yammer/model.rb
176
- - lib/yammer/model/base.rb
177
- - lib/yammer/model/group.rb
178
- - lib/yammer/model/group_membership.rb
179
- - lib/yammer/model/message.rb
180
- - lib/yammer/model/message_body.rb
181
- - lib/yammer/model/thread.rb
182
- - lib/yammer/model/user.rb
183
209
  - lib/yammer/response.rb
210
+ - lib/yammer/thread.rb
211
+ - lib/yammer/user.rb
184
212
  - lib/yammer/version.rb
185
213
  - spec/api/autocomplete_spec.rb
186
214
  - spec/api/group_membership_spec.rb
@@ -215,7 +243,8 @@ files:
215
243
  homepage: http://tiabas.github.io/yammer-client
216
244
  licenses:
217
245
  - MIT
218
- post_install_message:
246
+ post_install_message: ! ' Thanks for installing! If you like this gem please spread
247
+ the word '
219
248
  rdoc_options: []
220
249
  require_paths:
221
250
  - lib
Binary file
@@ -1,133 +0,0 @@
1
- module Yammer
2
- module Model
3
- class Base
4
-
5
- def self.attr_accessor_deffered(*symbols)
6
- symbols.each do |key|
7
- fetchable_keys[key] = true
8
-
9
- define_method (key.to_s) do
10
- if self.class.fetchable_keys.has_key?(key) && !@attrs.has_key?(key) && @id
11
- load!
12
- end
13
- instance_variable_get("@#{key}")
14
- end
15
-
16
- define_method ("#{key}=") do |value|
17
- if @attrs.fetch(key, false) && !new_record?
18
- @modified_attributes[key] = value
19
- else
20
- @attrs[key] = value
21
- end
22
- instance_variable_set("@#{key}", value)
23
- end
24
- end
25
- end
26
-
27
- # @!scope class
28
- def self.fetchable_keys
29
- @fetchable_keys ||= {}
30
- return @fetchable_keys
31
- end
32
-
33
- # @!scope class
34
- def self.identity_map
35
- @identity_map ||= Yammer::IdentityMap.new
36
- end
37
-
38
- # @!scope class
39
- def self.base_name
40
- word = "#{self.name.split(/::/).last}"
41
- word.gsub!(/::/, '/')
42
- word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
43
- word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
44
- word.tr!("-", "_")
45
- word.downcase!
46
- word
47
- end
48
-
49
- # @!scope class
50
- def self.fetch(id)
51
- return unless identity_map
52
- attributes = identity_map.get("#{self.base_name}_#{id}")
53
- unless attributes
54
- result = Yammer.send("get_#{self.base_name}", id)
55
- attributes = result.body || {}
56
- unless attributes.empty?
57
- identity_map.put("#{self.base_name}_#{id}", attributes)
58
- end
59
- end
60
- attributes
61
- end
62
-
63
- # @!scope class
64
- def self.get(id)
65
- new(fetch(id))
66
- end
67
-
68
- attr_reader :id, :attrs
69
-
70
- def initialize(props={})
71
- @modified_attributes = {}
72
- @attrs = {}
73
- @new_record = true
74
- self.id = props.delete(:id)
75
- self.update(props)
76
- end
77
-
78
- def base_name
79
- self.class.base_name
80
- end
81
-
82
- def new_record?
83
- @new_record
84
- end
85
-
86
- def changes
87
- @modified_attributes
88
- end
89
-
90
- def modified?
91
- !changes.empty?
92
- end
93
-
94
- def load!
95
- result = self.class.fetch(@id)
96
- update(result)
97
- end
98
- alias_method :reload!, :load!
99
-
100
- def save
101
- return self if ((!new_record? && @modified_attributes.empty?) || @attrs.empty?)
102
- result = if new_record?
103
- Yammer.send("create_#{self.base_name}", @attrs)
104
- else
105
- Yammer.send("update_#{self.base_name}", @id, @modified_attributes)
106
- end
107
- @modified_attributes = {}
108
- self
109
- end
110
-
111
- def delete!
112
- return if new_record?
113
- result = Yammer.send("delete_#{self.base_name}", @id)
114
- result.success?
115
- end
116
-
117
- private
118
-
119
- def id=(model_id)
120
- return if model_id.nil?
121
- @id = model_id.to_i
122
- @new_record = false
123
- end
124
-
125
- protected
126
- def update(props={})
127
- props.each do |key, value|
128
- send("#{key}=", value)
129
- end
130
- end
131
- end
132
- end
133
- end