podio 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/Rakefile +0 -16
  2. data/lib/podio.rb +6 -3
  3. data/lib/podio/active_podio/base.rb +53 -21
  4. data/lib/podio/active_podio/updatable.rb +9 -14
  5. data/lib/podio/client.rb +46 -17
  6. data/lib/podio/error.rb +9 -0
  7. data/lib/podio/middleware/error_response.rb +5 -1
  8. data/lib/podio/middleware/json_request.rb +27 -5
  9. data/lib/podio/models/account_provider.rb +16 -0
  10. data/lib/podio/models/app_store_category.rb +25 -0
  11. data/lib/podio/models/app_store_share.rb +90 -11
  12. data/lib/podio/models/application.rb +52 -12
  13. data/lib/podio/models/application_field.rb +4 -4
  14. data/lib/podio/models/batch.rb +31 -0
  15. data/lib/podio/models/calendar_event.rb +64 -10
  16. data/lib/podio/models/category.rb +11 -9
  17. data/lib/podio/models/contact.rb +3 -1
  18. data/lib/podio/models/contract.rb +3 -0
  19. data/lib/podio/models/email_subscription_setting.rb +26 -3
  20. data/lib/podio/models/file_attachment.rb +3 -2
  21. data/lib/podio/models/form.rb +2 -2
  22. data/lib/podio/models/importer.rb +18 -9
  23. data/lib/podio/models/item.rb +87 -22
  24. data/lib/podio/models/item_field.rb +8 -3
  25. data/lib/podio/models/linked_account.rb +11 -3
  26. data/lib/podio/models/linked_account_data.rb +6 -0
  27. data/lib/podio/models/news.rb +1 -0
  28. data/lib/podio/models/organization.rb +4 -0
  29. data/lib/podio/models/organization_member.rb +17 -4
  30. data/lib/podio/models/organization_profile.rb +5 -1
  31. data/lib/podio/models/profile.rb +19 -10
  32. data/lib/podio/models/reference.rb +33 -0
  33. data/lib/podio/models/search.rb +4 -7
  34. data/lib/podio/models/space.rb +21 -12
  35. data/lib/podio/models/space_invitation.rb +7 -7
  36. data/lib/podio/models/space_member.rb +28 -3
  37. data/lib/podio/models/task.rb +38 -14
  38. data/lib/podio/models/user.rb +27 -5
  39. data/lib/podio/models/user_status.rb +5 -0
  40. data/lib/podio/models/view.rb +51 -0
  41. data/lib/podio/models/widget.rb +1 -1
  42. data/lib/podio/version.rb +1 -1
  43. data/test/client_test.rb +13 -3
  44. data/test/fixtures/fixtures.yaml +7 -7
  45. data/test/test_helper.rb +1 -24
  46. metadata +16 -23
  47. data/lib/podio/middleware/response_recorder.rb +0 -14
  48. data/lib/podio/models/meeting.rb +0 -151
  49. data/lib/podio/models/meeting_participiant.rb +0 -11
  50. data/test/fixtures/client/18a224aaf83ac57a7b8159cecdbb1263.rack +0 -1
  51. data/test/fixtures/client/a87c69a0624af0413a670094c6615651.rack +0 -1
  52. data/test/fixtures/client/ac493997db62308972c208afa76f8479.rack +0 -1
  53. data/test/fixtures/client/d7fbf422c77af768552423633d0389e8.rack +0 -1
  54. data/test/fixtures/client/e2d68afe39f5531195273ea259b63916.rack +0 -1
@@ -8,11 +8,12 @@ class Podio::User < ActivePodio::Base
8
8
  property :old_password, :string
9
9
  property :new_password, :string
10
10
  property :flags, :array
11
+ property :betas, :array
11
12
  property :created_on, :datetime
12
13
  property :name, :string
13
14
  property :link, :string
14
15
  property :avatar, :integer
15
- property :profile_id, :integer
16
+ property :profile_id, :integer
16
17
  property :type, :string
17
18
 
18
19
  has_many :mails, :class => 'UserMail'
@@ -25,14 +26,14 @@ class Podio::User < ActivePodio::Base
25
26
  property :marketo_cookie, :string
26
27
 
27
28
  alias_method :id, :user_id
28
-
29
+
29
30
  class << self
30
31
  def current
31
32
  member Podio.connection.get("/user/").body
32
33
  end
33
34
 
34
35
  def create(attributes)
35
- response = Podio.connection.post do |req|
36
+ response = Podio.client.trusted_connection.post do |req|
36
37
  req.url '/user/'
37
38
  req.body = attributes
38
39
  end
@@ -73,11 +74,28 @@ class Podio::User < ActivePodio::Base
73
74
  def get_property(name)
74
75
  Podio.connection.get("/user/property/#{name}").body['value']
75
76
  end
76
-
77
+
77
78
  def set_property(name, value)
78
79
  Podio.connection.put("/user/property/#{name}", {:value => value}).status
79
80
  end
80
81
 
82
+ def get_property_hash(name)
83
+ Podio.connection.get("/user/property/#{name}").body
84
+ end
85
+
86
+ def set_property_hash(name, hash)
87
+ Podio.connection.put("/user/property/#{name}", hash).status
88
+ end
89
+
90
+ def set_properties(attributes)
91
+ response = Podio.connection.put do |req|
92
+ req.url '/user/property/'
93
+ req.body = attributes
94
+ end
95
+
96
+ response.body
97
+ end
98
+
81
99
  def remove_property(name)
82
100
  Podio.connection.delete("/user/property/#{name}", {}).status
83
101
  end
@@ -115,6 +133,10 @@ class Podio::User < ActivePodio::Base
115
133
 
116
134
  def delete
117
135
  Podio.connection.delete("/user/").status
118
- end
136
+ end
137
+
138
+ def internal_source
139
+ Podio.connection.get("/user/source").body
140
+ end
119
141
  end
120
142
  end
@@ -15,6 +15,11 @@ class Podio::UserStatus < ActivePodio::Base
15
15
  def current
16
16
  member Podio.connection.get("/user/status").body
17
17
  end
18
+
19
+ def find_first_ux
20
+ Podio.connection.get("/user/status/1ux").body
21
+ end
22
+
18
23
  def find_for_space(space_id)
19
24
  Podio.connection.get("/user/status/1ux/space/#{space_id}").body
20
25
  end
@@ -0,0 +1,51 @@
1
+ class Podio::View < ActivePodio::Base
2
+ property :view_id, :integer
3
+ property :name, :string
4
+ property :created_on, :datetime
5
+ property :items, :integer
6
+ property :sort_by, :string
7
+ property :sort_desc, :string
8
+ property :filters, :hash
9
+ property :layout, :string
10
+ property :fields, :hash
11
+
12
+ alias_method :id, :view_id
13
+
14
+ has_one :created_by, :class => 'User'
15
+
16
+ class << self
17
+ def find_last(app_id)
18
+ member Podio.connection.get("/view/app/#{app_id}/last").body
19
+ end
20
+
21
+ def find_all(app_id)
22
+ list Podio.connection.get { |req|
23
+ req.url("/view/app/#{app_id}/")
24
+ }.body
25
+ end
26
+
27
+ def find(id)
28
+ member Podio.connection.get("/view/#{id}").body
29
+ end
30
+
31
+ def delete(view_id)
32
+ Podio.connection.delete("/view/#{view_id}").status
33
+ end
34
+
35
+ def create(app_id, attributes)
36
+ response = Podio.connection.post do |req|
37
+ req.url "/view/app/#{app_id}/"
38
+ req.body = attributes
39
+ end
40
+
41
+ response.body['view_id']
42
+ end
43
+
44
+ def update_last(app_id, attributes)
45
+ Podio.connection.put do |req|
46
+ req.url "/view/app/#{app_id}/last"
47
+ req.body = attributes
48
+ end
49
+ end
50
+ end
51
+ end
@@ -4,7 +4,7 @@ class Podio::Widget < ActivePodio::Base
4
4
  property :ref_id, :integer
5
5
  property :type, :string
6
6
  property :title, :string
7
- property :config, :string
7
+ property :config, :hash
8
8
  property :ref, :hash
9
9
  property :rights, :array
10
10
  property :data, :hash
data/lib/podio/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Podio
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.0'
3
3
  end
data/test/client_test.rb CHANGED
@@ -27,10 +27,12 @@ class ClientTest < Test::Unit::TestCase
27
27
  end
28
28
 
29
29
  test 'should get an access token' do
30
+ Podio.client.stubs.post('/oauth/token') {[200, {}, {"access_token" => "a3345189a07b478284356c8b0b3c54d5", "expires_in" => 28799, "refresh_token" => "cdca6acfeb374598ba2790c9e5283b21"}]}
31
+
30
32
  client = Podio.client
31
33
  client.oauth_token = nil
32
34
  assert_nil client.oauth_token
33
-
35
+
34
36
  user = fixtures[:users][:professor]
35
37
  client.authenticate_with_credentials(user[:mail], user[:password])
36
38
 
@@ -39,10 +41,14 @@ class ClientTest < Test::Unit::TestCase
39
41
  end
40
42
 
41
43
  test 'should be able to refresh access token' do
44
+ Podio.client.stubs.post('/oauth/token') {[200, {}, {"access_token" => "a3345189a07b478284356c8b0b3c54d5", "expires_in" => 28799, "refresh_token" => "cdca6acfeb374598ba2790c9e5283b21"}]}
45
+
42
46
  login_as(:fry)
43
47
  client = Podio.client
44
48
  old_token = client.oauth_token.dup
45
49
 
50
+ Podio.client.stubs.post('/oauth/token') {[200, {}, {"access_token" => "efb7614007ae426481de69310ec14953", "expires_in" => 28799, "refresh_token" => "cdca6acfeb374598ba2790c9e5283b21"}]}
51
+
46
52
  client.refresh_access_token
47
53
 
48
54
  assert_not_equal old_token.access_token, client.oauth_token.access_token
@@ -50,12 +56,13 @@ class ClientTest < Test::Unit::TestCase
50
56
  end
51
57
 
52
58
  test 'should automatically refresh an expired token' do
53
- # this token is already expired in the test database
54
- # Podio.client.oauth_token = Podio::OAuthToken.new('access_token' => '30da4594eef93528c11df7fb5deb989cd629ea7060a1ce1ced628d19398214c942bcfe0334cf953ef70a80ea1afdfd80183d5c75d19c1f5526ca4c6f6f3471ef', 'refresh_token' => '82e7a11ae187f28a25261599aa6229cd89f8faee48cba18a75d70efae88ba665ced11d43143b7f5bebb31a4103662b851dd2db1879a3947b843259479fccfad3', 'expires_in' => -10)
59
+ Podio.client.stubs.post('/oauth/token') {[200, {}, {"access_token" => "a3345189a07b478284356c8b0b3c54d5", "expires_in" => 28799, "refresh_token" => "cdca6acfeb374598ba2790c9e5283b21"}]}
55
60
 
56
61
  login_as(:professor)
57
62
  Podio.client.reset
58
63
 
64
+ Podio.client.stubs.get('/org/') {[200, {}, [{"status" => "active"}]]}
65
+
59
66
  assert_nothing_raised do
60
67
  response = Podio.connection.get("/org/")
61
68
  assert_equal 200, response.status
@@ -80,6 +87,9 @@ class ClientTest < Test::Unit::TestCase
80
87
 
81
88
  test 'should be able to make arbitrary requests' do
82
89
  login_as(:professor)
90
+
91
+ Podio.client.stubs.get('/org/') {[200, {}, [{"status" => "active"}]]}
92
+
83
93
  response = Podio.connection.get("/org/")
84
94
  assert_equal 200, response.status
85
95
  assert response.body.is_a?(Array)
@@ -6,29 +6,29 @@
6
6
  :user_id: 3
7
7
  :professor:
8
8
  :mail: professor@planetexpress.com
9
- :password: professor
9
+ :password: professor_$ecur3Pwd
10
10
  :user_id: 4
11
11
  :fry:
12
12
  :mail: fry@planetexpress.com
13
- :password: fry
13
+ :password: fry_$ecur3Pwd
14
14
  :user_id: 5
15
15
  :leela:
16
16
  :mail: leela@planetexpress.com
17
- :password: leela
17
+ :password: leela_$ecur3Pwd
18
18
  :user_id: 6
19
19
  :bender:
20
20
  :mail: bender@planetexpress.com
21
- :password: killallhumans
21
+ :password: killallhumans_$ecur3Pwd
22
22
  :user_id: 7
23
23
  :amy:
24
24
  :mail: amy@planetexpress.com
25
- :password: amy
25
+ :password: amy_$ecur3Pwd
26
26
  :user_id: 8
27
27
  :zoidberg:
28
28
  :mail: zoidberg@planetexpress.com
29
- :password: zoidberg
29
+ :password: zoidberg_$ecur3Pwd
30
30
  :user_id: 9
31
31
  :hermes:
32
32
  :mail: hermes@planetexpress.com
33
- :password: hermes
33
+ :password: hermes_$ecur3Pwd
34
34
  :user_id: 10
data/test/test_helper.rb CHANGED
@@ -2,14 +2,10 @@ require 'test/unit'
2
2
 
3
3
  require 'podio'
4
4
 
5
- ENABLE_STUBS = ENV['ENABLE_STUBS'] == 'true'
6
- ENABLE_RECORD = ENV['ENABLE_RECORD'] == 'true'
7
-
8
5
  class Test::Unit::TestCase
9
6
 
10
7
  def setup
11
8
  set_podio_client
12
- stub_responses if ENABLE_STUBS
13
9
  end
14
10
 
15
11
  # test "verify something" do
@@ -33,8 +29,7 @@ class Test::Unit::TestCase
33
29
  :api_url => 'http://api-sandbox.podio.dev',
34
30
  :api_key => 'sandbox@podio.com',
35
31
  :api_secret => 'sandbox_secret',
36
- :enable_stubs => ENABLE_STUBS && !ENABLE_RECORD,
37
- :record_mode => ENABLE_RECORD,
32
+ :enable_stubs => true,
38
33
  :test_mode => true
39
34
  )
40
35
  end
@@ -47,24 +42,6 @@ class Test::Unit::TestCase
47
42
  Podio.client.reset
48
43
  end
49
44
 
50
- def stub_responses
51
- folder_name = self.class.name.underscore.gsub('_test', '')
52
- current_folder = File.join(File.dirname(__FILE__), 'fixtures', folder_name)
53
-
54
- if File.exists?(current_folder)
55
- Dir.foreach(current_folder) do |filename|
56
- next unless filename.include?('.rack')
57
-
58
- rack_response = eval(File.read(File.join(current_folder, filename)))
59
-
60
- url = rack_response.shift
61
- method = rack_response.shift
62
-
63
- Podio.client.stubs.send(method, url) { rack_response }
64
- end
65
- end
66
- end
67
-
68
45
  def fixtures
69
46
  @fixtures ||= YAML.load_file(File.join(File.dirname(__FILE__), 'fixtures', 'fixtures.yaml'))
70
47
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: podio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-22 00:00:00.000000000 Z
13
+ date: 2012-09-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
17
- requirement: &2156588980 !ruby/object:Gem::Requirement
17
+ requirement: &2152006820 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 0.7.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2156588980
25
+ version_requirements: *2152006820
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activesupport
28
- requirement: &2156588080 !ruby/object:Gem::Requirement
28
+ requirement: &2152005480 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2156588080
36
+ version_requirements: *2152005480
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: activemodel
39
- requirement: &2156586720 !ruby/object:Gem::Requirement
39
+ requirement: &2152004840 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '3.0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2156586720
47
+ version_requirements: *2152004840
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: multi_json
50
- requirement: &2156585920 !ruby/object:Gem::Requirement
50
+ requirement: &2152004340 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2156585920
58
+ version_requirements: *2152004340
59
59
  description: ! 'The official Ruby wrapper for the Podio API used and maintained by
60
60
  the Podio team
61
61
 
@@ -83,14 +83,16 @@ files:
83
83
  - lib/podio/middleware/json_response.rb
84
84
  - lib/podio/middleware/logger.rb
85
85
  - lib/podio/middleware/oauth2.rb
86
- - lib/podio/middleware/response_recorder.rb
86
+ - lib/podio/models/account_provider.rb
87
87
  - lib/podio/models/action.rb
88
88
  - lib/podio/models/activation_status.rb
89
89
  - lib/podio/models/activity.rb
90
+ - lib/podio/models/app_store_category.rb
90
91
  - lib/podio/models/app_store_share.rb
91
92
  - lib/podio/models/application.rb
92
93
  - lib/podio/models/application_email.rb
93
94
  - lib/podio/models/application_field.rb
95
+ - lib/podio/models/batch.rb
94
96
  - lib/podio/models/bulletin.rb
95
97
  - lib/podio/models/by_line.rb
96
98
  - lib/podio/models/calendar_event.rb
@@ -119,8 +121,7 @@ files:
119
121
  - lib/podio/models/item_field.rb
120
122
  - lib/podio/models/item_revision.rb
121
123
  - lib/podio/models/linked_account.rb
122
- - lib/podio/models/meeting.rb
123
- - lib/podio/models/meeting_participiant.rb
124
+ - lib/podio/models/linked_account_data.rb
124
125
  - lib/podio/models/news.rb
125
126
  - lib/podio/models/notification.rb
126
127
  - lib/podio/models/notification_group.rb
@@ -136,6 +137,7 @@ files:
136
137
  - lib/podio/models/question_option.rb
137
138
  - lib/podio/models/rating.rb
138
139
  - lib/podio/models/recurrence.rb
140
+ - lib/podio/models/reference.rb
139
141
  - lib/podio/models/referral.rb
140
142
  - lib/podio/models/reminder.rb
141
143
  - lib/podio/models/search.rb
@@ -155,17 +157,13 @@ files:
155
157
  - lib/podio/models/user_mail.rb
156
158
  - lib/podio/models/user_status.rb
157
159
  - lib/podio/models/via.rb
160
+ - lib/podio/models/view.rb
158
161
  - lib/podio/models/widget.rb
159
162
  - lib/podio/response_wrapper.rb
160
163
  - lib/podio/version.rb
161
164
  - podio.gemspec
162
165
  - test/active_podio_test.rb
163
166
  - test/client_test.rb
164
- - test/fixtures/client/18a224aaf83ac57a7b8159cecdbb1263.rack
165
- - test/fixtures/client/a87c69a0624af0413a670094c6615651.rack
166
- - test/fixtures/client/ac493997db62308972c208afa76f8479.rack
167
- - test/fixtures/client/d7fbf422c77af768552423633d0389e8.rack
168
- - test/fixtures/client/e2d68afe39f5531195273ea259b63916.rack
169
167
  - test/fixtures/fixtures.yaml
170
168
  - test/models_sanity_test.rb
171
169
  - test/test_helper.rb
@@ -196,11 +194,6 @@ summary: Ruby wrapper for the Podio API
196
194
  test_files:
197
195
  - test/active_podio_test.rb
198
196
  - test/client_test.rb
199
- - test/fixtures/client/18a224aaf83ac57a7b8159cecdbb1263.rack
200
- - test/fixtures/client/a87c69a0624af0413a670094c6615651.rack
201
- - test/fixtures/client/ac493997db62308972c208afa76f8479.rack
202
- - test/fixtures/client/d7fbf422c77af768552423633d0389e8.rack
203
- - test/fixtures/client/e2d68afe39f5531195273ea259b63916.rack
204
197
  - test/fixtures/fixtures.yaml
205
198
  - test/models_sanity_test.rb
206
199
  - test/test_helper.rb
@@ -1,14 +0,0 @@
1
- require 'digest/md5'
2
-
3
- module Podio
4
- module Middleware
5
- class ResponseRecorder < Faraday::Response::Middleware
6
- def on_complete(env)
7
- response = "['#{Faraday::Utils.normalize_path(env[:url])}', :#{env[:method]}, #{env[:status]}, #{env[:response_headers]}, '#{env[:body]}']"
8
-
9
- filename = Digest::MD5.hexdigest(env[:url].request_uri)
10
- ::File.open("#{filename}.rack", 'w') { |f| f.write(response) }
11
- end
12
- end
13
- end
14
- end
@@ -1,151 +0,0 @@
1
- class Podio::Meeting < ActivePodio::Base
2
- include ActivePodio::Updatable, HasReference
3
-
4
- property :meeting_id, :integer
5
- property :rights, :array
6
- property :title, :string
7
- property :start_date, :date
8
- property :starts_on, :datetime, :convert_incoming_local_datetime_to_utc => true
9
- property :ends_on, :datetime, :convert_incoming_local_datetime_to_utc => true
10
- property :participant_ids, :array
11
- property :plugin, :string
12
- property :plugin_data, :hash
13
- property :location, :string
14
- property :agenda, :string
15
- property :notes, :string
16
- property :subscribed, :bool
17
- property :liked, :integer
18
- property :external_id, :string
19
- property :external_url, :string
20
- property :external_phone, :string
21
- property :external_password, :string
22
- property :external_recording_url, :string
23
- property :created_on, :datetime
24
- property :deleted_on, :datetime
25
- property :link, :string
26
- property :ref, :hash
27
- property :space_id, :integer
28
-
29
- # For creation only
30
- property :ref_id, :integer
31
- property :ref_type, :string
32
- property :file_ids, :array
33
-
34
- has_one :created_by, :class => 'User'
35
- has_one :created_via, :class => 'Via'
36
- has_many :participants, :class => 'MeetingParticipant'
37
- has_many :files, :class => 'FileAttachment'
38
- has_many :comments, :class => 'Comment'
39
- has_one :reminder, :class => 'Reminder'
40
- has_one :recurrence, :class => 'Recurrence'
41
-
42
- alias_method :id, :meeting_id
43
-
44
- def create
45
- compacted_attributes = remove_nil_values(self.attributes)
46
- created_model = if(self.ref_type.present? && self.ref_id.present?)
47
- self.class.create_with_ref(self.ref_type, self.ref_id, compacted_attributes)
48
- else
49
- self.class.create(compacted_attributes)
50
- end
51
-
52
- self.attributes = created_model.attributes
53
- end
54
-
55
- def update
56
- # compacted_attributes = remove_nil_values(self.attributes)
57
- # updated_model = self.class.update(self.id, compacted_attributes)
58
- # self.attributes = updated_model.attributes
59
- updated_model = self.class.update(self.id, self.attributes)
60
- self.attributes = updated_model.attributes
61
- end
62
-
63
- def destroy
64
- self.class.delete(self.id)
65
- end
66
-
67
- handle_api_errors_for :create, :destroy # Call must be made after the methods to handle have been defined
68
-
69
- class << self
70
- def create(attributes)
71
- response = Podio.connection.post do |req|
72
- req.url "/meeting/"
73
- req.body = attributes
74
- end
75
-
76
- member response.body
77
- end
78
-
79
- def create_with_ref(ref_type, ref_id, attributes)
80
- response = Podio.connection.post do |req|
81
- req.url "/meeting/#{ref_type}/#{ref_id}/"
82
- req.body = attributes
83
- end
84
-
85
- member response.body
86
- end
87
-
88
- def update(id, attributes)
89
- response = Podio.connection.put do |req|
90
- req.url "/meeting/#{id}"
91
- req.body = attributes
92
- end
93
-
94
- member response.body
95
- end
96
-
97
- def delete(id)
98
- Podio.connection.delete("/meeting/#{id}").status
99
- end
100
-
101
- def find(id)
102
- member Podio.connection.get("/meeting/#{id}").body
103
- end
104
-
105
- def find_for_reference(ref_type, ref_id, options={})
106
- list Podio.connection.get { |req|
107
- req.url("/meeting/#{ref_type}/#{ref_id}/", options)
108
- }.body
109
- end
110
-
111
- def find_all(options={})
112
- list Podio.connection.get { |req|
113
- req.url('/meeting/', options)
114
- }.body
115
- end
116
-
117
- def find_summary
118
- response = Podio.connection.get("/meeting/summary").body
119
- response['past']['tasks'] = list(response['past']['meetings'])
120
- response['today']['tasks'] = list(response['today']['meetings'])
121
- response['future']['tasks'] = list(response['future']['meetings'])
122
- response
123
- end
124
-
125
- def find_summary_for_reference(ref_type, ref_id)
126
- response = Podio.connection.get("/meeting/#{ref_type}/#{ref_id}/summary").body
127
- response['past']['tasks'] = list(response['past']['meetings'])
128
- response['today']['tasks'] = list(response['today']['meetings'])
129
- response['future']['tasks'] = list(response['future']['meetings'])
130
- response
131
- end
132
-
133
- def find_personal_summary
134
- response = Podio.connection.get("/meeting/personal/summary").body
135
- response['past']['tasks'] = list(response['past']['meetings'])
136
- response['today']['tasks'] = list(response['today']['meetings'])
137
- response['future']['tasks'] = list(response['future']['meetings'])
138
- response
139
- end
140
-
141
- def set_participation_status(id, status)
142
- response = Podio.connection.post do |req|
143
- req.url "/meeting/#{id}/status"
144
- req.body = { :status => status }
145
- end
146
-
147
- response.status
148
- end
149
-
150
- end
151
- end