tableau_rest_api 0.1.2
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.
- checksums.yaml +7 -0
- data/Gemfile +8 -0
- data/Guardfile +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +103 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/fixtures/vcr_cassettes/add_user.yml +223 -0
- data/fixtures/vcr_cassettes/add_user_to_group.yml +451 -0
- data/fixtures/vcr_cassettes/add_user_to_group_through_site.yml +451 -0
- data/fixtures/vcr_cassettes/create_group.yml +224 -0
- data/fixtures/vcr_cassettes/create_group_through_site.yml +224 -0
- data/fixtures/vcr_cassettes/datasources.yml +234 -0
- data/fixtures/vcr_cassettes/datasources_through_site.yml +234 -0
- data/fixtures/vcr_cassettes/delete_datasource.yml +334 -0
- data/fixtures/vcr_cassettes/delete_group.yml +328 -0
- data/fixtures/vcr_cassettes/delete_group_through_site.yml +329 -0
- data/fixtures/vcr_cassettes/delete_schedule.yml +276 -0
- data/fixtures/vcr_cassettes/delete_site.yml +214 -0
- data/fixtures/vcr_cassettes/delete_subscription.yml +329 -0
- data/fixtures/vcr_cassettes/delete_workbook.yml +350 -0
- data/fixtures/vcr_cassettes/get_datasource.yml +673 -0
- data/fixtures/vcr_cassettes/get_workbook.yml +15044 -0
- data/fixtures/vcr_cassettes/groups.yml +229 -0
- data/fixtures/vcr_cassettes/groups_through_site.yml +230 -0
- data/fixtures/vcr_cassettes/projects_through_site.yml +230 -0
- data/fixtures/vcr_cassettes/query_workbooks.yml +250 -0
- data/fixtures/vcr_cassettes/remove_user_from_group_through_site.yml +440 -0
- data/fixtures/vcr_cassettes/remove_user_from_site_through_site.yml +329 -0
- data/fixtures/vcr_cassettes/schedules.yml +115 -0
- data/fixtures/vcr_cassettes/server_info.yml +53 -0
- data/fixtures/vcr_cassettes/signin.yml +57 -0
- data/fixtures/vcr_cassettes/signout.yml +102 -0
- data/fixtures/vcr_cassettes/sites.yml +118 -0
- data/fixtures/vcr_cassettes/subscriptions.yml +226 -0
- data/fixtures/vcr_cassettes/switch_site.yml +113 -0
- data/fixtures/vcr_cassettes/update_group_through_site.yml +343 -0
- data/fixtures/vcr_cassettes/update_user_through_site.yml +333 -0
- data/fixtures/vcr_cassettes/users_in_group.yml +339 -0
- data/fixtures/vcr_cassettes/users_on_site.yml +230 -0
- data/fixtures/vcr_cassettes/users_through_site.yml +230 -0
- data/fixtures/vcr_cassettes/workbooks_through_site.yml +250 -0
- data/lib/tableau_rest_api.rb +32 -0
- data/lib/tableau_rest_api/api_error.rb +7 -0
- data/lib/tableau_rest_api/area/schedule_subscription.rb +41 -0
- data/lib/tableau_rest_api/area/user_group.rb +72 -0
- data/lib/tableau_rest_api/area/workbook_datasource.rb +87 -0
- data/lib/tableau_rest_api/client.rb +65 -0
- data/lib/tableau_rest_api/helpers/helpers.rb +9 -0
- data/lib/tableau_rest_api/resource.rb +42 -0
- data/lib/tableau_rest_api/resources/base.rb +24 -0
- data/lib/tableau_rest_api/resources/datasource.rb +12 -0
- data/lib/tableau_rest_api/resources/group.rb +10 -0
- data/lib/tableau_rest_api/resources/project.rb +12 -0
- data/lib/tableau_rest_api/resources/schedule.rb +12 -0
- data/lib/tableau_rest_api/resources/server.rb +12 -0
- data/lib/tableau_rest_api/resources/site.rb +68 -0
- data/lib/tableau_rest_api/resources/subscription.rb +10 -0
- data/lib/tableau_rest_api/resources/user.rb +12 -0
- data/lib/tableau_rest_api/resources/workbook.rb +12 -0
- data/lib/tableau_rest_api/util/config.rb +22 -0
- data/lib/tableau_rest_api/util/response.rb +11 -0
- data/lib/tableau_rest_api/util/token.rb +16 -0
- data/lib/tableau_rest_api/util/upload.rb +29 -0
- data/lib/tableau_rest_api/version.rb +3 -0
- data/tableau_rest_api.gemspec +33 -0
- metadata +222 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: post
|
|
5
|
+
uri: https://tableau.lvh.me/api/2.6/auth/signin
|
|
6
|
+
body:
|
|
7
|
+
encoding: UTF-8
|
|
8
|
+
string: '{"credentials":{"name":"<TABLEAU_USERNAME>","password":"<TABLEAU_PASSWORD>","site":{"contentUrl":""}}}'
|
|
9
|
+
headers:
|
|
10
|
+
Accept:
|
|
11
|
+
- application/json
|
|
12
|
+
Accept-Encoding:
|
|
13
|
+
- gzip, deflate
|
|
14
|
+
User-Agent:
|
|
15
|
+
- rest-client/2.0.2 (linux-gnu x86_64) ruby/2.3.3p222
|
|
16
|
+
Content-Type:
|
|
17
|
+
- application/json
|
|
18
|
+
Content-Length:
|
|
19
|
+
- '94'
|
|
20
|
+
Host:
|
|
21
|
+
- tableau.lvh.me
|
|
22
|
+
response:
|
|
23
|
+
status:
|
|
24
|
+
code: 200
|
|
25
|
+
message: OK
|
|
26
|
+
headers:
|
|
27
|
+
Date:
|
|
28
|
+
- Mon, 26 Jun 2017 10:50:21 GMT
|
|
29
|
+
Server:
|
|
30
|
+
- Tableau
|
|
31
|
+
Content-Type:
|
|
32
|
+
- application/json;charset=utf-8
|
|
33
|
+
Vary:
|
|
34
|
+
- Accept-Encoding
|
|
35
|
+
Content-Encoding:
|
|
36
|
+
- gzip
|
|
37
|
+
P3p:
|
|
38
|
+
- CP="NON"
|
|
39
|
+
X-Ua-Compatible:
|
|
40
|
+
- IE=Edge
|
|
41
|
+
X-Content-Type-Options:
|
|
42
|
+
- nosniff
|
|
43
|
+
X-Xss-Protection:
|
|
44
|
+
- 1; mode=block
|
|
45
|
+
Content-Length:
|
|
46
|
+
- '195'
|
|
47
|
+
body:
|
|
48
|
+
encoding: ASCII-8BIT
|
|
49
|
+
string: !binary |-
|
|
50
|
+
H4sIAAAAAAAAAz2MvQ6CMBgA3+WbbdIf/uqGoAwatUYTdTGlFENQMC1KCPLu
|
|
51
|
+
wuJ0y931oIzOdNUU8mFh3oMtGj2xyGAORBKcuylHmPIUOUw7SHoUI99nGfE4
|
|
52
|
+
ZixQMANVV824OJnH2MAwg7fV5j+hKSGcU44ylrvIyXGAJFcEUYyVdlju+0E6
|
|
53
|
+
RU1d6mr02/3ldgnPndDdcRG+2mW0NUJ8n+uKtvaDD/F9USdMRNe4tbsk2JRH
|
|
54
|
+
Ks1KwDD8AFV7PaPNAAAA
|
|
55
|
+
http_version:
|
|
56
|
+
recorded_at: Mon, 26 Jun 2017 10:50:24 GMT
|
|
57
|
+
- request:
|
|
58
|
+
method: get
|
|
59
|
+
uri: https://tableau.lvh.me/api/2.6/sites
|
|
60
|
+
body:
|
|
61
|
+
encoding: US-ASCII
|
|
62
|
+
string: ''
|
|
63
|
+
headers:
|
|
64
|
+
Accept:
|
|
65
|
+
- application/json
|
|
66
|
+
Accept-Encoding:
|
|
67
|
+
- gzip, deflate
|
|
68
|
+
User-Agent:
|
|
69
|
+
- rest-client/2.0.2 (linux-gnu x86_64) ruby/2.3.3p222
|
|
70
|
+
Content-Type:
|
|
71
|
+
- application/json
|
|
72
|
+
X-Tableau-Auth:
|
|
73
|
+
- wPY_YAXyQeyTBApwECNrQQ|mKn2wsv0RDgBoG3QCZDwsOG8LkT2arFQ
|
|
74
|
+
Host:
|
|
75
|
+
- tableau.lvh.me
|
|
76
|
+
response:
|
|
77
|
+
status:
|
|
78
|
+
code: 200
|
|
79
|
+
message: OK
|
|
80
|
+
headers:
|
|
81
|
+
Date:
|
|
82
|
+
- Mon, 26 Jun 2017 10:50:21 GMT
|
|
83
|
+
Server:
|
|
84
|
+
- Tableau
|
|
85
|
+
Content-Type:
|
|
86
|
+
- application/json;charset=utf-8
|
|
87
|
+
Vary:
|
|
88
|
+
- Accept-Encoding
|
|
89
|
+
Content-Encoding:
|
|
90
|
+
- gzip
|
|
91
|
+
P3p:
|
|
92
|
+
- CP="NON"
|
|
93
|
+
X-Ua-Compatible:
|
|
94
|
+
- IE=Edge
|
|
95
|
+
X-Content-Type-Options:
|
|
96
|
+
- nosniff
|
|
97
|
+
X-Xss-Protection:
|
|
98
|
+
- 1; mode=block
|
|
99
|
+
Content-Length:
|
|
100
|
+
- '521'
|
|
101
|
+
body:
|
|
102
|
+
encoding: ASCII-8BIT
|
|
103
|
+
string: !binary |-
|
|
104
|
+
H4sIAAAAAAAAA92VS2sbMRDHv0rYcwb0Wj1yM22hhz4OaeihlKDHyBHY67CS
|
|
105
|
+
A23wd++oCZjY8SmH4t52/n/NSPoxo30c7v2yTL6VzTRcPfYIv2zXAefhauDD
|
|
106
|
+
5V/huvzGHjJGQts0v1o8+LLyYdVlO+wuh1oa1l6gfwxXPx6HknqK5yyPwQET
|
|
107
|
+
LoCSqMBrwcAYmbh2TEobqebk173Se8x+u2okxM3UcGo384pkin1al+nzJvVV
|
|
108
|
+
7568xZRuKs6V3Np833RYxFYekIQZH0qlG30stW3mXx+mflQ6T5u3uHc/lXVp
|
|
109
|
+
lCbGXmMbapxLwK/tjqoepCy3WNsiRqx7J/tVJSv6eIff/bze3r9I2l0+M7DC
|
|
110
|
+
SAzKgDZRgRrFCJ55A6OMiRtnMaPZM/hGG10TQ3FIwXv/T0E8X/ctJLSVNqGK
|
|
111
|
+
gFlJUMEKcIxZUFp6HS1qpdUxCXlIgjqt1WdEZ82D5ei1zQo4z5k6w3CaDgqF
|
|
112
|
+
cNl46WhoXuGhT/HQ584jcO6iiCPEmCIoZyUElT1oDCJIF6RIYc9jcdGJlGl5
|
|
113
|
+
0akcjctte3Jv65N71mTYGJNmHIFj0tQp0kCI0oIMMmiT2IjcveyUV6F0JP8J
|
|
114
|
+
D0QntQMv6GGlHtH0khgEpmLOIotAP5ljHqdwnDuNFBTnnJ7UrCwDpZwGO6oR
|
|
115
|
+
Riu7TkOF+YjGCRjnyuLnbvcHHjntMMwIAAA=
|
|
116
|
+
http_version:
|
|
117
|
+
recorded_at: Mon, 26 Jun 2017 10:50:24 GMT
|
|
118
|
+
- request:
|
|
119
|
+
method: post
|
|
120
|
+
uri: https://tableau.lvh.me/api/2.6/auth/signin
|
|
121
|
+
body:
|
|
122
|
+
encoding: UTF-8
|
|
123
|
+
string: '{"credentials":{"name":"<TABLEAU_USERNAME>","password":"<TABLEAU_PASSWORD>","site":{"contentUrl":""}}}'
|
|
124
|
+
headers:
|
|
125
|
+
Accept:
|
|
126
|
+
- application/json
|
|
127
|
+
Accept-Encoding:
|
|
128
|
+
- gzip, deflate
|
|
129
|
+
User-Agent:
|
|
130
|
+
- rest-client/2.0.2 (linux-gnu x86_64) ruby/2.3.3p222
|
|
131
|
+
Content-Type:
|
|
132
|
+
- application/json
|
|
133
|
+
X-Tableau-Auth:
|
|
134
|
+
- wPY_YAXyQeyTBApwECNrQQ|mKn2wsv0RDgBoG3QCZDwsOG8LkT2arFQ
|
|
135
|
+
Content-Length:
|
|
136
|
+
- '94'
|
|
137
|
+
Host:
|
|
138
|
+
- tableau.lvh.me
|
|
139
|
+
response:
|
|
140
|
+
status:
|
|
141
|
+
code: 200
|
|
142
|
+
message: OK
|
|
143
|
+
headers:
|
|
144
|
+
Date:
|
|
145
|
+
- Mon, 26 Jun 2017 10:50:22 GMT
|
|
146
|
+
Server:
|
|
147
|
+
- Tableau
|
|
148
|
+
Content-Type:
|
|
149
|
+
- application/json;charset=utf-8
|
|
150
|
+
Vary:
|
|
151
|
+
- Accept-Encoding
|
|
152
|
+
Content-Encoding:
|
|
153
|
+
- gzip
|
|
154
|
+
P3p:
|
|
155
|
+
- CP="NON"
|
|
156
|
+
X-Ua-Compatible:
|
|
157
|
+
- IE=Edge
|
|
158
|
+
X-Content-Type-Options:
|
|
159
|
+
- nosniff
|
|
160
|
+
X-Xss-Protection:
|
|
161
|
+
- 1; mode=block
|
|
162
|
+
Content-Length:
|
|
163
|
+
- '193'
|
|
164
|
+
body:
|
|
165
|
+
encoding: ASCII-8BIT
|
|
166
|
+
string: !binary |-
|
|
167
|
+
H4sIAAAAAAAAAz3MuQ6CQBSF4Xe5NZPMAgxjp9EYiHEJEWxnjYRNWWIUfXex
|
|
168
|
+
sTrN+b8JdGeNbYZCVj0sJuiLwf62MLAAIgl2gRIIU6GQz6yPZEgx4pwZEgrM
|
|
169
|
+
WKTBA902w0ycu2pu4OPB2Nvuj1BFiBBUIMNcgHyHIySFJohirK3PHOeR+kVD
|
|
170
|
+
W9pm/i/dMXo97/v0lOP9rcvi3aVWj3eWPXnCVVGWJt2sctuM9fYeq0N+fTCZ
|
|
171
|
+
rGfi8wW5CskzzQAAAA==
|
|
172
|
+
http_version:
|
|
173
|
+
recorded_at: Mon, 26 Jun 2017 10:50:25 GMT
|
|
174
|
+
- request:
|
|
175
|
+
method: get
|
|
176
|
+
uri: https://tableau.lvh.me/api/2.6/sites/1a10f5b9-029b-43e4-a620-773d1690338c/workbooks
|
|
177
|
+
body:
|
|
178
|
+
encoding: US-ASCII
|
|
179
|
+
string: ''
|
|
180
|
+
headers:
|
|
181
|
+
Accept:
|
|
182
|
+
- application/json
|
|
183
|
+
Accept-Encoding:
|
|
184
|
+
- gzip, deflate
|
|
185
|
+
User-Agent:
|
|
186
|
+
- rest-client/2.0.2 (linux-gnu x86_64) ruby/2.3.3p222
|
|
187
|
+
Content-Type:
|
|
188
|
+
- application/json
|
|
189
|
+
X-Tableau-Auth:
|
|
190
|
+
- AfP8zyqNSQW0NprVILXmbw|VVy7J7bikkdSEBWenumGqIbOWhw3aJDb
|
|
191
|
+
Host:
|
|
192
|
+
- tableau.lvh.me
|
|
193
|
+
response:
|
|
194
|
+
status:
|
|
195
|
+
code: 200
|
|
196
|
+
message: OK
|
|
197
|
+
headers:
|
|
198
|
+
Date:
|
|
199
|
+
- Mon, 26 Jun 2017 10:50:22 GMT
|
|
200
|
+
Server:
|
|
201
|
+
- Tableau
|
|
202
|
+
Content-Type:
|
|
203
|
+
- application/json;charset=utf-8
|
|
204
|
+
Vary:
|
|
205
|
+
- Accept-Encoding
|
|
206
|
+
Content-Encoding:
|
|
207
|
+
- gzip
|
|
208
|
+
P3p:
|
|
209
|
+
- CP="NON"
|
|
210
|
+
X-Ua-Compatible:
|
|
211
|
+
- IE=Edge
|
|
212
|
+
X-Content-Type-Options:
|
|
213
|
+
- nosniff
|
|
214
|
+
X-Xss-Protection:
|
|
215
|
+
- 1; mode=block
|
|
216
|
+
Content-Length:
|
|
217
|
+
- '1194'
|
|
218
|
+
body:
|
|
219
|
+
encoding: ASCII-8BIT
|
|
220
|
+
string: !binary |-
|
|
221
|
+
H4sIAAAAAAAAA82YS2/bRhDHvwqhUwtkgX0/eFMQoIfERRA7lxQ9zL4c1ZJo
|
|
222
|
+
kFRcO/B376ykWLQsurHbAwEfzNn/7gx/nJ2d1ffZNVwu1tAvmvWs/l6e0u+b
|
|
223
|
+
lU/trJ6x2Zut4Xxxl8ojpWjomx6W82+wWIJfbs1qdv9mdtO0V75prrqyyo+H
|
|
224
|
+
Wf0HLtk2f6XQF/siop4anXQQhnjglkhvDbHWAFHBGaqCdiIH9LOGVVn9oniB
|
|
225
|
+
TXUOq+tl6oqr5mZdwtsvxz1jznFHosiKyEwtARcY4ZSGJEU2xvoyq4fLEhv+
|
|
226
|
+
t50mHQeuwZEEWmMUUhAfUiZcacMhCs1jPkRxvrlObdc3bUJbaNZ9Wvef2+Xx
|
|
227
|
+
SPe1ucGA0c+sbzdbyx5dmdYm6FOc9yVoyjShhjBxwWmtTC3sF5RsruNjCeOE
|
|
228
|
+
qguma+5qSb/ge0yVJ0ssBxUTiarwFNljFFkQLgIH55IEgEMUn9IlJhwsj2kO
|
|
229
|
+
7K9laWsmXs1SgPWaScToRCCMJU1Ac0Z0FtI54SQId3iLdynDZtn/bwwN59ri
|
|
230
|
+
TOJ5BCKlQO9RcOJdyExLzSWLB+8fFt9She8IxxDLwN7+MoiFkL5gtBa8VvoE
|
|
231
|
+
RIMECdMFIlW1mCREoEbEGB3RCjAEHZCfVZp4QYXWUjHl6MH727QOX1fQXi3W
|
|
232
|
+
l8ccj8ZGWUoxBtMVmMzVio1m5IOETxEmjVJSZEhYipJIhgvYwCPutexcpsoz
|
|
233
|
+
7w/ez+YXlX8GKI77n2TKR5AyWXhxTD41hpThJpe1xD83RaRWam21FySahEgl
|
|
234
|
+
HkHeh0wsBYulXNPA8mOkgAXxtl+Eropp1ZyA+iDYj79k1+OWZtu6qMqWHtv1
|
|
235
|
+
O4mtJa/ZJBNVCsspHjSYIDQTSb0lTiPVpJJRIUaewR68vz+XjxK1+mWxrvCF
|
|
236
|
+
LtvUdb8eE0b1ULxY/1A+WxT0CGuOGcwxN2t+qig8SJC12H6O6bGmPFjHjCZR
|
|
237
|
+
ZjymGChinQMSPIXAODDDBxk8b6+qD7+9rd5B99U30MZjvCjA8eHwi/OX45Fk
|
|
238
|
+
aoqF9FQbtZOYkuKC1nSSTK13zDKNp1b0FJs4ITB/sZhZpxNQS7mgA+/v0211
|
|
239
|
+
jiukSlZnGMaCzAPg5r+tLtpN1z9bhHHudqp8NHE772eL8+hn2DJWrmby+c+w
|
|
240
|
+
l0zvM0BQoDLPhFkjMLVlIg67CZLRMwRJnfHp4P3j57N59XHxaV6lv/ft9BHs
|
|
241
|
+
oiiCwfgLqfLS12K/hZlbKu8pqjuJqYtqkkcetrPYgdlEvJF45HkFxHmFC3AD
|
|
242
|
+
1rDITR60ZA99bUUq6DqssyvkWfWp68c6XXLQ7WUvpsx5qblCbxuxU5TFnjI2
|
|
243
|
+
FkJM+SamlQhKREuswPNQBmw1LOYvMVQEQ7NUMetDFLl50lHsTAOCGZbdvyLU
|
|
244
|
+
W4SiXGZPXsCOJCOJOg2ElGvlvJXY9vqIPRp+fB+TIDklp1IUBi+5hyg8tMcI
|
|
245
|
+
d6bXIZQ1NTUfqaBDychBNg2E5eeVIBwWG2o4ZiGlxEmTCI8xeOOCSCwNEd49
|
|
246
|
+
RXj33xCqUzeEI4mdMkKFZZMZZOYlTXgYBewJLMUCqhkEzUFRyoYb+QnCnem1
|
|
247
|
+
CDkeJyMt6lBSauGf9/f/ABbHJgpJFAAA
|
|
248
|
+
http_version:
|
|
249
|
+
recorded_at: Mon, 26 Jun 2017 10:50:25 GMT
|
|
250
|
+
recorded_with: VCR 3.0.3
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'rest-client'
|
|
3
|
+
require 'aspector'
|
|
4
|
+
require 'timerizer'
|
|
5
|
+
require 'securerandom'
|
|
6
|
+
|
|
7
|
+
require 'tableau_rest_api/version'
|
|
8
|
+
require 'tableau_rest_api/client'
|
|
9
|
+
require 'tableau_rest_api/area/user_group'
|
|
10
|
+
require 'tableau_rest_api/area/workbook_datasource'
|
|
11
|
+
require 'tableau_rest_api/area/schedule_subscription'
|
|
12
|
+
require 'tableau_rest_api/resource'
|
|
13
|
+
require 'tableau_rest_api/api_error'
|
|
14
|
+
require 'tableau_rest_api/util/config'
|
|
15
|
+
require 'tableau_rest_api/util/response'
|
|
16
|
+
require 'tableau_rest_api/util/upload'
|
|
17
|
+
require 'tableau_rest_api/util/token'
|
|
18
|
+
require 'tableau_rest_api/helpers/helpers'
|
|
19
|
+
require 'tableau_rest_api/resources/base'
|
|
20
|
+
require 'tableau_rest_api/resources/site'
|
|
21
|
+
require 'tableau_rest_api/resources/user'
|
|
22
|
+
require 'tableau_rest_api/resources/group'
|
|
23
|
+
require 'tableau_rest_api/resources/datasource'
|
|
24
|
+
require 'tableau_rest_api/resources/project'
|
|
25
|
+
require 'tableau_rest_api/resources/workbook'
|
|
26
|
+
require 'tableau_rest_api/resources/subscription'
|
|
27
|
+
require 'tableau_rest_api/resources/schedule'
|
|
28
|
+
require 'tableau_rest_api/resources/server'
|
|
29
|
+
|
|
30
|
+
# Tableau API wrapper lib
|
|
31
|
+
module TableauRestApi
|
|
32
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module TableauRestApi
|
|
2
|
+
module ScheduleSubscription
|
|
3
|
+
aspector do
|
|
4
|
+
before :subscriptions, :login
|
|
5
|
+
before :query_subscription, :login
|
|
6
|
+
before :create_subscription, :login
|
|
7
|
+
before :delete_subscription, :login
|
|
8
|
+
before :schedules, :login
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def subscriptions(site_id)
|
|
12
|
+
url = build_url ['sites', site_id, 'subscriptions']
|
|
13
|
+
(get url).subscriptions.subscription.to_a.map { |sub| Subscription.new(sub) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def query_subscription(site_id, sub_id)
|
|
17
|
+
url = build_url ['sites', site_id, 'subscriptions', sub_id]
|
|
18
|
+
Subscription.new((get url).subscription)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def create_subscription(site_id, subscription)
|
|
22
|
+
url = build_url ['sites', site_id, 'subscriptions']
|
|
23
|
+
Subscription.new((post url, subscription).subscription)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def delete_subscription(site_id, subscription_id)
|
|
27
|
+
url = build_url ['sites', site_id, 'subscriptions', subscription_id]
|
|
28
|
+
delete url
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def delete_schedule(schedule_id)
|
|
32
|
+
url = build_url ['schedules', schedule_id]
|
|
33
|
+
delete url
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def schedules
|
|
37
|
+
url = build_url 'schedules'
|
|
38
|
+
(get url).schedules.schedule.to_a.map { |schedule| Schedule.new(schedule) }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module TableauRestApi
|
|
2
|
+
module UserGroup
|
|
3
|
+
aspector do
|
|
4
|
+
before :users_on_site,:login
|
|
5
|
+
before :groups, :login
|
|
6
|
+
before :users_in_group, :login
|
|
7
|
+
before :add_user_to_site, :login
|
|
8
|
+
before :add_user_to_group, :login
|
|
9
|
+
before :create_group, :login
|
|
10
|
+
before :delete_group, :login
|
|
11
|
+
before :remove_user_from_group, :login
|
|
12
|
+
before :remove_user_from_site, :login
|
|
13
|
+
before :update_user, :login
|
|
14
|
+
before :update_group, :login
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def users_on_site(site_id)
|
|
18
|
+
url = build_url ['sites', site_id, 'users']
|
|
19
|
+
(get url).users.user.to_a.map { |user| User.new(user) }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def groups(site_id)
|
|
23
|
+
url = build_url ['sites', site_id, 'groups']
|
|
24
|
+
(get url).groups.group.to_a.map { |group| Group.new(group) }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def users_in_group(site_id, group_id)
|
|
28
|
+
url = build_url ['sites', site_id, 'groups', group_id, 'users']
|
|
29
|
+
(get url).users.user.to_a.map { |user| User.new(user) }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def add_user_to_site(site_id, user)
|
|
33
|
+
url = build_url ['sites', site_id, 'users']
|
|
34
|
+
User.new((post url, { :user => user }).user)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def add_user_to_group(site_id, group_id, user_id)
|
|
38
|
+
url = build_url ['sites', site_id, 'groups', group_id, 'users']
|
|
39
|
+
User.new((post url, { :user => { :id => user_id } }).user)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def create_group(site_id, group)
|
|
43
|
+
url = build_url ['sites', site_id, 'groups']
|
|
44
|
+
Group.new((post url, { :group => { :name => group } }).group)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def delete_group(site_id, group_id)
|
|
48
|
+
url = build_url ['sites', site_id, 'groups', group_id]
|
|
49
|
+
delete url
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def remove_user_from_group(site_id, group_id, user_id)
|
|
53
|
+
url = build_url ['sites', site_id, 'groups', group_id, 'users', user_id]
|
|
54
|
+
delete url
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def remove_user_from_site(site_id, user_id)
|
|
58
|
+
url = build_url ['sites', site_id, 'users', user_id]
|
|
59
|
+
delete url
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def update_user(site_id, user)
|
|
63
|
+
url = build_url ['sites', site_id, 'users', user[:id]]
|
|
64
|
+
User.new((put url, { :user => user }).user)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def update_group(site_id, group)
|
|
68
|
+
url = build_url ['sites', site_id, 'groups', group[:id]]
|
|
69
|
+
Group.new((put url, { :group => group }).group)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
module TableauRestApi
|
|
2
|
+
module WorkbookDatasource
|
|
3
|
+
aspector do
|
|
4
|
+
before :query_workbooks, :login
|
|
5
|
+
before :get_workbook, :login
|
|
6
|
+
before :datasources, :login
|
|
7
|
+
before :get_datasource, :login
|
|
8
|
+
before :update_workbook, :login
|
|
9
|
+
before :update_datasource, :login
|
|
10
|
+
before :update_project, :login
|
|
11
|
+
before :query_projects, :login
|
|
12
|
+
before :publish_workbook, :login
|
|
13
|
+
before :publish_datasource, :login
|
|
14
|
+
before :delete_workbook, :login
|
|
15
|
+
before :delete_datasource, :login
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def query_workbooks(site_id)
|
|
19
|
+
url = build_url ['sites', site_id, 'workbooks']
|
|
20
|
+
(get url).workbooks.workbook.to_a.map { |workbook| Workbook.new(workbook) }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def datasources(site_id)
|
|
24
|
+
url = build_url ['sites', site_id, 'datasources']
|
|
25
|
+
(get url).datasources.datasource.to_a.map { |ds| Datasource.new(ds) }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def get_workbook(site_id, workbook_id)
|
|
29
|
+
url = build_url ['sites', site_id, 'workbooks', workbook_id, 'content']
|
|
30
|
+
RestClient.get url, header
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def get_datasource(site_id, datasource_id)
|
|
34
|
+
url = build_url ['sites', site_id, 'datasources', datasource_id, 'content']
|
|
35
|
+
RestClient.get url, header
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def update_workbook(site_id, workbook_id, workbook)
|
|
39
|
+
url = build_url ['sites', site_id, 'workbooks', workbook_id]
|
|
40
|
+
Workbook.new((put url, workbook).workbook)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def update_datasource(site_id, datasource_id, datasource)
|
|
44
|
+
url = build_url ['sites', site_id, 'datasources', datasource_id]
|
|
45
|
+
Datasource.new((put url, datasource).datasource)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def update_project(site_id, project_id, project)
|
|
49
|
+
url = build_url ['sites', site_id, 'projects', project_id]
|
|
50
|
+
Project.new((put url, project).project)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def query_projects(site_id)
|
|
54
|
+
url = build_url ['sites', site_id, 'projects']
|
|
55
|
+
(get url).projects.project.to_a.map { |project| Project.new(project) }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def delete_workbook(site_id, workbook_id)
|
|
59
|
+
url = build_url ['sites', site_id, 'workbooks', workbook_id]
|
|
60
|
+
delete url
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def delete_datasource(site_id, datasource_id)
|
|
64
|
+
url = build_url ['sites', site_id, 'datasources', datasource_id]
|
|
65
|
+
delete url
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def delete_project(site_id, project_id)
|
|
69
|
+
url = build_url ['sites', site_id, 'projects', project_id]
|
|
70
|
+
delete url
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def publish_workbook(site_id, metadata, payload)
|
|
74
|
+
url = build_url ['sites', site_id, 'workbooks']
|
|
75
|
+
boundary = SecureRandom.uuid
|
|
76
|
+
request = Upload.new(metadata, payload, boundary).build
|
|
77
|
+
Workbook.new((post url, request, boundary).workbook)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def publish_datasource(site_id, metadata, payload)
|
|
81
|
+
url = build_url ['sites', site_id, 'datasources']
|
|
82
|
+
boundary = SecureRandom.uuid
|
|
83
|
+
request = Upload.new(metadata, payload, boundary).build(:datasource)
|
|
84
|
+
Datasource.new((post url, request, boundary).datasource)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|