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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a147139944855ed7147760ceae5d65bcd5f6fb1c
4
- data.tar.gz: ea08dc0b70183fc30620959fa255e041e6c318ea
2
+ SHA256:
3
+ metadata.gz: 84a36ca634703047a12edf192dd3e0c0c5c383cf692b7a6ca0bfeec5466824ae
4
+ data.tar.gz: 70f55987bcc8879662c14e1cb276f8dfa4a9fbdb0b2b2a2a1d59606d5a319d02
5
5
  SHA512:
6
- metadata.gz: b60cbc7aec82d7a36868faadbe38f775786a67b84c809c2803e384424c877d6c22116b1da652d0634f57d731b0d99a2b3e69123d746499390e7e2a2c34d71a63
7
- data.tar.gz: f36628abb279e8ca26aee9747a9fafb0ab29e41268b6787e2da9a90d2d4a116d3f18fd7d7ca6557481340a72aaf6a6306cb95f5ce6caf83a4ab274b2df17b994
6
+ metadata.gz: 921e1acfb66c6d45fb18cabb85c158c0ba24e3726b55f14a888bd016e5e8d4e66f791ef165a48874256ee31c053f1db0b8fbc4d149c10cc99423bf54c2868f72
7
+ data.tar.gz: b384e520e571445142e9cf305751b2199e92edcc852acfebf535c6f2036abfd1eb6261f16705757ed538d00640e67afe06e63036e05b67bbaa72422c19f30c06
data/.dockerignore ADDED
@@ -0,0 +1,7 @@
1
+ .git
2
+ .bundle
3
+ Gemfile.lock
4
+ coverage
5
+ doc
6
+ pkg
7
+ tmp
data/.rubocop.yml CHANGED
@@ -1,24 +1,25 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.2
4
+ TargetRubyVersion: 3.3
5
+ NewCops: enable
5
6
 
6
- ClassLength:
7
- Max: 200
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
- LineLength:
13
- Max: 170
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
- # on 2019-08-21 17:54:45 +0000 using RuboCop version 0.49.1.
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: 13
10
- # Configuration parameters: CountComments, ExcludedMethods.
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: 316
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
- 2.4.10
1
+ 3.4
data/.travis.yml CHANGED
@@ -4,6 +4,6 @@ branches:
4
4
  - master
5
5
  language: ruby
6
6
  rvm:
7
- - 2.6.6
8
- - 2.5.8
9
- - 2.4.10
7
+ - 4.0
8
+ - 3.4
9
+ - 3.3
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
- ## upcoming
7
-
8
- ### Changed
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
- [Unreleased]: https://github.com/civisanalytics/tableau_api/compare/v1.1.2...HEAD
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in tableau_api.gemspec
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 -it -d -v $(pwd):/src ruby:2 /bin/bash
58
- docker exec -it CONTAINER_ID /bin/bash -c "cd /src && bundle && rake"
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'tableau_api'
@@ -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}
@@ -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'.freeze
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
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
4
  class TableauError < StandardError
3
5
  attr_reader :http_response_code, :error_code, :summary, :detail
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
4
  module Resources
3
5
  class Auth < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
4
  module Resources
3
5
  class Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
4
  module Resources
3
5
  class Datasources < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
4
  module Resources
3
5
  class Groups < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
4
  module Resources
3
5
  class Jobs < Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
4
  module Resources
3
5
  class Projects < Base
@@ -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, capabilities:)
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, capability:, capability_mode:)
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TableauApi
2
- VERSION = '4.1.0'.freeze
4
+ VERSION = '6.0.0'
3
5
  end
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
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
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 = '~> 2.1'
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 'rubyzip', '~> 1.0'
27
+ spec.add_dependency 'multi_xml', '~> 0.7'
28
+ spec.add_dependency 'rubyzip', '~> 3.7'
28
29
 
29
- spec.add_development_dependency 'rake', '~> 11.0'
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 'rubocop', '~> 0.49.0'
36
- spec.add_development_dependency 'chunky_png', '~> 1.3.11'
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.1.0
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: 2022-04-28 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- name: httparty
15
+ name: builder
17
16
  requirement: !ruby/object:Gem::Requirement
18
17
  requirements:
19
18
  - - "~>"
20
19
  - !ruby/object:Gem::Version
21
- version: '0.13'
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: '0.13'
27
+ version: '3.2'
29
28
  - !ruby/object:Gem::Dependency
30
- name: builder
29
+ name: httparty
31
30
  requirement: !ruby/object:Gem::Requirement
32
31
  requirements:
33
32
  - - "~>"
34
33
  - !ruby/object:Gem::Version
35
- version: '3.2'
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: '3.2'
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: '1.0'
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: '1.0'
83
+ version: '3.7'
71
84
  - !ruby/object:Gem::Dependency
72
- name: rake
85
+ name: chunky_png
73
86
  requirement: !ruby/object:Gem::Requirement
74
87
  requirements:
75
88
  - - "~>"
76
89
  - !ruby/object:Gem::Version
77
- version: '11.0'
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: '11.0'
97
+ version: '1.4'
85
98
  - !ruby/object:Gem::Dependency
86
- name: rspec
99
+ name: pry
87
100
  requirement: !ruby/object:Gem::Requirement
88
101
  requirements:
89
102
  - - "~>"
90
103
  - !ruby/object:Gem::Version
91
- version: '3.6'
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: '3.6'
111
+ version: '0.10'
99
112
  - !ruby/object:Gem::Dependency
100
- name: vcr
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.0'
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.0'
125
+ version: '3.4'
113
126
  - !ruby/object:Gem::Dependency
114
- name: webmock
127
+ name: rake
115
128
  requirement: !ruby/object:Gem::Requirement
116
129
  requirements:
117
130
  - - "~>"
118
131
  - !ruby/object:Gem::Version
119
- version: '3.0'
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: '3.0'
139
+ version: '13.0'
127
140
  - !ruby/object:Gem::Dependency
128
- name: pry
141
+ name: rspec
129
142
  requirement: !ruby/object:Gem::Requirement
130
143
  requirements:
131
144
  - - "~>"
132
145
  - !ruby/object:Gem::Version
133
- version: '0.10'
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: '0.10'
153
+ version: '3.6'
141
154
  - !ruby/object:Gem::Dependency
142
- name: pry-byebug
155
+ name: rubocop
143
156
  requirement: !ruby/object:Gem::Requirement
144
157
  requirements:
145
158
  - - "~>"
146
159
  - !ruby/object:Gem::Version
147
- version: '3.4'
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: '3.4'
167
+ version: '1.91'
155
168
  - !ruby/object:Gem::Dependency
156
- name: rubocop
169
+ name: vcr
157
170
  requirement: !ruby/object:Gem::Requirement
158
171
  requirements:
159
172
  - - "~>"
160
173
  - !ruby/object:Gem::Version
161
- version: 0.49.0
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: 0.49.0
181
+ version: '6.0'
169
182
  - !ruby/object:Gem::Dependency
170
- name: chunky_png
183
+ name: webmock
171
184
  requirement: !ruby/object:Gem::Requirement
172
185
  requirements:
173
186
  - - "~>"
174
187
  - !ruby/object:Gem::Version
175
- version: 1.3.11
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: 1.3.11
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
- post_install_message:
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: '2.1'
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
- rubyforge_project:
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: []