gooddata 0.5.11 → 0.5.12
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/gooddata/client.rb +16 -0
- data/lib/gooddata/connection.rb +11 -8
- data/lib/gooddata/models/metadata.rb +1 -1
- data/lib/gooddata/models/report.rb +26 -5
- data/lib/gooddata/version.rb +1 -1
- metadata +1 -1
data/lib/gooddata/client.rb
CHANGED
@@ -88,6 +88,22 @@ module GoodData
|
|
88
88
|
threaded[:connection] = Connection.new user, password, url, options
|
89
89
|
end
|
90
90
|
|
91
|
+
# This method is aimed at creating an authenticated connection in case you do not hae pass/login but you have SST
|
92
|
+
# === Parameters
|
93
|
+
#
|
94
|
+
# * +options+ - :server => optional GD server uri. If nil it secure will be used
|
95
|
+
# * +options+ - :cookies => you can specify a hash of cookies
|
96
|
+
#
|
97
|
+
def create_authenticated_connection(options={})
|
98
|
+
url = options[:server]
|
99
|
+
|
100
|
+
connect("", "", url, options)
|
101
|
+
server_cookies = options[:cookies]
|
102
|
+
connection.merge_cookies!(server_cookies)
|
103
|
+
connection.status = :logged_in
|
104
|
+
connection
|
105
|
+
end
|
106
|
+
|
91
107
|
# Returns the active GoodData connection earlier initialized via
|
92
108
|
# GoodData.connect call
|
93
109
|
#
|
data/lib/gooddata/connection.rb
CHANGED
@@ -35,6 +35,8 @@ module GoodData
|
|
35
35
|
STAGE_PATH = '/uploads/'
|
36
36
|
|
37
37
|
attr_reader(:auth_token)
|
38
|
+
attr_accessor :status
|
39
|
+
|
38
40
|
|
39
41
|
# Options:
|
40
42
|
# * :tries - Number of retries to perform. Defaults to 1.
|
@@ -75,6 +77,15 @@ module GoodData
|
|
75
77
|
@url = url || DEFAULT_URL
|
76
78
|
@auth_token = options.delete(:auth_token)
|
77
79
|
@options = options
|
80
|
+
|
81
|
+
@server = RestClient::Resource.new @url,
|
82
|
+
:timeout => @options[:timeout],
|
83
|
+
:headers => {
|
84
|
+
:content_type => :json,
|
85
|
+
:accept => [ :json, :zip ],
|
86
|
+
:user_agent => GoodData.gem_version_string,
|
87
|
+
}
|
88
|
+
|
78
89
|
end
|
79
90
|
|
80
91
|
# Returns the user JSON object of the currently logged in GoodData user account.
|
@@ -279,14 +290,6 @@ module GoodData
|
|
279
290
|
}
|
280
291
|
}
|
281
292
|
|
282
|
-
@server = RestClient::Resource.new @url,
|
283
|
-
:timeout => @options[:timeout],
|
284
|
-
:headers => {
|
285
|
-
:content_type => :json,
|
286
|
-
:accept => [ :json, :zip ],
|
287
|
-
:user_agent => GoodData.gem_version_string,
|
288
|
-
}
|
289
|
-
|
290
293
|
GoodData.logger.debug "Logging in..."
|
291
294
|
@user = post(LOGIN_PATH, credentials, :dont_reauth => true)['userLogin']
|
292
295
|
refresh_token :dont_reauth => true # avoid infinite loop if refresh_token fails with 401
|
@@ -9,7 +9,7 @@ module GoodData
|
|
9
9
|
def [](id)
|
10
10
|
raise "Cannot search for nil #{self.class}" unless id
|
11
11
|
uri = if id.is_a? Integer or id =~ /^\d+$/
|
12
|
-
"#{GoodData.project.md
|
12
|
+
"#{GoodData.project.md[MD_OBJ_CTG]}/#{id}"
|
13
13
|
elsif id !~ /\//
|
14
14
|
identifier_to_uri id
|
15
15
|
elsif id =~ /^\//
|
@@ -33,15 +33,36 @@ module GoodData
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def execute
|
36
|
-
# puts "Executing report #{uri}"
|
37
36
|
result = GoodData.post '/gdc/xtab2/executor3', {"report_req" => {"report" => uri}}
|
38
|
-
|
39
|
-
result = GoodData.get
|
37
|
+
data_result_uri = result["execResult"]["dataResult"]
|
38
|
+
result = GoodData.get data_result_uri
|
40
39
|
while result["taskState"] && result["taskState"]["status"] == "WAIT" do
|
41
40
|
sleep 10
|
42
|
-
result = GoodData.get
|
41
|
+
result = GoodData.get data_result_uri
|
43
42
|
end
|
44
|
-
|
43
|
+
ReportDataResult.new(GoodData.get data_result_uri)
|
44
|
+
end
|
45
|
+
|
46
|
+
def export(format)
|
47
|
+
result = GoodData.post('/gdc/xtab2/executor3', {"report_req" => {"report" => uri}})
|
48
|
+
result1 = GoodData.post('/gdc/exporter/executor', {:result_req => {:format => format, :result => result}})
|
49
|
+
png = GoodData.get(result1['uri'], :process => false)
|
50
|
+
while (png.code == 202) do
|
51
|
+
sleep(1)
|
52
|
+
png = GoodData.get(result1['uri'], :process => false)
|
53
|
+
end
|
54
|
+
png
|
55
|
+
end
|
56
|
+
|
57
|
+
def execute_report
|
58
|
+
result = GoodData.post '/gdc/xtab2/executor3', {"report_req" => {"report" => uri}}
|
59
|
+
data_result_uri = result["execResult"]["dataResult"]
|
60
|
+
result = GoodData.get data_result_uri
|
61
|
+
while result["taskState"] && result["taskState"]["status"] == "WAIT" do
|
62
|
+
sleep 10
|
63
|
+
result = GoodData.get data_result_uri
|
64
|
+
end
|
65
|
+
data_result_uri
|
45
66
|
end
|
46
67
|
end
|
47
68
|
end
|
data/lib/gooddata/version.rb
CHANGED