redash_exporter 0.1.0 → 0.2.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
2
  SHA256:
3
- metadata.gz: 4d777d0f891d5e91e8060bf86aa610b3a027c74edc381aa90145e170b4ee3820
4
- data.tar.gz: 8958ae10484c2e85dde16ab751c50d996ecc28a28771d6e79bbaf79e10af34cd
3
+ metadata.gz: 737f047c800fcf2a4ddef570240e665ddf925605ecd216d7c27de59499b89c41
4
+ data.tar.gz: f7a0bb91f8b5f1d49d4f48ce1d3a5749d671b38496314440e405473f1930ed70
5
5
  SHA512:
6
- metadata.gz: 121bac15071c05408a58694afc76e9fd918ec7daeefbc467e8c0be990d9233d2fcfb2f7b856fb684d576c71c5af02eeba927e22a16a2277bc19c871e64cc9b5f
7
- data.tar.gz: 669371aa457f92e3b68dc3eaf6526a5bda0d615b9dd92a962531e29904de9567e33354854925427b9e840e81788888f93ee53d0b8252d389b8c6b293d7010dcf
6
+ metadata.gz: f741e0b0c0bf0cf5e5e085b6af55f2815afca8243220bb3f981f6b18637769e27e0fe89282063bd54ec1d8165678473dd048fbf324c85765b64ea036cc8af810
7
+ data.tar.gz: 02caec93eeeb6a7df11df2254f48844e3bfde1e1ccce30d1e74ffc2e61e18e250815da003a82e73a75d5b1f29b2c4bee53b09a5f542d33f9e11d83d41d0fdc9f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- redash_exporter (0.1.0)
4
+ redash_exporter (0.2.0)
5
5
  activesupport
6
6
  zaru
7
7
 
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Gem Version](https://badge.fury.io/rb/redash_exporter.svg)](https://badge.fury.io/rb/redash_exporter)
2
+
1
3
  # RedashExporter
2
4
 
3
5
  This gem is inspired by [Redash Query Export Tool](https://gist.github.com/arikfr/598590356c4da18be976)
@@ -32,6 +34,7 @@ in Ruby Script
32
34
 
33
35
  ```ruby
34
36
  queries = RedashExporter::Queries.new 'https://your-redash-host.example/your_path', 'your_api_key', 'export_path'
37
+ queries.fetch
35
38
  queries.export_all
36
39
 
37
40
  # filter
data/exe/redash_exporter CHANGED
@@ -5,4 +5,5 @@ require 'optparse'
5
5
 
6
6
  params = ARGV.getopts('', 'redash-url:', 'api-key:', "dest:#{Dir.pwd}")
7
7
  queries = RedashExporter::Queries.new(params['redash-url'], params['api-key'], params['dest'])
8
+ queries.fetch
8
9
  queries.export_all
@@ -17,7 +17,7 @@ module RedashExporter
17
17
  @url = "#{@url}/" unless @url.end_with?('/')
18
18
  @api_key = api_key
19
19
  @dest = dest
20
- fetch
20
+ @queries = []
21
21
  end
22
22
 
23
23
  def export_all
@@ -38,14 +38,36 @@ module RedashExporter
38
38
  http = Net::HTTP.new(uri.host, uri.port)
39
39
  http.use_ssl = true if uri.scheme == 'https'
40
40
 
41
- req = Net::HTTP::Get.new(uri.path, header)
42
- res = http.request(req)
43
- body = JSON.parse(res.body, symbolize_names: true)
44
- @queries = if body.is_a?(Array)
45
- body.map { |q| Query.new(q) }
46
- elsif body.is_a?(Hash)
47
- body[:results].map { |q| Query.new(q) }
48
- end
41
+ page = 1
42
+ page_size = 250
43
+
44
+ loop do
45
+ uri.query = "page=#{page}&page_size=#{page_size}"
46
+ req = Net::HTTP::Get.new(uri.to_s, header)
47
+ res = http.request(req)
48
+ body = JSON.parse(res.body, symbolize_names: true)
49
+
50
+ raise "Failed to fetch queries. URI: #{uri}" unless res.is_a?(Net::HTTPSuccess)
51
+
52
+ # old API returns all queries as an array
53
+ if body.is_a?(Array)
54
+ @queries = body.map { |q| Query.new(q) }
55
+ break
56
+ end
57
+
58
+ # new API
59
+ @queries.push(*body[:results].map { |q| Query.new(q) })
60
+
61
+ # next page
62
+ if @queries.size < body[:count]
63
+ page += 1
64
+ # wait...
65
+ sleep 0.5
66
+ next
67
+ end
68
+
69
+ break
70
+ end
49
71
  end
50
72
 
51
73
  def reject!(*args, &block)
@@ -1,3 +1,3 @@
1
1
  module RedashExporter
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redash_exporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - oieioi