tableau_server_client 0.0.10 → 0.0.12
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 +4 -4
- data/lib/tableau_server_client/client.rb +10 -4
- data/lib/tableau_server_client/resources/extract_refresh.rb +55 -0
- data/lib/tableau_server_client/resources/job.rb +17 -0
- data/lib/tableau_server_client/resources/resource.rb +6 -2
- data/lib/tableau_server_client/resources/schedule.rb +10 -2
- data/lib/tableau_server_client/resources/site.rb +5 -0
- data/lib/tableau_server_client/server.rb +3 -2
- data/lib/tableau_server_client/version.rb +1 -1
- data/tableau_server_client.gemspec +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 734741cd0b6670c84e0a939d810883395e6bf07aa013553f66249ec48838d07a
|
|
4
|
+
data.tar.gz: '0275874925061bdc41d42ee3c24e4d59dcae5e4a1763fecb233d072c0306087d'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2d61bb79088e3b5c7f2f320bf01befbd91c20284df3709318befae7220b7b2d19204245d7ac4244b32bc5b30215b43da09ffc20b723cabb2da6753c12c849f49
|
|
7
|
+
data.tar.gz: d4abcb481f157a035d7989eb3b3fd7ba8239412d64e1efcb715da8e9699a8528a60d847a17deb6bda14f9bbff67412737224ede8e5920de9d53ab52c1e4accd2
|
|
@@ -21,7 +21,7 @@ module TableauServerClient
|
|
|
21
21
|
@site_name = site_name
|
|
22
22
|
@api_version = api_version
|
|
23
23
|
@token_lifetime = token_lifetime
|
|
24
|
-
@logger
|
|
24
|
+
@logger = logger
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
attr_reader :site_name, :username, :api_version, :token_lifetime, :logger
|
|
@@ -46,7 +46,14 @@ module TableauServerClient
|
|
|
46
46
|
resource_location.klass.from_response(self, resource_location.path, xml)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
def create(resource)
|
|
49
|
+
def create(resource, path: nil, request: nil)
|
|
50
|
+
path = path || resource.path
|
|
51
|
+
request = request || resource.to_request
|
|
52
|
+
response = session.post do |req|
|
|
53
|
+
req.url request_url(path).to_s
|
|
54
|
+
req.body = request
|
|
55
|
+
end
|
|
56
|
+
Nokogiri::XML(response.body).xpath("//xmlns:tsResponse").children.first
|
|
50
57
|
end
|
|
51
58
|
|
|
52
59
|
def download(resource_location)
|
|
@@ -124,8 +131,7 @@ module TableauServerClient
|
|
|
124
131
|
def faraday
|
|
125
132
|
@faraday ||= Faraday.new(request: {params_encoder: EmptyEncoder.new}, headers: {'Content-Type' => 'application/xml'}) do |f|
|
|
126
133
|
f.response :raise_error
|
|
127
|
-
|
|
128
|
-
#f.response :logger, logger
|
|
134
|
+
f.response :logger, logger
|
|
129
135
|
f.adapter Faraday.default_adapter
|
|
130
136
|
end
|
|
131
137
|
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'tableau_server_client/resources/resource'
|
|
2
|
+
require 'tableau_server_client/resources/connection'
|
|
3
|
+
require 'tableau_server_client/resources/job'
|
|
4
|
+
|
|
5
|
+
module TableauServerClient
|
|
6
|
+
module Resources
|
|
7
|
+
|
|
8
|
+
class ExtractRefresh < Resource
|
|
9
|
+
|
|
10
|
+
attr_reader :id, :priority, :consecutive_failed_count, :type
|
|
11
|
+
|
|
12
|
+
def self.from_response(client, path, xml)
|
|
13
|
+
attrs = extract_attributes(xml)
|
|
14
|
+
attrs['schedule_id'] = xml.xpath("xmlns:schedule/@id").first.value
|
|
15
|
+
attrs['workbook_id'] = xml.xpath("xmlns:workbook/@id").first&.value
|
|
16
|
+
attrs['datasource_id'] = xml.xpath("xmlns:datasource/@id").first&.value
|
|
17
|
+
new(client, path, attrs)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.from_collection_response(client, path, xml)
|
|
21
|
+
xml.xpath("//xmlns:tasks/xmlns:task/xmlns:extractRefresh").each do |s|
|
|
22
|
+
id = s.xpath("@id").first.value
|
|
23
|
+
yield from_response(client, "#{path}/#{id}", s)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.plural_resource_name
|
|
28
|
+
"extractRefreshes"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def schedule_id
|
|
32
|
+
@schedule_id
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def workbook_id
|
|
36
|
+
@workbook_id
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def datasource_id
|
|
40
|
+
@datasource_id
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def schedule
|
|
44
|
+
@client.get_collection(Resources::Schedule.location(nil)).first {|s| s.id == schedule_id }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def run_now
|
|
48
|
+
resp = @client.create(self, path: "#{path}/runNow", request: build_request {})
|
|
49
|
+
job_id = resp.xpath("//xmlns:job/@id").first.value
|
|
50
|
+
Job.from_response(@client, Job.location(site_path, id = job_id).path, resp)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'tableau_server_client/resources/resource'
|
|
2
|
+
|
|
3
|
+
module TableauServerClient
|
|
4
|
+
module Resources
|
|
5
|
+
|
|
6
|
+
class Job < Resource
|
|
7
|
+
|
|
8
|
+
attr_reader :id, :mode, :type
|
|
9
|
+
|
|
10
|
+
def self.from_response(client, path, xml)
|
|
11
|
+
attrs = extract_attributes(xml)
|
|
12
|
+
new(client, path, attrs)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -21,11 +21,15 @@ module TableauServerClient
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def self.resource_name
|
|
24
|
-
self.name.split("::").last.downcase
|
|
24
|
+
self.name.split("::").last.sub(/./){ $&.downcase }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.plural_resource_name
|
|
28
|
+
"#{self.resource_name}s"
|
|
25
29
|
end
|
|
26
30
|
|
|
27
31
|
def self.location(prefix, id=nil, filter: [])
|
|
28
|
-
path = [prefix,
|
|
32
|
+
path = [prefix, plural_resource_name, id].compact.join("/")
|
|
29
33
|
Location.new(self, path, filter.empty? ? {} : {filter: filter.join(',')})
|
|
30
34
|
end
|
|
31
35
|
|
|
@@ -14,11 +14,19 @@ module TableauServerClient
|
|
|
14
14
|
|
|
15
15
|
def self.from_collection_response(client, path, xml)
|
|
16
16
|
xml.xpath("//xmlns:schedules/xmlns:schedule").each do |s|
|
|
17
|
-
id = s.xpath("
|
|
18
|
-
yield from_response(client, path, s)
|
|
17
|
+
id = s.xpath("@id").first.value
|
|
18
|
+
yield from_response(client, "#{path}/#{id}", s)
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
def tasks(site)
|
|
23
|
+
site.extract_refreshes.select {|t| t.schedule_id == id }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def run_now(site)
|
|
27
|
+
tasks(site).map {|t| t.run_now }
|
|
28
|
+
end
|
|
29
|
+
|
|
22
30
|
end
|
|
23
31
|
end
|
|
24
32
|
end
|
|
@@ -3,6 +3,7 @@ require 'tableau_server_client/resources/datasource'
|
|
|
3
3
|
require 'tableau_server_client/resources/workbook'
|
|
4
4
|
require 'tableau_server_client/resources/user'
|
|
5
5
|
require 'tableau_server_client/resources/subscription'
|
|
6
|
+
require 'tableau_server_client/resources/extract_refresh'
|
|
6
7
|
|
|
7
8
|
module TableauServerClient
|
|
8
9
|
module Resources
|
|
@@ -63,6 +64,10 @@ module TableauServerClient
|
|
|
63
64
|
subscriptions.find {|s| s.id = id }
|
|
64
65
|
end
|
|
65
66
|
|
|
67
|
+
def extract_refreshes
|
|
68
|
+
@client.get_collection ExtractRefresh.location("#{path}/tasks")
|
|
69
|
+
end
|
|
70
|
+
|
|
66
71
|
end
|
|
67
72
|
end
|
|
68
73
|
end
|
|
@@ -7,9 +7,10 @@ module TableauServerClient
|
|
|
7
7
|
class Server
|
|
8
8
|
|
|
9
9
|
def initialize(server_url, username, password,
|
|
10
|
-
site_name: "default", api_version: "
|
|
10
|
+
site_name: "default", api_version: "3.1", token_lifetime: 240,
|
|
11
|
+
log_level: :info)
|
|
11
12
|
@logger = ::Logger.new(STDOUT)
|
|
12
|
-
@logger.level = ::Logger
|
|
13
|
+
@logger.level = ::Logger.const_get(log_level.upcase.to_sym)
|
|
13
14
|
@client = Client.new(server_url, username, password, site_name, api_version, token_lifetime, @logger)
|
|
14
15
|
end
|
|
15
16
|
|
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
27
27
|
spec.add_development_dependency "byebug"
|
|
28
28
|
|
|
29
|
-
spec.add_dependency 'faraday', '>= 0.
|
|
29
|
+
spec.add_dependency 'faraday', '>= 0.15.3'
|
|
30
30
|
spec.add_dependency 'nokogiri', '>= 1.8.2'
|
|
31
31
|
spec.add_dependency 'pry', '>= 0.11.3'
|
|
32
32
|
spec.add_dependency 'rubyzip', '>= 1.2.1'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tableau_server_client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.12
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- shimpeko
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-10-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -72,14 +72,14 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
75
|
+
version: 0.15.3
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
82
|
+
version: 0.15.3
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: nokogiri
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -142,6 +142,8 @@ files:
|
|
|
142
142
|
- lib/tableau_server_client/request_url.rb
|
|
143
143
|
- lib/tableau_server_client/resources/connection.rb
|
|
144
144
|
- lib/tableau_server_client/resources/datasource.rb
|
|
145
|
+
- lib/tableau_server_client/resources/extract_refresh.rb
|
|
146
|
+
- lib/tableau_server_client/resources/job.rb
|
|
145
147
|
- lib/tableau_server_client/resources/project.rb
|
|
146
148
|
- lib/tableau_server_client/resources/resource.rb
|
|
147
149
|
- lib/tableau_server_client/resources/schedule.rb
|
|
@@ -173,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
173
175
|
version: '0'
|
|
174
176
|
requirements: []
|
|
175
177
|
rubyforge_project:
|
|
176
|
-
rubygems_version: 2.7.
|
|
178
|
+
rubygems_version: 2.7.7
|
|
177
179
|
signing_key:
|
|
178
180
|
specification_version: 4
|
|
179
181
|
summary: Tableau Server REST API Client
|