podio 0.7.0 → 0.8.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.
- data/Rakefile +0 -16
- data/lib/podio.rb +6 -3
- data/lib/podio/active_podio/base.rb +53 -21
- data/lib/podio/active_podio/updatable.rb +9 -14
- data/lib/podio/client.rb +46 -17
- data/lib/podio/error.rb +9 -0
- data/lib/podio/middleware/error_response.rb +5 -1
- data/lib/podio/middleware/json_request.rb +27 -5
- data/lib/podio/models/account_provider.rb +16 -0
- data/lib/podio/models/app_store_category.rb +25 -0
- data/lib/podio/models/app_store_share.rb +90 -11
- data/lib/podio/models/application.rb +52 -12
- data/lib/podio/models/application_field.rb +4 -4
- data/lib/podio/models/batch.rb +31 -0
- data/lib/podio/models/calendar_event.rb +64 -10
- data/lib/podio/models/category.rb +11 -9
- data/lib/podio/models/contact.rb +3 -1
- data/lib/podio/models/contract.rb +3 -0
- data/lib/podio/models/email_subscription_setting.rb +26 -3
- data/lib/podio/models/file_attachment.rb +3 -2
- data/lib/podio/models/form.rb +2 -2
- data/lib/podio/models/importer.rb +18 -9
- data/lib/podio/models/item.rb +87 -22
- data/lib/podio/models/item_field.rb +8 -3
- data/lib/podio/models/linked_account.rb +11 -3
- data/lib/podio/models/linked_account_data.rb +6 -0
- data/lib/podio/models/news.rb +1 -0
- data/lib/podio/models/organization.rb +4 -0
- data/lib/podio/models/organization_member.rb +17 -4
- data/lib/podio/models/organization_profile.rb +5 -1
- data/lib/podio/models/profile.rb +19 -10
- data/lib/podio/models/reference.rb +33 -0
- data/lib/podio/models/search.rb +4 -7
- data/lib/podio/models/space.rb +21 -12
- data/lib/podio/models/space_invitation.rb +7 -7
- data/lib/podio/models/space_member.rb +28 -3
- data/lib/podio/models/task.rb +38 -14
- data/lib/podio/models/user.rb +27 -5
- data/lib/podio/models/user_status.rb +5 -0
- data/lib/podio/models/view.rb +51 -0
- data/lib/podio/models/widget.rb +1 -1
- data/lib/podio/version.rb +1 -1
- data/test/client_test.rb +13 -3
- data/test/fixtures/fixtures.yaml +7 -7
- data/test/test_helper.rb +1 -24
- metadata +16 -23
- data/lib/podio/middleware/response_recorder.rb +0 -14
- data/lib/podio/models/meeting.rb +0 -151
- data/lib/podio/models/meeting_participiant.rb +0 -11
- data/test/fixtures/client/18a224aaf83ac57a7b8159cecdbb1263.rack +0 -1
- data/test/fixtures/client/a87c69a0624af0413a670094c6615651.rack +0 -1
- data/test/fixtures/client/ac493997db62308972c208afa76f8479.rack +0 -1
- data/test/fixtures/client/d7fbf422c77af768552423633d0389e8.rack +0 -1
- data/test/fixtures/client/e2d68afe39f5531195273ea259b63916.rack +0 -1
@@ -2,16 +2,38 @@ module Podio
|
|
2
2
|
module Middleware
|
3
3
|
class JsonRequest < Faraday::Middleware
|
4
4
|
require 'multi_json'
|
5
|
-
|
5
|
+
|
6
|
+
CONTENT_TYPE = 'Content-Type'.freeze
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_accessor :mime_type
|
10
|
+
end
|
11
|
+
self.mime_type = 'application/json'.freeze
|
12
|
+
|
6
13
|
def call(env)
|
7
|
-
env
|
8
|
-
|
9
|
-
if env[:body] && !env[:body].respond_to?(:to_str)
|
14
|
+
match_content_type(env) do |data|
|
10
15
|
env[:body] = MultiJson.encode(env[:body])
|
11
16
|
end
|
12
|
-
|
13
17
|
@app.call env
|
14
18
|
end
|
19
|
+
|
20
|
+
def match_content_type(env)
|
21
|
+
if process_request?(env)
|
22
|
+
env[:request_headers][CONTENT_TYPE] ||= self.class.mime_type
|
23
|
+
yield env[:body] unless env[:body].respond_to?(:to_str)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def process_request?(env)
|
28
|
+
type = request_type(env)
|
29
|
+
env[:body] and (type.empty? or type == self.class.mime_type)
|
30
|
+
end
|
31
|
+
|
32
|
+
def request_type(env)
|
33
|
+
type = env[:request_headers][CONTENT_TYPE].to_s
|
34
|
+
type = type.split(';', 2).first if type.index(';')
|
35
|
+
type
|
36
|
+
end
|
15
37
|
end
|
16
38
|
end
|
17
39
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Podio::AccountProvider < ActivePodio::Base
|
2
|
+
property :name, :string
|
3
|
+
property :connect_link, :string
|
4
|
+
property :humanized_name, :string
|
5
|
+
property :capabilities, :array
|
6
|
+
|
7
|
+
class << self
|
8
|
+
|
9
|
+
def find_all(options = {})
|
10
|
+
list Podio.connection.get { |req|
|
11
|
+
req.url("/linked_account/provider/", options)
|
12
|
+
}.body
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Podio::AppStoreCategory < ActivePodio::Base
|
2
|
+
property :category_id, :integer
|
3
|
+
property :name, :string
|
4
|
+
property :type, :string
|
5
|
+
|
6
|
+
alias_method :id, :category_id
|
7
|
+
|
8
|
+
class << self
|
9
|
+
|
10
|
+
def find(category_id)
|
11
|
+
member Podio.connection.get("/app_store/category/#{category_id}").body
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_all
|
15
|
+
categories = Podio.connection.get("/app_store/category/").body
|
16
|
+
|
17
|
+
categories.each do | key, value |
|
18
|
+
categories[key] = list value
|
19
|
+
end
|
20
|
+
|
21
|
+
categories
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -2,29 +2,31 @@ class Podio::AppStoreShare < ActivePodio::Base
|
|
2
2
|
property :share_id, :integer
|
3
3
|
property :type, :string
|
4
4
|
property :status, :string
|
5
|
-
property :parents, :hash
|
6
5
|
property :name, :string
|
7
6
|
property :description, :string
|
8
7
|
property :abstract, :string
|
9
8
|
property :language, :string
|
10
|
-
property :featured, :boolean
|
11
9
|
property :features, :array
|
12
10
|
property :filters, :array
|
13
11
|
property :integration, :string
|
14
12
|
property :categories, :hash
|
15
13
|
property :org, :hash
|
16
|
-
property :author, :hash
|
17
14
|
property :author_apps, :integer
|
18
15
|
property :author_packs, :integer
|
19
16
|
property :icon, :string
|
20
|
-
property :
|
17
|
+
property :icon_id, :integer
|
21
18
|
property :ratings, :hash
|
22
19
|
property :user_rating, :array
|
23
|
-
property :screenshots, :array
|
24
20
|
property :video, :string
|
21
|
+
property :rating, :integer
|
25
22
|
|
26
23
|
has_many :children, :class => 'AppStoreShare'
|
24
|
+
has_many :parents, :class => 'AppStoreShare'
|
25
|
+
has_many :screenshots, :class => 'FileAttachment'
|
26
|
+
has_many :comments, :class => 'Comment'
|
27
27
|
has_one :author, :class => 'ByLine'
|
28
|
+
has_one :space, :class => 'Space'
|
29
|
+
has_one :app, :class => 'Application'
|
28
30
|
|
29
31
|
alias_method :id, :share_id
|
30
32
|
|
@@ -32,8 +34,12 @@ class Podio::AppStoreShare < ActivePodio::Base
|
|
32
34
|
self.share_id = self.class.create(self.attributes)
|
33
35
|
end
|
34
36
|
|
35
|
-
def
|
36
|
-
self.class.
|
37
|
+
def destroy
|
38
|
+
self.class.destroy(self.share_id)
|
39
|
+
end
|
40
|
+
|
41
|
+
def install(space_id, dependencies, social = true)
|
42
|
+
self.class.install(self.share_id, space_id, dependencies, social)
|
37
43
|
end
|
38
44
|
|
39
45
|
handle_api_errors_for :create, :install # Call must be made after the methods to handle have been defined
|
@@ -52,10 +58,23 @@ class Podio::AppStoreShare < ActivePodio::Base
|
|
52
58
|
response.body['share_id']
|
53
59
|
end
|
54
60
|
|
55
|
-
def
|
61
|
+
def update(id, attributes)
|
62
|
+
response = Podio.connection.put do |req|
|
63
|
+
req.url "/app_store/#{id}"
|
64
|
+
req.body = attributes
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def destroy(id)
|
69
|
+
response = Podio.connection.delete do |req|
|
70
|
+
req.url "/app_store/#{id}"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def install(share_id, space_id, dependencies, social = true)
|
56
75
|
response = Podio.connection.post do |req|
|
57
76
|
req.url "/app_store/#{share_id}/install/v2"
|
58
|
-
req.body = {:space_id => space_id, :dependencies => dependencies}
|
77
|
+
req.body = {:space_id => space_id, :dependencies => dependencies, :social => social}
|
59
78
|
end
|
60
79
|
|
61
80
|
response.body
|
@@ -65,9 +84,69 @@ class Podio::AppStoreShare < ActivePodio::Base
|
|
65
84
|
member Podio.connection.get("/app_store/#{id}/v2").body
|
66
85
|
end
|
67
86
|
|
68
|
-
def
|
69
|
-
|
87
|
+
def find_all_own(options = {})
|
88
|
+
shares_collection Podio.connection.get { |req|
|
89
|
+
req.url "/app_store/own/", options
|
90
|
+
}.body
|
91
|
+
end
|
92
|
+
|
93
|
+
def find_all_private_for_org(org_id, options = {})
|
94
|
+
shares_collection Podio.connection.get { |req|
|
95
|
+
req.url "/app_store/org/#{org_id}/", options
|
96
|
+
}.body
|
97
|
+
end
|
98
|
+
|
99
|
+
def find_all_public_for_org(org_url, options = {})
|
100
|
+
shares_collection Podio.connection.get { |req|
|
101
|
+
req.url "/app_store/org/#{org_url}/", options
|
102
|
+
}.body
|
103
|
+
end
|
104
|
+
|
105
|
+
def find_all_recommended_for_area(area, options = {})
|
106
|
+
list Podio.connection.get { |req|
|
107
|
+
req.url("/app_store/recommended/#{area}/", options)
|
108
|
+
}.body['shares']
|
70
109
|
end
|
110
|
+
|
111
|
+
def set_recommended_for_area(area, share_ids)
|
112
|
+
response = Podio.connection.put do |req|
|
113
|
+
req.url "/app_store/recommended/#{area}/"
|
114
|
+
req.body = share_ids
|
115
|
+
end
|
116
|
+
|
117
|
+
response.status
|
118
|
+
end
|
119
|
+
|
120
|
+
def find_all_by_reference(ref_type, ref_id)
|
121
|
+
list Podio.connection.get("/app_store/#{ref_type}/#{ref_id}/").body
|
122
|
+
end
|
123
|
+
|
124
|
+
def find_top(options = {})
|
125
|
+
shares_collection Podio.connection.get { |req|
|
126
|
+
req.url("/app_store/top/", options)
|
127
|
+
}.body
|
128
|
+
end
|
129
|
+
|
130
|
+
def find_all_by_category(category_id, options = {})
|
131
|
+
shares_collection Podio.connection.get { |req|
|
132
|
+
req.url("/app_store/category/#{category_id}/", options)
|
133
|
+
}.body
|
134
|
+
end
|
135
|
+
|
136
|
+
def find_all_by_search(options = {})
|
137
|
+
shares_collection Podio.connection.get { |req|
|
138
|
+
req.url("/app_store/search/", options)
|
139
|
+
}.body
|
140
|
+
end
|
141
|
+
|
142
|
+
private
|
143
|
+
|
144
|
+
def shares_collection(response)
|
145
|
+
result = Struct.new(:all, :total_count).new(response['shares'], response['total'])
|
146
|
+
result.all.map! { |share| new(share, :values_from_api => true) } if result.all.present?
|
147
|
+
result
|
148
|
+
end
|
149
|
+
|
71
150
|
end
|
72
151
|
end
|
73
152
|
|
@@ -4,6 +4,7 @@ class Podio::Application < ActivePodio::Base
|
|
4
4
|
property :original_revision, :integer
|
5
5
|
property :status, :string
|
6
6
|
property :icon, :string
|
7
|
+
property :icon_id, :integer
|
7
8
|
property :space_id, :integer
|
8
9
|
property :owner_id, :integer
|
9
10
|
property :owner, :hash
|
@@ -15,35 +16,49 @@ class Podio::Application < ActivePodio::Base
|
|
15
16
|
property :link, :string
|
16
17
|
property :url_add, :string
|
17
18
|
property :token, :string
|
19
|
+
property :url_label, :string
|
20
|
+
property :mailbox, :string
|
18
21
|
|
19
22
|
# When app is returned as part of large collection (e.g. for stream), some config properties is moved to the main object
|
20
23
|
property :name, :string
|
21
24
|
property :item_name, :string
|
22
|
-
|
25
|
+
|
23
26
|
has_one :integration, :class => 'Integration'
|
24
27
|
|
25
28
|
alias_method :id, :app_id
|
26
|
-
delegate_to_hash :config, :allow_edit?, :allow_attachments?, :allow_comments?, :description, :visible?, :usage
|
27
|
-
|
29
|
+
delegate_to_hash :config, :allow_edit?, :allow_attachments?, :allow_comments?, :description, :visible?, :usage, :default_view
|
30
|
+
|
28
31
|
def name
|
29
32
|
self[:name] || self.config['name']
|
30
33
|
end
|
31
|
-
|
34
|
+
|
32
35
|
def item_name
|
33
36
|
self[:item_name] || self.config['item_name']
|
34
37
|
end
|
35
|
-
|
38
|
+
|
36
39
|
class << self
|
37
|
-
def find(app_id)
|
38
|
-
member Podio.connection.get
|
40
|
+
def find(app_id, options = {})
|
41
|
+
member Podio.connection.get { |req|
|
42
|
+
req.url("/app/#{app_id}", options)
|
43
|
+
}.body
|
44
|
+
end
|
45
|
+
|
46
|
+
def find_by_url_label(space_id, url_label)
|
47
|
+
member Podio.connection.get("/app/space/#{space_id}/#{url_label}").body
|
39
48
|
end
|
40
|
-
|
49
|
+
|
41
50
|
def find_all(options={})
|
42
51
|
list Podio.connection.get { |req|
|
43
52
|
req.url("/app/", options)
|
44
53
|
}.body
|
45
54
|
end
|
46
55
|
|
56
|
+
def find_all_for_current_user(options={})
|
57
|
+
list Podio.connection.get { |req|
|
58
|
+
req.url("/app/v2/", options)
|
59
|
+
}.body
|
60
|
+
end
|
61
|
+
|
47
62
|
def find_top(options={})
|
48
63
|
list Podio.connection.get { |req|
|
49
64
|
req.url("/app/top/", options)
|
@@ -75,7 +90,7 @@ class Podio::Application < ActivePodio::Base
|
|
75
90
|
|
76
91
|
response.body
|
77
92
|
end
|
78
|
-
|
93
|
+
|
79
94
|
def create(attributes)
|
80
95
|
response = Podio.connection.post do |req|
|
81
96
|
req.url "/app/"
|
@@ -92,10 +107,18 @@ class Podio::Application < ActivePodio::Base
|
|
92
107
|
response.status
|
93
108
|
end
|
94
109
|
|
110
|
+
def install(app_id, attributes)
|
111
|
+
response = Podio.connection.post do |req|
|
112
|
+
req.url "/app/#{app_id}/install"
|
113
|
+
req.body = attributes
|
114
|
+
end
|
115
|
+
response.body['app_id']
|
116
|
+
end
|
117
|
+
|
95
118
|
def delete_field(app_id, field_id)
|
96
119
|
Podio.connection.delete("/app/#{app_id}/field/#{field_id}").status
|
97
120
|
end
|
98
|
-
|
121
|
+
|
99
122
|
def deactivate(id)
|
100
123
|
Podio.connection.post("/app/#{id}/deactivate").body
|
101
124
|
end
|
@@ -103,7 +126,7 @@ class Podio::Application < ActivePodio::Base
|
|
103
126
|
def activate(id)
|
104
127
|
Podio.connection.post("/app/#{id}/activate").body
|
105
128
|
end
|
106
|
-
|
129
|
+
|
107
130
|
def delete(id)
|
108
131
|
Podio.connection.delete("/app/#{id}").body
|
109
132
|
end
|
@@ -111,5 +134,22 @@ class Podio::Application < ActivePodio::Base
|
|
111
134
|
def install_on_mobile(id)
|
112
135
|
Podio.connection.post("/mobile/install_app/#{id}").body
|
113
136
|
end
|
137
|
+
|
138
|
+
def features(options)
|
139
|
+
Podio.connection.get { |req|
|
140
|
+
req.url("/app/features/", options)
|
141
|
+
}.body
|
142
|
+
end
|
143
|
+
|
144
|
+
def dependencies(id)
|
145
|
+
Podio.connection.get("/app/#{id}/dependencies/").body
|
146
|
+
end
|
147
|
+
|
148
|
+
def space_dependencies(space_id)
|
149
|
+
result = Podio.connection.get("/app/space/#{space_id}/dependencies/").body
|
150
|
+
result['apps'] = result['apps'].collect { |app| Application.new(app) }
|
151
|
+
result
|
152
|
+
end
|
153
|
+
|
114
154
|
end
|
115
|
-
end
|
155
|
+
end
|
@@ -7,12 +7,12 @@ class Podio::ApplicationField < ActivePodio::Base
|
|
7
7
|
|
8
8
|
alias_method :id, :field_id
|
9
9
|
delegate_to_hash :config, :label, :description, :delta, :settings, :required?, :visible?
|
10
|
-
delegate_to_hash :settings, :allowed_values, :referenceable_types, :allowed_currencies, :valid_types, :options, :multiple
|
11
|
-
|
10
|
+
delegate_to_hash :settings, :allowed_values, :referenceable_types, :allowed_currencies, :allowed_mimetypes, :valid_types, :options, :multiple
|
11
|
+
|
12
12
|
class << self
|
13
13
|
def find(app_id, field_id)
|
14
14
|
member Podio.connection.get("/app/#{app_id}/field/#{field_id}").body
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
end
|
18
|
-
end
|
18
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class Podio::Batch < ActivePodio::Base
|
2
|
+
property :batch_id, :integer
|
3
|
+
property :name, :string
|
4
|
+
property :plugin, :string
|
5
|
+
property :status, :string
|
6
|
+
property :completed, :integer
|
7
|
+
property :skipped, :integer
|
8
|
+
property :failed, :integer
|
9
|
+
property :created_on, :datetime
|
10
|
+
property :started_on, :datetime
|
11
|
+
property :ended_on, :datetime
|
12
|
+
|
13
|
+
has_one :file, :class => 'FileAttachment'
|
14
|
+
has_one :app, :class => 'Application'
|
15
|
+
has_one :space, :class => 'Space'
|
16
|
+
|
17
|
+
alias_method :id, :batch_id
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def find(id)
|
21
|
+
member Podio.connection.get("/batch/#{id}").body
|
22
|
+
end
|
23
|
+
|
24
|
+
def find_all(options={})
|
25
|
+
list Podio.connection.get { |req|
|
26
|
+
req.url("/batch/", options)
|
27
|
+
}.body
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -3,14 +3,17 @@ class Podio::CalendarEvent < ActivePodio::Base
|
|
3
3
|
property :id, :integer
|
4
4
|
property :group, :string
|
5
5
|
property :title, :string
|
6
|
+
property :description, :string
|
7
|
+
property :location, :string
|
8
|
+
property :status, :string
|
6
9
|
property :start, :datetime, :convert_timezone => false
|
10
|
+
property :start_date, :date
|
11
|
+
property :start_time, :string
|
7
12
|
property :end, :datetime, :convert_timezone => false
|
13
|
+
property :end_date, :date
|
14
|
+
property :end_time, :string
|
8
15
|
property :link, :string
|
9
|
-
|
10
|
-
has_one :app, :class => 'Application'
|
11
|
-
has_one :space, :class => 'Space'
|
12
|
-
has_one :org, :class => 'Organization'
|
13
|
-
|
16
|
+
|
14
17
|
class << self
|
15
18
|
|
16
19
|
def find_all(options = {})
|
@@ -18,15 +21,29 @@ class Podio::CalendarEvent < ActivePodio::Base
|
|
18
21
|
req.url('/calendar/', options)
|
19
22
|
}.body
|
20
23
|
end
|
21
|
-
|
24
|
+
|
22
25
|
def find_all_for_space(space_id, options={})
|
23
26
|
list Podio.connection.get { |req|
|
24
27
|
req.url("/calendar/space/#{space_id}/", options)
|
25
|
-
}.body
|
28
|
+
}.body
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_all_for_app(app_id, options={})
|
32
|
+
list Podio.connection.get { |req|
|
33
|
+
req.url("/calendar/app/#{app_id}/", options)
|
34
|
+
}.body
|
26
35
|
end
|
27
36
|
|
28
|
-
def
|
29
|
-
|
37
|
+
def get_calendars_for_linked_acc(acc_id, options={})
|
38
|
+
list Podio.connection.get { |req|
|
39
|
+
req.url("/calendar/export/linked_account/#{acc_id}/available", options)
|
40
|
+
}.body
|
41
|
+
end
|
42
|
+
|
43
|
+
def find_summary(options = {})
|
44
|
+
response = Podio.connection.get do |req|
|
45
|
+
req.url("/calendar/summary", options)
|
46
|
+
end.body
|
30
47
|
response['today']['events'] = list(response['today']['events'])
|
31
48
|
response['upcoming']['events'] = list(response['upcoming']['events'])
|
32
49
|
response
|
@@ -52,6 +69,43 @@ class Podio::CalendarEvent < ActivePodio::Base
|
|
52
69
|
response['upcoming']['events'] = list(response['upcoming']['events'])
|
53
70
|
response
|
54
71
|
end
|
55
|
-
|
72
|
+
|
73
|
+
def set_reference_export(linked_account_id, ref_type, ref_id, attributes={})
|
74
|
+
response = Podio.connection.put do |req|
|
75
|
+
req.url "/calendar/export/linked_account/#{linked_account_id}/#{ref_type}/#{ref_id}"
|
76
|
+
req.body = attributes
|
77
|
+
end
|
78
|
+
response.status
|
79
|
+
end
|
80
|
+
|
81
|
+
def get_reference_exports(ref_type, ref_id)
|
82
|
+
list Podio.connection.get { |req|
|
83
|
+
req.url("/calendar/export/#{ref_type}/#{ref_id}/")
|
84
|
+
}.body
|
85
|
+
end
|
86
|
+
|
87
|
+
def stop_reference_export(linked_account_id, ref_type, ref_id)
|
88
|
+
Podio.connection.delete("/calendar/export/linked_account/#{linked_account_id}/#{ref_type}/#{ref_id}").status
|
89
|
+
end
|
90
|
+
|
91
|
+
def set_global_export(linked_account_id, attributes={})
|
92
|
+
response = Podio.connection.put do |req|
|
93
|
+
req.url "/calendar/export/linked_account/#{linked_account_id}"
|
94
|
+
req.body = attributes
|
95
|
+
end
|
96
|
+
response.status
|
97
|
+
end
|
98
|
+
|
99
|
+
def get_global_exports()
|
100
|
+
list Podio.connection.get { |req|
|
101
|
+
req.url("/calendar/export/")
|
102
|
+
}.body
|
103
|
+
end
|
104
|
+
|
105
|
+
def stop_global_export(linked_account_id)
|
106
|
+
Podio.connection.delete("/calendar/export/linked_account/#{linked_account_id}").status
|
107
|
+
end
|
108
|
+
|
56
109
|
end
|
110
|
+
|
57
111
|
end
|