tableau_api 4.1.0 → 6.0.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.
- checksums.yaml +5 -5
- data/.dockerignore +7 -0
- data/.rubocop.yml +10 -9
- data/.rubocop_todo.yml +61 -5
- data/.ruby-version +1 -1
- data/.travis.yml +3 -3
- data/CHANGELOG.md +22 -4
- data/Dockerfile +13 -0
- data/Gemfile +2 -0
- data/README.md +11 -2
- data/Rakefile +2 -0
- data/bin/console +1 -0
- data/docker-compose.yml +16 -0
- data/lib/tableau_api/client.rb +5 -0
- data/lib/tableau_api/connection.rb +6 -4
- data/lib/tableau_api/error.rb +2 -0
- data/lib/tableau_api/resources/auth.rb +2 -0
- data/lib/tableau_api/resources/base.rb +2 -0
- data/lib/tableau_api/resources/datasources.rb +2 -0
- data/lib/tableau_api/resources/groups.rb +2 -0
- data/lib/tableau_api/resources/jobs.rb +2 -0
- data/lib/tableau_api/resources/projects.rb +2 -0
- data/lib/tableau_api/resources/sites.rb +4 -0
- data/lib/tableau_api/resources/users.rb +3 -0
- data/lib/tableau_api/resources/workbooks.rb +10 -2
- data/lib/tableau_api/version.rb +3 -1
- data/lib/tableau_api.rb +4 -2
- data/tableau_api.gemspec +13 -11
- metadata +56 -43
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 84a36ca634703047a12edf192dd3e0c0c5c383cf692b7a6ca0bfeec5466824ae
|
|
4
|
+
data.tar.gz: 70f55987bcc8879662c14e1cb276f8dfa4a9fbdb0b2b2a2a1d59606d5a319d02
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 921e1acfb66c6d45fb18cabb85c158c0ba24e3726b55f14a888bd016e5e8d4e66f791ef165a48874256ee31c053f1db0b8fbc4d149c10cc99423bf54c2868f72
|
|
7
|
+
data.tar.gz: b384e520e571445142e9cf305751b2199e92edcc852acfebf535c6f2036abfd1eb6261f16705757ed538d00640e67afe06e63036e05b67bbaa72422c19f30c06
|
data/.dockerignore
ADDED
data/.rubocop.yml
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
|
2
2
|
|
|
3
3
|
AllCops:
|
|
4
|
-
TargetRubyVersion:
|
|
4
|
+
TargetRubyVersion: 3.3
|
|
5
|
+
NewCops: enable
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
Gemspec/RequiredRubyVersion:
|
|
8
|
+
Enabled: false
|
|
9
|
+
|
|
10
|
+
Layout/LineLength:
|
|
11
|
+
Max: 170
|
|
8
12
|
|
|
9
13
|
Style/Documentation:
|
|
10
14
|
Enabled: false
|
|
11
15
|
|
|
12
|
-
|
|
13
|
-
Max:
|
|
14
|
-
|
|
15
|
-
MethodLength:
|
|
16
|
-
Max: 20
|
|
16
|
+
Metrics/ClassLength:
|
|
17
|
+
Max: 200
|
|
17
18
|
|
|
18
19
|
Metrics/AbcSize:
|
|
19
20
|
Max: 40
|
|
20
21
|
|
|
21
|
-
MethodLength:
|
|
22
|
+
Metrics/MethodLength:
|
|
22
23
|
Max: 30
|
|
23
24
|
|
|
24
25
|
Metrics/BlockLength:
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,12 +1,68 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
|
-
# `rubocop --auto-gen-config`
|
|
3
|
-
#
|
|
2
|
+
# `rubocop --auto-gen-config --no-auto-gen-timestamp`
|
|
3
|
+
# using RuboCop version 1.91.0.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
-
# Offense count:
|
|
10
|
-
# Configuration parameters:
|
|
9
|
+
# Offense count: 8
|
|
10
|
+
# Configuration parameters: EnforcedStyle, AllowedGems.
|
|
11
|
+
# SupportedStyles: Gemfile, gems.rb, gemspec
|
|
12
|
+
Gemspec/DevelopmentDependencies:
|
|
13
|
+
Exclude:
|
|
14
|
+
- 'tableau_api.gemspec'
|
|
15
|
+
|
|
16
|
+
# Offense count: 1
|
|
17
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
18
|
+
Layout/EmptyLinesAfterModuleInclusion:
|
|
19
|
+
Exclude:
|
|
20
|
+
- 'lib/tableau_api/connection.rb'
|
|
21
|
+
|
|
22
|
+
# Offense count: 6
|
|
23
|
+
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
|
|
24
|
+
# AllowedMethods: refine
|
|
11
25
|
Metrics/BlockLength:
|
|
12
|
-
Max:
|
|
26
|
+
Max: 85
|
|
27
|
+
|
|
28
|
+
# Offense count: 1
|
|
29
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
30
|
+
# Configuration parameters: EnforcedStyle, BlockForwardingName.
|
|
31
|
+
# SupportedStyles: anonymous, explicit
|
|
32
|
+
Naming/BlockForwarding:
|
|
33
|
+
Exclude:
|
|
34
|
+
- 'lib/tableau_api/client.rb'
|
|
35
|
+
|
|
36
|
+
# Offense count: 8
|
|
37
|
+
# Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
|
|
38
|
+
# AllowedMethods: call
|
|
39
|
+
# WaywardPredicates: infinite?, nonzero?
|
|
40
|
+
Naming/PredicateMethod:
|
|
41
|
+
Exclude:
|
|
42
|
+
- 'lib/tableau_api/resources/auth.rb'
|
|
43
|
+
- 'lib/tableau_api/resources/groups.rb'
|
|
44
|
+
- 'lib/tableau_api/resources/workbooks.rb'
|
|
45
|
+
|
|
46
|
+
# Offense count: 2
|
|
47
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
48
|
+
# Configuration parameters: AllowOnlyRestArgument, UseAnonymousForwarding, RedundantRestArgumentNames, RedundantKeywordRestArgumentNames, RedundantBlockArgumentNames.
|
|
49
|
+
# RedundantRestArgumentNames: args, arguments
|
|
50
|
+
# RedundantKeywordRestArgumentNames: kwargs, options, opts
|
|
51
|
+
# RedundantBlockArgumentNames: blk, block, proc
|
|
52
|
+
Style/ArgumentsForwarding:
|
|
53
|
+
Exclude:
|
|
54
|
+
- 'lib/tableau_api.rb'
|
|
55
|
+
|
|
56
|
+
# Offense count: 3
|
|
57
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
58
|
+
Style/DirectiveScope:
|
|
59
|
+
Exclude:
|
|
60
|
+
- 'lib/tableau_api/connection.rb'
|
|
61
|
+
- 'lib/tableau_api/resources/workbooks.rb'
|
|
62
|
+
|
|
63
|
+
# Offense count: 1
|
|
64
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
65
|
+
# Configuration parameters: AllowMethodComparison, ComparisonsThreshold.
|
|
66
|
+
Style/MultipleComparison:
|
|
67
|
+
Exclude:
|
|
68
|
+
- 'lib/tableau_api/resources/auth.rb'
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3.4
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -3,9 +3,26 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
5
5
|
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
## [6.0.0] - 2026-10-08
|
|
7
|
+
|
|
8
|
+
- Breaking: dropped support for Ruby 2.7 through 3.2. The minimum required Ruby version is now 3.3.
|
|
9
|
+
- Bumped rubyzip to ~> 3.7 to address open security advisories
|
|
10
|
+
- Bumped httparty to ~> 0.22 and added multi_xml ~> 0.7, so Ruby 3.4+ gets the csv and bigdecimal gems it no longer bundles
|
|
11
|
+
- `Workbooks#version` now returns nil for a twbx with no twb at the archive root, instead of raising NoMethodError
|
|
12
|
+
- Bumped dev dependencies: rake ~> 13.0, rubocop ~> 1.91, chunky_png ~> 1.4
|
|
13
|
+
- Bumped CI matrix Ruby versions to 4.0, 3.4, and 3.3
|
|
14
|
+
- Added a Dockerfile and docker-compose.yml for development
|
|
15
|
+
|
|
16
|
+
## [5.0.0] - 2023-03-23
|
|
17
|
+
|
|
18
|
+
- Added support for Ruby 3
|
|
19
|
+
- Bumped dev Ruby version to 3.2.1
|
|
20
|
+
- Bumped minimum required Ruby version to 2.7.0
|
|
21
|
+
- Bumped Rake version for development to 12.3.3
|
|
22
|
+
- Bumped Rubocop version for development to 1.48.1
|
|
23
|
+
- Bumped vcr version for development to 6.0
|
|
24
|
+
- Bumped Travis matrix Ruby versions to 3.2.1, 3.0.5, and 2.7.0
|
|
25
|
+
- Added Rubygems MFA requirement
|
|
9
26
|
|
|
10
27
|
## [4.1.0] - 2022-04-13
|
|
11
28
|
|
|
@@ -102,7 +119,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
|
102
119
|
|
|
103
120
|
- Initial Release
|
|
104
121
|
|
|
105
|
-
[
|
|
122
|
+
[6.0.0]: https://github.com/civisanalytics/tableau_api/compare/v5.0.0...v6.0.0
|
|
123
|
+
[Unreleased]: https://github.com/civisanalytics/tableau_api/compare/v6.0.0...HEAD
|
|
106
124
|
[1.1.2]: https://github.com/civisanalytics/tableau_api/compare/v1.1.1...v1.1.2
|
|
107
125
|
[1.1.1]: https://github.com/civisanalytics/tableau_api/compare/v1.1.0...v1.1.1
|
|
108
126
|
[1.1.0]: https://github.com/civisanalytics/tableau_api/compare/v1.0.0...v1.1.0
|
data/Dockerfile
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
ARG RUBY_VERSION=3.4
|
|
2
|
+
FROM ruby:${RUBY_VERSION}
|
|
3
|
+
|
|
4
|
+
WORKDIR /src
|
|
5
|
+
|
|
6
|
+
# The gemspec shells out to `git ls-files`, and the repo is bind-mounted from the host.
|
|
7
|
+
RUN git config --global --add safe.directory /src
|
|
8
|
+
|
|
9
|
+
ENV BUNDLE_PATH=/bundle \
|
|
10
|
+
BUNDLE_BIN=/bundle/bin \
|
|
11
|
+
PATH=/bundle/bin:$PATH
|
|
12
|
+
|
|
13
|
+
CMD ["bash"]
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -53,9 +53,18 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
|
53
53
|
|
|
54
54
|
### Docker
|
|
55
55
|
|
|
56
|
+
A development image is provided so you don't need a local Ruby toolchain. The image and the installed gems are kept per Ruby version, so versions don't interfere with each other.
|
|
57
|
+
|
|
56
58
|
```
|
|
57
|
-
docker run
|
|
58
|
-
docker
|
|
59
|
+
docker compose run --rm dev bundle install
|
|
60
|
+
docker compose run --rm dev bundle exec rake
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
This uses Ruby 3.4 by default. To run against another supported Ruby (3.3 and newer), set `RUBY_VERSION` on the same commands. The image is built the first time a version is used:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
RUBY_VERSION=3.3 docker compose run --rm dev bundle install
|
|
67
|
+
RUBY_VERSION=3.3 docker compose run --rm dev bundle exec rake
|
|
59
68
|
```
|
|
60
69
|
|
|
61
70
|
### Creating New VCR Cassettes
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/docker-compose.yml
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
services:
|
|
2
|
+
dev:
|
|
3
|
+
image: tableau_api-dev:${RUBY_VERSION:-3.4}
|
|
4
|
+
build:
|
|
5
|
+
context: .
|
|
6
|
+
args:
|
|
7
|
+
RUBY_VERSION: ${RUBY_VERSION:-3.4}
|
|
8
|
+
volumes:
|
|
9
|
+
- .:/src
|
|
10
|
+
- bundle:/bundle
|
|
11
|
+
stdin_open: true
|
|
12
|
+
tty: true
|
|
13
|
+
|
|
14
|
+
volumes:
|
|
15
|
+
bundle:
|
|
16
|
+
name: tableau_api-bundle-${RUBY_VERSION:-3.4}
|
data/lib/tableau_api/client.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module TableauApi
|
|
2
4
|
class Client
|
|
3
5
|
attr_reader :host, :username, :password, :site_id, :site_name
|
|
@@ -6,12 +8,15 @@ module TableauApi
|
|
|
6
8
|
@resources = {}
|
|
7
9
|
|
|
8
10
|
raise 'host is required' if host.to_s.empty?
|
|
11
|
+
|
|
9
12
|
@host = host
|
|
10
13
|
|
|
11
14
|
raise 'site_name is required' if site_name.to_s.empty?
|
|
15
|
+
|
|
12
16
|
@site_name = site_name
|
|
13
17
|
|
|
14
18
|
raise 'username is required' if username.to_s.empty?
|
|
19
|
+
|
|
15
20
|
@username = username
|
|
16
21
|
|
|
17
22
|
@password = password
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module TableauApi
|
|
2
4
|
class Connection
|
|
3
|
-
API_VERSION = '3.1'
|
|
5
|
+
API_VERSION = '3.1'
|
|
4
6
|
|
|
5
7
|
include HTTParty
|
|
6
8
|
headers 'User-Agent' => "tableau_api/#{::TableauApi::VERSION} Ruby/#{RUBY_VERSION}"
|
|
@@ -16,6 +18,7 @@ module TableauApi
|
|
|
16
18
|
# if the result is paginated, it will fetch subsequent pages
|
|
17
19
|
# collection can be delimited with a period to do nested hash lookups
|
|
18
20
|
# e.g. objects.object
|
|
21
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
19
22
|
def api_get_collection(path, collection, page_number: 1, page_size: 100, **kwargs)
|
|
20
23
|
Enumerator.new do |enum|
|
|
21
24
|
loop do
|
|
@@ -39,6 +42,7 @@ module TableauApi
|
|
|
39
42
|
end
|
|
40
43
|
end
|
|
41
44
|
end
|
|
45
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
|
42
46
|
|
|
43
47
|
def api_get(path, **kwargs)
|
|
44
48
|
api_method(:get, path, kwargs)
|
|
@@ -75,9 +79,7 @@ module TableauApi
|
|
|
75
79
|
|
|
76
80
|
def api_method(method, path, kwargs)
|
|
77
81
|
# do not attach auth headers or attempt to signin if we're signing in
|
|
78
|
-
unless path == 'auth/signin'
|
|
79
|
-
new_headers = auth_headers(kwargs.fetch(:headers, {}))
|
|
80
|
-
end
|
|
82
|
+
new_headers = auth_headers(kwargs.fetch(:headers, {})) unless path == 'auth/signin'
|
|
81
83
|
self.class.public_send(method, url_for(path), kwargs.merge(headers: new_headers))
|
|
82
84
|
end
|
|
83
85
|
|
data/lib/tableau_api/error.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module TableauApi
|
|
2
4
|
module Resources
|
|
3
5
|
class Sites < Base
|
|
@@ -23,12 +25,14 @@ module TableauApi
|
|
|
23
25
|
res = @client.connection.api_post('sites', body: request)
|
|
24
26
|
|
|
25
27
|
return res['tsResponse']['site'] if res.code == 201
|
|
28
|
+
|
|
26
29
|
raise TableauError, res
|
|
27
30
|
end
|
|
28
31
|
|
|
29
32
|
def delete(site_id:)
|
|
30
33
|
res = @client.connection.api_delete("sites/#{site_id}")
|
|
31
34
|
return true if res.code == 204
|
|
35
|
+
|
|
32
36
|
raise TableauError, res
|
|
33
37
|
end
|
|
34
38
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module TableauApi
|
|
2
4
|
module Resources
|
|
3
5
|
class Users < Base
|
|
@@ -35,6 +37,7 @@ module TableauApi
|
|
|
35
37
|
res = @client.connection.api_get("sites/#{@client.auth.site_id}/users/#{user_id}")
|
|
36
38
|
|
|
37
39
|
raise 'failed to find user' if res.code != 200
|
|
40
|
+
|
|
38
41
|
user = res['tsResponse']['user']
|
|
39
42
|
|
|
40
43
|
request = Builder::XmlMarkup.new.tsRequest do |ts|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'zip'
|
|
2
4
|
|
|
3
5
|
module TableauApi
|
|
@@ -9,6 +11,8 @@ module TableauApi
|
|
|
9
11
|
if File.exist?(file) && File.extname(file) == '.twbx'
|
|
10
12
|
Zip::File.open(file) do |zip_file|
|
|
11
13
|
entry = zip_file.glob('*.twb').first
|
|
14
|
+
next unless entry
|
|
15
|
+
|
|
12
16
|
version = HTTParty::Parser.new(entry.get_input_stream.read, :xml).parse['workbook']['version']
|
|
13
17
|
end
|
|
14
18
|
end
|
|
@@ -55,10 +59,12 @@ module TableauApi
|
|
|
55
59
|
|
|
56
60
|
CAPABILITY_MODES = %w[ALLOW DENY].freeze
|
|
57
61
|
|
|
62
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
58
63
|
def permissions(workbook_id:)
|
|
59
64
|
res = @client.connection.api_get("sites/#{@client.auth.site_id}/workbooks/#{workbook_id}/permissions")
|
|
60
65
|
|
|
61
66
|
raise TableauError, res if res.code != 200
|
|
67
|
+
|
|
62
68
|
permissions = HTTParty::Parser.new(res.body, :xml).parse['tsResponse']['permissions']['granteeCapabilities']
|
|
63
69
|
return [] if permissions.nil?
|
|
64
70
|
|
|
@@ -81,9 +87,10 @@ module TableauApi
|
|
|
81
87
|
}
|
|
82
88
|
end
|
|
83
89
|
end
|
|
90
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
|
84
91
|
|
|
85
92
|
# capabilities is a hash of symbol keys to booleans { Read: true, ChangePermissions: false }
|
|
86
|
-
def add_permissions(workbook_id:, user_id: nil, group_id: nil
|
|
93
|
+
def add_permissions(workbook_id:, capabilities:, user_id: nil, group_id: nil)
|
|
87
94
|
validate_user_group_exclusivity(user_id, group_id)
|
|
88
95
|
|
|
89
96
|
request = permissions_request(workbook_id, user_id, group_id, capabilities)
|
|
@@ -92,7 +99,7 @@ module TableauApi
|
|
|
92
99
|
res.code == 200
|
|
93
100
|
end
|
|
94
101
|
|
|
95
|
-
def delete_permissions(workbook_id:, user_id: nil, group_id: nil
|
|
102
|
+
def delete_permissions(workbook_id:, capability:, capability_mode:, user_id: nil, group_id: nil)
|
|
96
103
|
validate_user_group_exclusivity(user_id, group_id)
|
|
97
104
|
raise 'invalid capability' unless CAPABILITIES.include? capability.to_s
|
|
98
105
|
raise 'invalid mode' unless CAPABILITY_MODES.include? capability_mode.to_s
|
|
@@ -155,6 +162,7 @@ module TableauApi
|
|
|
155
162
|
capabilities.each do |k, v|
|
|
156
163
|
k = k.to_s
|
|
157
164
|
raise "invalid capability #{k}" unless CAPABILITIES.include? k
|
|
165
|
+
|
|
158
166
|
c.capability(name: k, mode: v ? 'Allow' : 'Deny')
|
|
159
167
|
end
|
|
160
168
|
end
|
data/lib/tableau_api/version.rb
CHANGED
data/lib/tableau_api.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'httparty'
|
|
2
4
|
require 'builder'
|
|
3
5
|
require 'net/http/post/multipart'
|
|
@@ -19,8 +21,8 @@ require 'tableau_api/resources/jobs'
|
|
|
19
21
|
|
|
20
22
|
module TableauApi
|
|
21
23
|
class << self
|
|
22
|
-
def new(options
|
|
23
|
-
Client.new(options)
|
|
24
|
+
def new(**options)
|
|
25
|
+
Client.new(**options)
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
28
|
end
|
data/tableau_api.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
lib = File.expand_path('
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'tableau_api/version'
|
|
6
6
|
|
|
@@ -19,19 +19,21 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.bindir = 'exe'
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ['lib']
|
|
22
|
-
spec.required_ruby_version = '
|
|
22
|
+
spec.required_ruby_version = '>= 3.3'
|
|
23
23
|
|
|
24
|
-
spec.add_dependency 'httparty', '~> 0.13'
|
|
25
24
|
spec.add_dependency 'builder', '~> 3.2'
|
|
25
|
+
spec.add_dependency 'httparty', '~> 0.22'
|
|
26
26
|
spec.add_dependency 'multipart-post', '~> 2.0'
|
|
27
|
-
spec.add_dependency '
|
|
27
|
+
spec.add_dependency 'multi_xml', '~> 0.7'
|
|
28
|
+
spec.add_dependency 'rubyzip', '~> 3.7'
|
|
28
29
|
|
|
29
|
-
spec.add_development_dependency '
|
|
30
|
-
spec.add_development_dependency 'rspec', '~> 3.6'
|
|
31
|
-
spec.add_development_dependency 'vcr', '~> 3.0'
|
|
32
|
-
spec.add_development_dependency 'webmock', '~> 3.0'
|
|
30
|
+
spec.add_development_dependency 'chunky_png', '~> 1.4'
|
|
33
31
|
spec.add_development_dependency 'pry', '~> 0.10'
|
|
34
32
|
spec.add_development_dependency 'pry-byebug', '~> 3.4'
|
|
35
|
-
spec.add_development_dependency '
|
|
36
|
-
spec.add_development_dependency '
|
|
33
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
|
34
|
+
spec.add_development_dependency 'rspec', '~> 3.6'
|
|
35
|
+
spec.add_development_dependency 'rubocop', '~> 1.91'
|
|
36
|
+
spec.add_development_dependency 'vcr', '~> 6.0'
|
|
37
|
+
spec.add_development_dependency 'webmock', '~> 3.0'
|
|
38
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
37
39
|
end
|
metadata
CHANGED
|
@@ -1,45 +1,44 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tableau_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 6.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christopher Manning
|
|
8
8
|
- Matt Brennan
|
|
9
9
|
- Jonathan Cobian
|
|
10
|
-
autorequire:
|
|
11
10
|
bindir: exe
|
|
12
11
|
cert_chain: []
|
|
13
|
-
date:
|
|
12
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
14
13
|
dependencies:
|
|
15
14
|
- !ruby/object:Gem::Dependency
|
|
16
|
-
name:
|
|
15
|
+
name: builder
|
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
|
18
17
|
requirements:
|
|
19
18
|
- - "~>"
|
|
20
19
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '
|
|
20
|
+
version: '3.2'
|
|
22
21
|
type: :runtime
|
|
23
22
|
prerelease: false
|
|
24
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
24
|
requirements:
|
|
26
25
|
- - "~>"
|
|
27
26
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: '
|
|
27
|
+
version: '3.2'
|
|
29
28
|
- !ruby/object:Gem::Dependency
|
|
30
|
-
name:
|
|
29
|
+
name: httparty
|
|
31
30
|
requirement: !ruby/object:Gem::Requirement
|
|
32
31
|
requirements:
|
|
33
32
|
- - "~>"
|
|
34
33
|
- !ruby/object:Gem::Version
|
|
35
|
-
version: '
|
|
34
|
+
version: '0.22'
|
|
36
35
|
type: :runtime
|
|
37
36
|
prerelease: false
|
|
38
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
39
38
|
requirements:
|
|
40
39
|
- - "~>"
|
|
41
40
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '
|
|
41
|
+
version: '0.22'
|
|
43
42
|
- !ruby/object:Gem::Dependency
|
|
44
43
|
name: multipart-post
|
|
45
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -54,139 +53,153 @@ dependencies:
|
|
|
54
53
|
- - "~>"
|
|
55
54
|
- !ruby/object:Gem::Version
|
|
56
55
|
version: '2.0'
|
|
56
|
+
- !ruby/object:Gem::Dependency
|
|
57
|
+
name: multi_xml
|
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - "~>"
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0.7'
|
|
63
|
+
type: :runtime
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - "~>"
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0.7'
|
|
57
70
|
- !ruby/object:Gem::Dependency
|
|
58
71
|
name: rubyzip
|
|
59
72
|
requirement: !ruby/object:Gem::Requirement
|
|
60
73
|
requirements:
|
|
61
74
|
- - "~>"
|
|
62
75
|
- !ruby/object:Gem::Version
|
|
63
|
-
version: '
|
|
76
|
+
version: '3.7'
|
|
64
77
|
type: :runtime
|
|
65
78
|
prerelease: false
|
|
66
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
67
80
|
requirements:
|
|
68
81
|
- - "~>"
|
|
69
82
|
- !ruby/object:Gem::Version
|
|
70
|
-
version: '
|
|
83
|
+
version: '3.7'
|
|
71
84
|
- !ruby/object:Gem::Dependency
|
|
72
|
-
name:
|
|
85
|
+
name: chunky_png
|
|
73
86
|
requirement: !ruby/object:Gem::Requirement
|
|
74
87
|
requirements:
|
|
75
88
|
- - "~>"
|
|
76
89
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: '
|
|
90
|
+
version: '1.4'
|
|
78
91
|
type: :development
|
|
79
92
|
prerelease: false
|
|
80
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
81
94
|
requirements:
|
|
82
95
|
- - "~>"
|
|
83
96
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: '
|
|
97
|
+
version: '1.4'
|
|
85
98
|
- !ruby/object:Gem::Dependency
|
|
86
|
-
name:
|
|
99
|
+
name: pry
|
|
87
100
|
requirement: !ruby/object:Gem::Requirement
|
|
88
101
|
requirements:
|
|
89
102
|
- - "~>"
|
|
90
103
|
- !ruby/object:Gem::Version
|
|
91
|
-
version: '
|
|
104
|
+
version: '0.10'
|
|
92
105
|
type: :development
|
|
93
106
|
prerelease: false
|
|
94
107
|
version_requirements: !ruby/object:Gem::Requirement
|
|
95
108
|
requirements:
|
|
96
109
|
- - "~>"
|
|
97
110
|
- !ruby/object:Gem::Version
|
|
98
|
-
version: '
|
|
111
|
+
version: '0.10'
|
|
99
112
|
- !ruby/object:Gem::Dependency
|
|
100
|
-
name:
|
|
113
|
+
name: pry-byebug
|
|
101
114
|
requirement: !ruby/object:Gem::Requirement
|
|
102
115
|
requirements:
|
|
103
116
|
- - "~>"
|
|
104
117
|
- !ruby/object:Gem::Version
|
|
105
|
-
version: '3.
|
|
118
|
+
version: '3.4'
|
|
106
119
|
type: :development
|
|
107
120
|
prerelease: false
|
|
108
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
109
122
|
requirements:
|
|
110
123
|
- - "~>"
|
|
111
124
|
- !ruby/object:Gem::Version
|
|
112
|
-
version: '3.
|
|
125
|
+
version: '3.4'
|
|
113
126
|
- !ruby/object:Gem::Dependency
|
|
114
|
-
name:
|
|
127
|
+
name: rake
|
|
115
128
|
requirement: !ruby/object:Gem::Requirement
|
|
116
129
|
requirements:
|
|
117
130
|
- - "~>"
|
|
118
131
|
- !ruby/object:Gem::Version
|
|
119
|
-
version: '
|
|
132
|
+
version: '13.0'
|
|
120
133
|
type: :development
|
|
121
134
|
prerelease: false
|
|
122
135
|
version_requirements: !ruby/object:Gem::Requirement
|
|
123
136
|
requirements:
|
|
124
137
|
- - "~>"
|
|
125
138
|
- !ruby/object:Gem::Version
|
|
126
|
-
version: '
|
|
139
|
+
version: '13.0'
|
|
127
140
|
- !ruby/object:Gem::Dependency
|
|
128
|
-
name:
|
|
141
|
+
name: rspec
|
|
129
142
|
requirement: !ruby/object:Gem::Requirement
|
|
130
143
|
requirements:
|
|
131
144
|
- - "~>"
|
|
132
145
|
- !ruby/object:Gem::Version
|
|
133
|
-
version: '
|
|
146
|
+
version: '3.6'
|
|
134
147
|
type: :development
|
|
135
148
|
prerelease: false
|
|
136
149
|
version_requirements: !ruby/object:Gem::Requirement
|
|
137
150
|
requirements:
|
|
138
151
|
- - "~>"
|
|
139
152
|
- !ruby/object:Gem::Version
|
|
140
|
-
version: '
|
|
153
|
+
version: '3.6'
|
|
141
154
|
- !ruby/object:Gem::Dependency
|
|
142
|
-
name:
|
|
155
|
+
name: rubocop
|
|
143
156
|
requirement: !ruby/object:Gem::Requirement
|
|
144
157
|
requirements:
|
|
145
158
|
- - "~>"
|
|
146
159
|
- !ruby/object:Gem::Version
|
|
147
|
-
version: '
|
|
160
|
+
version: '1.91'
|
|
148
161
|
type: :development
|
|
149
162
|
prerelease: false
|
|
150
163
|
version_requirements: !ruby/object:Gem::Requirement
|
|
151
164
|
requirements:
|
|
152
165
|
- - "~>"
|
|
153
166
|
- !ruby/object:Gem::Version
|
|
154
|
-
version: '
|
|
167
|
+
version: '1.91'
|
|
155
168
|
- !ruby/object:Gem::Dependency
|
|
156
|
-
name:
|
|
169
|
+
name: vcr
|
|
157
170
|
requirement: !ruby/object:Gem::Requirement
|
|
158
171
|
requirements:
|
|
159
172
|
- - "~>"
|
|
160
173
|
- !ruby/object:Gem::Version
|
|
161
|
-
version:
|
|
174
|
+
version: '6.0'
|
|
162
175
|
type: :development
|
|
163
176
|
prerelease: false
|
|
164
177
|
version_requirements: !ruby/object:Gem::Requirement
|
|
165
178
|
requirements:
|
|
166
179
|
- - "~>"
|
|
167
180
|
- !ruby/object:Gem::Version
|
|
168
|
-
version:
|
|
181
|
+
version: '6.0'
|
|
169
182
|
- !ruby/object:Gem::Dependency
|
|
170
|
-
name:
|
|
183
|
+
name: webmock
|
|
171
184
|
requirement: !ruby/object:Gem::Requirement
|
|
172
185
|
requirements:
|
|
173
186
|
- - "~>"
|
|
174
187
|
- !ruby/object:Gem::Version
|
|
175
|
-
version:
|
|
188
|
+
version: '3.0'
|
|
176
189
|
type: :development
|
|
177
190
|
prerelease: false
|
|
178
191
|
version_requirements: !ruby/object:Gem::Requirement
|
|
179
192
|
requirements:
|
|
180
193
|
- - "~>"
|
|
181
194
|
- !ruby/object:Gem::Version
|
|
182
|
-
version:
|
|
183
|
-
description:
|
|
195
|
+
version: '3.0'
|
|
184
196
|
email:
|
|
185
197
|
- opensource@civisanalytics.com
|
|
186
198
|
executables: []
|
|
187
199
|
extensions: []
|
|
188
200
|
extra_rdoc_files: []
|
|
189
201
|
files:
|
|
202
|
+
- ".dockerignore"
|
|
190
203
|
- ".gitignore"
|
|
191
204
|
- ".rspec"
|
|
192
205
|
- ".rubocop.yml"
|
|
@@ -195,12 +208,14 @@ files:
|
|
|
195
208
|
- ".travis.yml"
|
|
196
209
|
- CHANGELOG.md
|
|
197
210
|
- CODE_OF_CONDUCT.md
|
|
211
|
+
- Dockerfile
|
|
198
212
|
- Gemfile
|
|
199
213
|
- LICENSE.txt
|
|
200
214
|
- README.md
|
|
201
215
|
- Rakefile
|
|
202
216
|
- bin/console
|
|
203
217
|
- bin/setup
|
|
218
|
+
- docker-compose.yml
|
|
204
219
|
- lib/tableau_api.rb
|
|
205
220
|
- lib/tableau_api/client.rb
|
|
206
221
|
- lib/tableau_api/connection.rb
|
|
@@ -219,25 +234,23 @@ files:
|
|
|
219
234
|
homepage: https://github.com/civisanalytics/tableau_api
|
|
220
235
|
licenses:
|
|
221
236
|
- BSD-3-Clause
|
|
222
|
-
metadata:
|
|
223
|
-
|
|
237
|
+
metadata:
|
|
238
|
+
rubygems_mfa_required: 'true'
|
|
224
239
|
rdoc_options: []
|
|
225
240
|
require_paths:
|
|
226
241
|
- lib
|
|
227
242
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
228
243
|
requirements:
|
|
229
|
-
- - "
|
|
244
|
+
- - ">="
|
|
230
245
|
- !ruby/object:Gem::Version
|
|
231
|
-
version: '
|
|
246
|
+
version: '3.3'
|
|
232
247
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
248
|
requirements:
|
|
234
249
|
- - ">="
|
|
235
250
|
- !ruby/object:Gem::Version
|
|
236
251
|
version: '0'
|
|
237
252
|
requirements: []
|
|
238
|
-
|
|
239
|
-
rubygems_version: 2.6.14.4
|
|
240
|
-
signing_key:
|
|
253
|
+
rubygems_version: 3.6.9
|
|
241
254
|
specification_version: 4
|
|
242
255
|
summary: Ruby interface to the Tableau API.
|
|
243
256
|
test_files: []
|