gooddata 0.6.0 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. checksums.yaml +13 -5
  2. data/.rubocop.yml +23 -0
  3. data/.travis.yml +9 -4
  4. data/CLI.md +439 -0
  5. data/Gemfile +0 -1
  6. data/README.md +2 -2
  7. data/Rakefile +60 -8
  8. data/doc/templates/default/module/setup.rb +1 -1
  9. data/examples.rb +2 -0
  10. data/gooddata +2 -0
  11. data/gooddata.gemspec +12 -8
  12. data/lib/gooddata.rb +0 -2
  13. data/lib/gooddata/bricks/base_downloader.rb +52 -47
  14. data/lib/gooddata/bricks/brick.rb +20 -31
  15. data/lib/gooddata/bricks/bricks.rb +1 -1
  16. data/lib/gooddata/bricks/middleware/base_middleware.rb +9 -7
  17. data/lib/gooddata/bricks/middleware/bench_middleware.rb +12 -10
  18. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +28 -28
  19. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +20 -16
  20. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +21 -19
  21. data/lib/gooddata/bricks/middleware/logger_middleware.rb +10 -8
  22. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +36 -34
  23. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +11 -9
  24. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +14 -12
  25. data/lib/gooddata/bricks/pipeline.rb +28 -0
  26. data/lib/gooddata/bricks/utils.rb +10 -8
  27. data/lib/gooddata/cli/cli.rb +1 -6
  28. data/lib/gooddata/cli/commands/auth_cmd.rb +1 -1
  29. data/lib/gooddata/cli/commands/console_cmd.rb +7 -5
  30. data/lib/gooddata/cli/commands/domain_cmd.rb +45 -0
  31. data/lib/gooddata/cli/commands/process_cmd.rb +42 -5
  32. data/lib/gooddata/cli/commands/project_cmd.rb +96 -36
  33. data/lib/gooddata/cli/commands/projects_cmd.rb +21 -0
  34. data/lib/gooddata/cli/commands/role_cmd.rb +28 -0
  35. data/lib/gooddata/cli/commands/run_ruby_cmd.rb +5 -5
  36. data/lib/gooddata/cli/commands/scaffold_cmd.rb +1 -1
  37. data/lib/gooddata/cli/commands/{profile_cmd.rb → user_cmd.rb} +7 -9
  38. data/lib/gooddata/cli/shared.rb +3 -2
  39. data/lib/gooddata/client.rb +16 -304
  40. data/lib/gooddata/commands/api.rb +13 -5
  41. data/lib/gooddata/commands/auth.rb +47 -40
  42. data/lib/gooddata/commands/base.rb +4 -2
  43. data/lib/gooddata/commands/commands.rb +1 -1
  44. data/lib/gooddata/commands/datasets.rb +20 -7
  45. data/lib/gooddata/commands/domain.rb +23 -0
  46. data/lib/gooddata/commands/process.rb +23 -117
  47. data/lib/gooddata/commands/project.rb +147 -0
  48. data/lib/gooddata/commands/projects.rb +8 -102
  49. data/lib/gooddata/commands/role.rb +26 -0
  50. data/lib/gooddata/commands/runners.rb +41 -38
  51. data/lib/gooddata/commands/scaffold.rb +46 -43
  52. data/lib/gooddata/commands/user.rb +33 -0
  53. data/lib/gooddata/connection.rb +43 -353
  54. data/lib/gooddata/core/connection.rb +389 -0
  55. data/lib/gooddata/core/core.rb +5 -4
  56. data/lib/gooddata/core/logging.rb +48 -0
  57. data/lib/gooddata/core/nil_logger.rb +13 -0
  58. data/lib/gooddata/core/project.rb +70 -0
  59. data/lib/gooddata/core/rest.rb +120 -0
  60. data/lib/gooddata/core/threaded.rb +14 -0
  61. data/lib/gooddata/core/user.rb +19 -0
  62. data/lib/gooddata/data/data.rb +2 -1
  63. data/lib/gooddata/data/guesser.rb +16 -12
  64. data/lib/gooddata/exceptions/command_failed.rb +1 -1
  65. data/lib/gooddata/exceptions/exceptions.rb +2 -1
  66. data/lib/gooddata/exceptions/no_project_error.rb +11 -0
  67. data/lib/gooddata/exceptions/project_not_found.rb +1 -1
  68. data/lib/gooddata/extensions/big_decimal.rb +6 -2
  69. data/lib/gooddata/extract.rb +10 -8
  70. data/lib/gooddata/goodzilla/goodzilla.rb +61 -59
  71. data/lib/gooddata/helpers.rb +15 -9
  72. data/lib/gooddata/models/account_settings.rb +124 -0
  73. data/lib/gooddata/models/attributes/anchor.rb +37 -0
  74. data/lib/gooddata/models/attributes/attributes.rb +8 -0
  75. data/lib/gooddata/models/attributes/date_attribute.rb +25 -0
  76. data/lib/gooddata/models/attributes/time_attribute.rb +24 -0
  77. data/lib/gooddata/models/columns/attribute.rb +71 -0
  78. data/lib/gooddata/models/columns/columns.rb +8 -0
  79. data/lib/gooddata/models/columns/date_column.rb +63 -0
  80. data/lib/gooddata/models/columns/fact_model.rb +54 -0
  81. data/lib/gooddata/models/columns/label.rb +55 -0
  82. data/lib/gooddata/models/columns/reference.rb +57 -0
  83. data/lib/gooddata/models/dashboard_builder.rb +26 -0
  84. data/lib/gooddata/models/data_result.rb +10 -9
  85. data/lib/gooddata/models/domain.rb +131 -0
  86. data/lib/gooddata/models/empty_result.rb +5 -8
  87. data/lib/gooddata/models/facts/facts.rb +8 -0
  88. data/lib/gooddata/models/facts/time_fact.rb +20 -0
  89. data/lib/gooddata/models/folders/attribute_folder.rb +20 -0
  90. data/lib/gooddata/models/folders/fact_folder.rb +20 -0
  91. data/lib/gooddata/models/folders/folders.rb +8 -0
  92. data/lib/gooddata/models/invitation.rb +78 -0
  93. data/lib/gooddata/models/links.rb +6 -6
  94. data/lib/gooddata/models/md_object.rb +25 -0
  95. data/lib/gooddata/models/metadata.rb +160 -62
  96. data/lib/gooddata/models/metadata/attribute.rb +81 -0
  97. data/lib/gooddata/models/metadata/column.rb +61 -0
  98. data/lib/gooddata/models/{dashboard.rb → metadata/dashboard.rb} +12 -7
  99. data/lib/gooddata/models/{data_set.rb → metadata/data_set.rb} +5 -4
  100. data/lib/gooddata/models/metadata/date_dimension.rb +26 -0
  101. data/lib/gooddata/models/metadata/display_form.rb +61 -0
  102. data/lib/gooddata/models/metadata/fact.rb +36 -0
  103. data/lib/gooddata/models/metadata/folder.rb +24 -0
  104. data/lib/gooddata/models/metadata/metadata.rb +8 -0
  105. data/lib/gooddata/models/metadata/metric.rb +197 -0
  106. data/lib/gooddata/models/metadata/report.rb +115 -0
  107. data/lib/gooddata/models/{report_definition.rb → metadata/report_definition.rb} +16 -10
  108. data/lib/gooddata/models/metadata/schema.rb +227 -0
  109. data/lib/gooddata/models/model.rb +38 -1339
  110. data/lib/gooddata/models/models.rb +5 -2
  111. data/lib/gooddata/models/module_constants.rb +29 -0
  112. data/lib/gooddata/models/process.rb +142 -13
  113. data/lib/gooddata/models/profile.rb +4 -6
  114. data/lib/gooddata/models/project.rb +406 -136
  115. data/lib/gooddata/models/project_blueprint.rb +221 -0
  116. data/lib/gooddata/models/project_builder.rb +136 -0
  117. data/lib/gooddata/models/project_creator.rb +138 -0
  118. data/lib/gooddata/models/project_metadata.rb +11 -10
  119. data/lib/gooddata/models/project_role.rb +92 -0
  120. data/lib/gooddata/models/references/date_reference.rb +44 -0
  121. data/lib/gooddata/models/references/references.rb +8 -0
  122. data/lib/gooddata/models/references/time_reference.rb +13 -0
  123. data/lib/gooddata/models/report_data_result.rb +11 -11
  124. data/lib/gooddata/models/schedule.rb +284 -0
  125. data/lib/gooddata/models/schema_blueprint.rb +158 -0
  126. data/lib/gooddata/models/schema_builder.rb +81 -0
  127. data/lib/gooddata/models/tab_builder.rb +23 -0
  128. data/lib/gooddata/models/user.rb +165 -0
  129. data/lib/gooddata/version.rb +1 -1
  130. data/lib/templates/project/data/devs.csv +1 -1
  131. data/lib/templates/project/data/repos.csv +1 -1
  132. data/lib/templates/project/model/model.rb.erb +7 -11
  133. data/spec/bricks/bricks_spec.rb +2 -0
  134. data/spec/data/test-ci-data.csv +2 -0
  135. data/spec/data/test_project_model_spec.json +7 -27
  136. data/spec/helpers/blueprint_helper.rb +2 -0
  137. data/spec/helpers/cli_helper.rb +2 -0
  138. data/spec/helpers/connection_helper.rb +14 -1
  139. data/spec/helpers/project_helper.rb +16 -0
  140. data/spec/helpers/schema_helper.rb +16 -0
  141. data/spec/integration/command_projects_spec.rb +7 -7
  142. data/spec/integration/create_from_template_spec.rb +2 -2
  143. data/spec/integration/full_project_spec.rb +160 -7
  144. data/spec/integration/partial_md_export_import_spec.rb +3 -3
  145. data/spec/logging_in_logging_out_spec.rb +2 -1
  146. data/spec/spec_helper.rb +26 -4
  147. data/spec/unit/bricks/bricks_spec.rb +15 -7
  148. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +2 -0
  149. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +2 -0
  150. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +2 -0
  151. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +2 -0
  152. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +2 -0
  153. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +2 -0
  154. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +2 -0
  155. data/spec/unit/cli/cli_spec.rb +2 -0
  156. data/spec/unit/cli/commands/cmd_api_spec.rb +23 -15
  157. data/spec/unit/cli/commands/cmd_auth_spec.rb +8 -4
  158. data/spec/unit/cli/commands/cmd_domain_spec.rb +82 -0
  159. data/spec/unit/cli/commands/cmd_process_spec.rb +29 -13
  160. data/spec/unit/cli/commands/cmd_project_spec.rb +51 -30
  161. data/spec/unit/cli/commands/cmd_role_spec.rb +44 -0
  162. data/spec/unit/cli/commands/cmd_run_ruby_spec.rb +8 -4
  163. data/spec/unit/cli/commands/cmd_scaffold_spec.rb +48 -11
  164. data/spec/unit/cli/commands/cmd_user_spec.rb +29 -0
  165. data/spec/unit/commands/command_api_spec.rb +1 -1
  166. data/spec/unit/commands/command_auth_spec.rb +100 -18
  167. data/spec/unit/commands/command_dataset_spec.rb +4 -0
  168. data/spec/unit/commands/command_process_spec.rb +9 -4
  169. data/spec/unit/commands/command_projects_spec.rb +10 -6
  170. data/spec/unit/commands/command_scaffold_spec.rb +5 -1
  171. data/spec/unit/commands/command_user_spec.rb +22 -0
  172. data/spec/unit/core/connection_spec.rb +35 -6
  173. data/spec/unit/core/logging_spec.rb +65 -0
  174. data/spec/unit/core/nil_logger_spec.rb +9 -0
  175. data/spec/unit/core/project_spec.rb +51 -0
  176. data/spec/unit/core/rest_spec.rb +33 -0
  177. data/spec/unit/data/guesser_spec.rb +5 -0
  178. data/spec/unit/godzilla/goodzilla_spec.rb +2 -0
  179. data/spec/unit/models/account_settings_spec.rb +28 -0
  180. data/spec/unit/models/anchor_spec.rb +32 -0
  181. data/spec/unit/models/attribute_column_spec.rb +7 -0
  182. data/spec/unit/models/domain_spec.rb +45 -0
  183. data/spec/unit/models/invitation_spec.rb +13 -0
  184. data/spec/unit/models/md_object_spec.rb +47 -0
  185. data/spec/unit/models/metric.rb +92 -0
  186. data/spec/unit/{model → models}/model_spec.rb +9 -7
  187. data/spec/unit/models/project_blueprint_spec.rb +202 -0
  188. data/spec/unit/models/project_creator.rb +73 -0
  189. data/spec/unit/models/project_role_spec.rb +90 -0
  190. data/spec/unit/models/project_spec.rb +143 -0
  191. data/spec/unit/models/schedule_spec.rb +491 -0
  192. data/spec/unit/{model → models}/schema_builder_spec.rb +2 -0
  193. data/spec/unit/{model → models}/tools_spec.rb +13 -7
  194. data/spec/unit/models/user_spec.rb +16 -0
  195. data/test/test_upload.rb +2 -0
  196. metadata +189 -86
  197. data/lib/gooddata/commands/profile.rb +0 -11
  198. data/lib/gooddata/models/attribute.rb +0 -29
  199. data/lib/gooddata/models/display_form.rb +0 -9
  200. data/lib/gooddata/models/fact.rb +0 -19
  201. data/lib/gooddata/models/metric.rb +0 -99
  202. data/lib/gooddata/models/report.rb +0 -89
  203. data/spec/data/blueprint_valid.json +0 -37
  204. data/spec/unit/cli/commands/cmd_profile_spec.rb +0 -16
  205. data/spec/unit/commands/command_profile_spec.rb +0 -18
  206. data/spec/unit/core/core_spec.rb +0 -7
  207. data/spec/unit/model/blueprint_spec.rb +0 -132
  208. data/spec/unit/model/project_blueprint_spec.rb +0 -44
@@ -0,0 +1,55 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative '../metadata/column'
4
+
5
+ module GoodData
6
+ module Model
7
+ ##
8
+ # GoodData display form abstraction. Represents a default representation
9
+ # of an attribute column or an additional representation defined in a LABEL
10
+ # field
11
+ #
12
+ class Label < Column
13
+ attr_accessor :attribute
14
+
15
+ def type_prefix
16
+ 'label'
17
+ end
18
+
19
+ # def initialize(hash, schema)
20
+ def initialize(hash, attribute, schema)
21
+ super hash, schema
22
+ attribute = attribute.nil? ? schema.fields.find { |field| field.name == hash[:reference] } : attribute
23
+ @attribute = attribute
24
+ attribute.labels << self
25
+ end
26
+
27
+ def identifier
28
+ @identifier ||= @attribute.name == name ? super : "#{type_prefix}.#{@schema.name}.#{@attribute.name}.#{name}"
29
+ end
30
+
31
+ def to_maql_create
32
+ "# LABEL FROM LABEL\nALTER ATTRIBUTE {#{@attribute.identifier}} ADD LABELS {#{identifier}}" \
33
+ + " VISUAL (TITLE #{title.inspect}) AS {#{column}};\n"
34
+ end
35
+
36
+ def to_manifest_part(mode)
37
+ {
38
+ 'populates' => [identifier],
39
+ 'mode' => mode,
40
+ 'columnName' => name
41
+ }
42
+ end
43
+
44
+ def column
45
+ "#{@attribute.table}.#{LABEL_COLUMN_PREFIX}#{name}"
46
+ end
47
+
48
+ alias_method :inspect_orig, :inspect
49
+
50
+ def inspect
51
+ inspect_orig.sub(/>$/, " @attribute=#{@attribute.to_s.sub(/>$/, " @name=#{@attribute.name}")}>")
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,57 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative '../metadata/column'
4
+
5
+ module GoodData
6
+ module Model
7
+ ##
8
+ # Reference to another data set
9
+ #
10
+ class Reference < Column
11
+ attr_accessor :reference, :schema_ref
12
+
13
+ def initialize(column, schema)
14
+ super column, schema
15
+ # pp column
16
+ @name = column[:name]
17
+ @reference = column[:reference]
18
+ @schema_ref = column[:dataset]
19
+ @schema = schema
20
+ end
21
+
22
+ ##
23
+ # Generates an identifier of the referencing attribute using the
24
+ # schema name derived from schemaReference and column name derived
25
+ # from the reference key.
26
+ #
27
+ def identifier
28
+ @identifier ||= "#{ATTRIBUTE_PREFIX}.#{@schema_ref}.#{@reference}"
29
+ end
30
+
31
+ def key
32
+ "#{@name}_id"
33
+ end
34
+
35
+ def label_column
36
+ "#{LABEL_PREFIX}.#{@schema_ref}.#{@reference}"
37
+ end
38
+
39
+ def to_maql_create
40
+ "ALTER ATTRIBUTE {#{identifier}} ADD KEYS {#{@schema.table}.#{key}};\n"
41
+ end
42
+
43
+ def to_maql_drop
44
+ "ALTER ATTRIBUTE {#{identifier} DROP KEYS {#{@schema.table}.#{key}};\n"
45
+ end
46
+
47
+ def to_manifest_part(mode)
48
+ {
49
+ 'populates' => [label_column],
50
+ 'mode' => mode,
51
+ 'columnName' => name,
52
+ 'referenceKey' => 1
53
+ }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: UTF-8
2
+
3
+ module GoodData
4
+ module Model
5
+ class DashboardBuilder
6
+ def initialize(title)
7
+ @title = title
8
+ @tabs = []
9
+ end
10
+
11
+ def add_tab(tab, &block)
12
+ tb = TabBuilder.new(tab)
13
+ block.call(tb)
14
+ @tabs << tb
15
+ tb
16
+ end
17
+
18
+ def to_hash
19
+ {
20
+ :name => @name,
21
+ :tabs => @tabs.map { |tab| tab.to_hash }
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,7 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require 'active_support/all'
4
-
5
3
  require_relative '../extensions/big_decimal'
6
4
 
7
5
  module GoodData
@@ -16,21 +14,24 @@ module GoodData
16
14
  puts to_s
17
15
  end
18
16
 
19
- def to_s(options={})
20
- with_indices = options[:index] || false
17
+ def to_s(options = {})
18
+ with_indices = options[:index]
19
+
21
20
  a = to_table.to_a
22
21
  data = a.transpose
23
22
  data.unshift((1..a.length).to_a) if with_indices
24
- data.each_with_index.map { |col, i|
23
+ processed_data = data.each_with_index.map do |col, i|
25
24
  col.unshift(i.zero? ? nil : i) if with_indices # inserts row labels #
26
25
  w = col.map { |cell| cell.to_s.length }.max # w = "column width" #
27
- col.each_with_index.map { |cell, i|
28
- i.zero? ? cell.to_s.center(w) : cell.to_s.ljust(w) } # alligns the column #
29
- }.transpose.map { |row| "[#{row.join(' | ')}]" }.unshift('').join("\n")
26
+ col.each_with_index.map do |cell, j|
27
+ j.zero? ? cell.to_s.center(w) : cell.to_s.ljust(w)
28
+ end # alligns the column #
29
+ end
30
+ processed_data.transpose.map { |row| "[#{row.join(' | ')}]" }.unshift('').join("\n")
30
31
  end
31
32
 
32
33
  def to_table
33
- raise 'Should be implemented in subclass'
34
+ fail 'Should be implemented in subclass'
34
35
  end
35
36
  end
36
37
  end
@@ -0,0 +1,131 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative 'account_settings'
4
+
5
+ module GoodData
6
+ class Domain
7
+ attr_reader :name
8
+
9
+ USERS_OPTIONS = { :offset => 0, :limit => 1000 }
10
+
11
+ class << self
12
+ # Looks for domain
13
+ #
14
+ # @param domain_name [String] Domain name
15
+ # @return [String] Domain object instance
16
+ def [](domain_name, options = {})
17
+ fail "Using pseudo-id 'all' is not supported by GoodData::Domain" if domain_name.to_s == 'all'
18
+ GoodData::Domain.new(domain_name)
19
+ end
20
+
21
+ # Adds user to domain
22
+ #
23
+ # @param domain [String] Domain name
24
+ # @param login [String] Login of user to be invited
25
+ # @param password [String] Default preset password
26
+ # @return [Object] Raw response
27
+ def add_user(domain, login, password)
28
+ data = {
29
+ :accountSetting => {
30
+ :login => login,
31
+ :firstName => 'FirstName',
32
+ :lastName => 'LastName',
33
+ :password => password,
34
+ :verifyPassword => password,
35
+ :email => login
36
+ }
37
+ }
38
+
39
+ url = "/gdc/account/domains/#{domain}/users"
40
+ GoodData.post(url, data)
41
+ end
42
+
43
+ # Finds user in domain by login
44
+ #
45
+ # @param domain [String] Domain name
46
+ # @param login [String] User login
47
+ # @return [GoodData::AccountSettings] User account settings
48
+ def find_user_by_login(domain, login)
49
+ url = "/gdc/account/domains/#{domain}/users?login=#{login}"
50
+ tmp = GoodData.get url
51
+ items = tmp['accountSettings']['items'] if tmp['accountSettings']
52
+ if items && items.length > 0
53
+ return GoodData::AccountSettings.new(items.first)
54
+ end
55
+ nil
56
+ end
57
+
58
+ # Returns list of users for domain specified
59
+ # @param [String] domain Domain to list the users for
60
+ # @param [Hash] opts Options.
61
+ # @option opts [Number] :offset The subject
62
+ # @option opts [Number] :limit From address
63
+ def users(domain, opts = USERS_OPTIONS)
64
+ result = []
65
+
66
+ options = USERS_OPTIONS.merge(opts)
67
+
68
+ tmp = GoodData.get("/gdc/account/domains/#{domain}/users?offset=#{options[:offset]}&limit=#{options[:limit]}")
69
+ tmp['accountSettings']['items'].each do |account|
70
+ result << GoodData::AccountSettings.new(account)
71
+ end
72
+
73
+ result
74
+ end
75
+ end
76
+
77
+ def initialize(domain_name)
78
+ @name = domain_name
79
+ end
80
+
81
+ # Adds user to domain
82
+ #
83
+ # @param login [String] Login of user to be invited
84
+ # @param password [String] Default preset password
85
+ # @return [Object] Raw response
86
+ #
87
+ # Example
88
+ #
89
+ # GoodData.connect 'tomas.korcak@gooddata.com' 'your-password'
90
+ # domain = GoodData::Domain['gooddata-tomas-korcak']
91
+ # domain.add_user 'joe.doe@example', 'sup3rS3cr3tP4ssW0rtH'
92
+ #
93
+ def add_user(login, password)
94
+ GoodData::Domain.add_user(name, login, password)
95
+ end
96
+
97
+ # Finds user in domain by login
98
+ #
99
+ # @param login [String] User login
100
+ # @return [GoodData::AccountSettings] User account settings
101
+ def find_user_by_login(login)
102
+ GoodData::Domain.find_user_by_login(name, login)
103
+ end
104
+
105
+ # List users in domain
106
+ #
107
+ # @param [Hash] opts Additional user listing options.
108
+ # @option opts [Number] :offset Offset to start listing from
109
+ # @option opts [Number] :limit Limit of users to be listed
110
+ # @return [Array<GoodData::AccountSettings>] List of user account settings
111
+ #
112
+ # Example
113
+ #
114
+ # GoodData.connect 'tomas.korcak@gooddata.com' 'your-password'
115
+ # domain = GoodData::Domain['gooddata-tomas-korcak']
116
+ # pp domain.users
117
+ #
118
+ def users(opts = USERS_OPTIONS)
119
+ GoodData::Domain.users(name, opts)
120
+ end
121
+
122
+ private
123
+
124
+ # Private setter of domain name. Used by constructor not available for external users.
125
+ #
126
+ # @param domain_name [String] Domain name to be set.
127
+ def name=(domain_name) # rubocop:disable TrivialAccessors
128
+ @name = domain_name
129
+ end
130
+ end
131
+ end
@@ -4,6 +4,8 @@ require_relative 'data_result.rb'
4
4
 
5
5
  module GoodData
6
6
  class EmptyResult < DataResult
7
+ attr_reader :table
8
+
7
9
  def initialize(data, options = {})
8
10
  super(data)
9
11
  @options = options
@@ -19,15 +21,10 @@ module GoodData
19
21
  # CSV::Table.new([GoodData::Row.new([],[],false)])
20
22
  end
21
23
 
22
- def to_table
23
- @table
24
- end
25
-
26
- def without_column_headers
27
- @table
28
- end
24
+ alias_method :to_table, :table
25
+ alias_method :without_column_headers, :table
29
26
 
30
- def == (otherDataResult)
27
+ def ==(other)
31
28
  false
32
29
  end
33
30
 
@@ -0,0 +1,8 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'pathname'
4
+
5
+ base = Pathname(__FILE__).dirname.expand_path
6
+ Dir.glob(base + '*.rb').each do |file|
7
+ require file
8
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative '../metadata/fact'
4
+
5
+ module GoodData
6
+ module Model
7
+ ##
8
+ # Fact representation of a time of a day
9
+ #
10
+ class TimeFact < Fact
11
+ def column_prefix
12
+ TIME_COLUMN_PREFIX
13
+ end
14
+
15
+ def type_prefix
16
+ TIME_FACT_PREFIX
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative '../metadata/folder'
4
+
5
+ module GoodData
6
+ module Model
7
+ ##
8
+ # GoodData attribute folder abstraction
9
+ #
10
+ class AttributeFolder < Folder
11
+ def type
12
+ 'ATTRIBUTE'
13
+ end
14
+
15
+ def type_prefix
16
+ 'dim'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative '../metadata/folder'
4
+
5
+ module GoodData
6
+ module Model
7
+ ##
8
+ # GoodData fact folder abstraction
9
+ #
10
+ class FactFolder < Folder
11
+ def type
12
+ 'FACT'
13
+ end
14
+
15
+ def type_prefix
16
+ 'ffld'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'pathname'
4
+
5
+ base = Pathname(__FILE__).dirname.expand_path
6
+ Dir.glob(base + '*.rb').each do |file|
7
+ require file
8
+ end
@@ -0,0 +1,78 @@
1
+ # encoding: UTF-8
2
+
3
+ module GoodData
4
+ class Invitation
5
+ def initialize(json)
6
+ @json = json
7
+ end
8
+
9
+ def author
10
+ # TODO: Return object instead
11
+ @json['invitation']['meta']['author']
12
+ end
13
+
14
+ def contributor
15
+ # TODO: Return object instead
16
+ @json['invitation']['meta']['contributor']
17
+ end
18
+
19
+ def created
20
+ DateTime.parse(@json['invitation']['meta']['created'])
21
+ end
22
+
23
+ def email
24
+ @json['invitation']['content']['email']
25
+ end
26
+
27
+ def first_name
28
+ @json['invitation']['content']['firstname']
29
+ end
30
+
31
+ def first_name
32
+ @json['invitation']['content']['firstname']
33
+ end
34
+
35
+ def phone
36
+ @json['invitation']['content']['phone']
37
+ end
38
+
39
+ def profile
40
+ # TODO: Return object instead
41
+ @json['invitation']['links']['profile']
42
+ end
43
+
44
+ def project
45
+ # TODO: Return object instead
46
+ @json['invitation']['links']['project']
47
+ end
48
+
49
+ def project_name
50
+ @json['invitation']['content']['projectname']
51
+ end
52
+
53
+ def role
54
+ # TODO: Return object instead
55
+ @json['invitation']['content']['role']
56
+ end
57
+
58
+ def status
59
+ @json['invitation']['content']['status']
60
+ end
61
+
62
+ def summary
63
+ @json['invitation']['content']['summary']
64
+ end
65
+
66
+ def title
67
+ @json['invitation']['content']['title']
68
+ end
69
+
70
+ def updated
71
+ DateTime.parse(@json['invitation']['meta']['updated'])
72
+ end
73
+
74
+ def uri
75
+ @json['invitation']['links']['self']
76
+ end
77
+ end
78
+ end