gooddata-edge 0.6.27.edge

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.
Files changed (364) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitignore +36 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +89 -0
  6. data/.yardopts +22 -0
  7. data/CHANGELOG.md +196 -0
  8. data/CLI.md +439 -0
  9. data/DEPENDENCIES.md +817 -0
  10. data/Gemfile +4 -0
  11. data/Guardfile +5 -0
  12. data/LICENSE +22 -0
  13. data/LICENSE.rb +5 -0
  14. data/README.md +75 -0
  15. data/Rakefile +179 -0
  16. data/TODO.md +32 -0
  17. data/authors.sh +4 -0
  18. data/bin/gooddata +7 -0
  19. data/dependency_decisions.yml +104 -0
  20. data/gooddata +9 -0
  21. data/gooddata.gemspec +63 -0
  22. data/lib/gooddata.rb +31 -0
  23. data/lib/gooddata/app/app.rb +16 -0
  24. data/lib/gooddata/bricks/base_downloader.rb +86 -0
  25. data/lib/gooddata/bricks/brick.rb +38 -0
  26. data/lib/gooddata/bricks/bricks.rb +15 -0
  27. data/lib/gooddata/bricks/middleware/aws_middleware.rb +29 -0
  28. data/lib/gooddata/bricks/middleware/base_middleware.rb +56 -0
  29. data/lib/gooddata/bricks/middleware/bench_middleware.rb +24 -0
  30. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
  31. data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +20 -0
  32. data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
  33. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
  34. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +39 -0
  35. data/lib/gooddata/bricks/middleware/logger_middleware.rb +29 -0
  36. data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
  37. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +61 -0
  38. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
  39. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
  40. data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
  41. data/lib/gooddata/bricks/pipeline.rb +32 -0
  42. data/lib/gooddata/bricks/utils.rb +18 -0
  43. data/lib/gooddata/cli/cli.rb +27 -0
  44. data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
  45. data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
  46. data/lib/gooddata/cli/commands/project_cmd.rb +45 -0
  47. data/lib/gooddata/cli/hooks.rb +57 -0
  48. data/lib/gooddata/cli/shared.rb +61 -0
  49. data/lib/gooddata/cli/terminal.rb +20 -0
  50. data/lib/gooddata/client.rb +67 -0
  51. data/lib/gooddata/commands/api.rb +64 -0
  52. data/lib/gooddata/commands/auth.rb +107 -0
  53. data/lib/gooddata/commands/base.rb +12 -0
  54. data/lib/gooddata/commands/commands.rb +12 -0
  55. data/lib/gooddata/commands/datasets.rb +148 -0
  56. data/lib/gooddata/commands/datawarehouse.rb +20 -0
  57. data/lib/gooddata/commands/domain.rb +40 -0
  58. data/lib/gooddata/commands/process.rb +67 -0
  59. data/lib/gooddata/commands/project.rb +175 -0
  60. data/lib/gooddata/commands/projects.rb +20 -0
  61. data/lib/gooddata/commands/role.rb +36 -0
  62. data/lib/gooddata/commands/runners.rb +47 -0
  63. data/lib/gooddata/commands/scaffold.rb +69 -0
  64. data/lib/gooddata/commands/user.rb +39 -0
  65. data/lib/gooddata/connection.rb +127 -0
  66. data/lib/gooddata/core/core.rb +12 -0
  67. data/lib/gooddata/core/logging.rb +105 -0
  68. data/lib/gooddata/core/nil_logger.rb +23 -0
  69. data/lib/gooddata/core/project.rb +74 -0
  70. data/lib/gooddata/core/rest.rb +149 -0
  71. data/lib/gooddata/core/user.rb +20 -0
  72. data/lib/gooddata/data/data.rb +12 -0
  73. data/lib/gooddata/data/guesser.rb +122 -0
  74. data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
  75. data/lib/gooddata/exceptions/command_failed.rb +11 -0
  76. data/lib/gooddata/exceptions/exceptions.rb +12 -0
  77. data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
  78. data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
  79. data/lib/gooddata/exceptions/malformed_user.rb +15 -0
  80. data/lib/gooddata/exceptions/no_project_error.rb +15 -0
  81. data/lib/gooddata/exceptions/object_migration.rb +32 -0
  82. data/lib/gooddata/exceptions/project_not_found.rb +13 -0
  83. data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
  84. data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
  85. data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
  86. data/lib/gooddata/exceptions/validation_error.rb +16 -0
  87. data/lib/gooddata/extensions/big_decimal.rb +17 -0
  88. data/lib/gooddata/extensions/enumerable.rb +39 -0
  89. data/lib/gooddata/extensions/extensions.rb +10 -0
  90. data/lib/gooddata/extensions/false.rb +15 -0
  91. data/lib/gooddata/extensions/hash.rb +38 -0
  92. data/lib/gooddata/extensions/nil.rb +15 -0
  93. data/lib/gooddata/extensions/numeric.rb +15 -0
  94. data/lib/gooddata/extensions/object.rb +27 -0
  95. data/lib/gooddata/extensions/symbol.rb +15 -0
  96. data/lib/gooddata/extensions/true.rb +15 -0
  97. data/lib/gooddata/extract.rb +21 -0
  98. data/lib/gooddata/goodzilla/goodzilla.rb +159 -0
  99. data/lib/gooddata/helpers/auth_helpers.rb +75 -0
  100. data/lib/gooddata/helpers/csv_helper.rb +61 -0
  101. data/lib/gooddata/helpers/data_helper.rb +116 -0
  102. data/lib/gooddata/helpers/global_helpers.rb +331 -0
  103. data/lib/gooddata/helpers/global_helpers_params.rb +172 -0
  104. data/lib/gooddata/helpers/helpers.rb +10 -0
  105. data/lib/gooddata/mixins/author.rb +26 -0
  106. data/lib/gooddata/mixins/content_getter.rb +15 -0
  107. data/lib/gooddata/mixins/content_property_reader.rb +17 -0
  108. data/lib/gooddata/mixins/content_property_writer.rb +17 -0
  109. data/lib/gooddata/mixins/contributor.rb +20 -0
  110. data/lib/gooddata/mixins/data_getter.rb +15 -0
  111. data/lib/gooddata/mixins/data_property_reader.rb +19 -0
  112. data/lib/gooddata/mixins/data_property_writer.rb +19 -0
  113. data/lib/gooddata/mixins/inspector.rb +53 -0
  114. data/lib/gooddata/mixins/is_attribute.rb +17 -0
  115. data/lib/gooddata/mixins/is_dimension.rb +17 -0
  116. data/lib/gooddata/mixins/is_fact.rb +17 -0
  117. data/lib/gooddata/mixins/is_label.rb +19 -0
  118. data/lib/gooddata/mixins/links.rb +15 -0
  119. data/lib/gooddata/mixins/md_finders.rb +77 -0
  120. data/lib/gooddata/mixins/md_grantees.rb +42 -0
  121. data/lib/gooddata/mixins/md_id_to_uri.rb +34 -0
  122. data/lib/gooddata/mixins/md_json.rb +15 -0
  123. data/lib/gooddata/mixins/md_lock.rb +87 -0
  124. data/lib/gooddata/mixins/md_object_id.rb +15 -0
  125. data/lib/gooddata/mixins/md_object_indexer.rb +64 -0
  126. data/lib/gooddata/mixins/md_object_query.rb +128 -0
  127. data/lib/gooddata/mixins/md_relations.rb +43 -0
  128. data/lib/gooddata/mixins/meta_getter.rb +17 -0
  129. data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
  130. data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
  131. data/lib/gooddata/mixins/mixins.rb +19 -0
  132. data/lib/gooddata/mixins/not_attribute.rb +17 -0
  133. data/lib/gooddata/mixins/not_exportable.rb +15 -0
  134. data/lib/gooddata/mixins/not_fact.rb +17 -0
  135. data/lib/gooddata/mixins/not_group.rb +17 -0
  136. data/lib/gooddata/mixins/not_label.rb +19 -0
  137. data/lib/gooddata/mixins/not_metric.rb +19 -0
  138. data/lib/gooddata/mixins/obj_id.rb +15 -0
  139. data/lib/gooddata/mixins/rest_getters.rb +17 -0
  140. data/lib/gooddata/mixins/rest_resource.rb +47 -0
  141. data/lib/gooddata/mixins/root_key_getter.rb +15 -0
  142. data/lib/gooddata/mixins/root_key_setter.rb +15 -0
  143. data/lib/gooddata/mixins/timestamps.rb +19 -0
  144. data/lib/gooddata/mixins/to_json.rb +11 -0
  145. data/lib/gooddata/mixins/uri_getter.rb +9 -0
  146. data/lib/gooddata/models/blueprint/anchor_field.rb +64 -0
  147. data/lib/gooddata/models/blueprint/attribute_field.rb +29 -0
  148. data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
  149. data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
  150. data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
  151. data/lib/gooddata/models/blueprint/dataset_blueprint.rb +449 -0
  152. data/lib/gooddata/models/blueprint/date_dimension.rb +14 -0
  153. data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
  154. data/lib/gooddata/models/blueprint/label_field.rb +43 -0
  155. data/lib/gooddata/models/blueprint/project_blueprint.rb +746 -0
  156. data/lib/gooddata/models/blueprint/project_builder.rb +83 -0
  157. data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
  158. data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
  159. data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
  160. data/lib/gooddata/models/blueprint/to_manifest.rb +181 -0
  161. data/lib/gooddata/models/blueprint/to_wire.rb +154 -0
  162. data/lib/gooddata/models/client.rb +182 -0
  163. data/lib/gooddata/models/client_synchronization_result.rb +31 -0
  164. data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
  165. data/lib/gooddata/models/datawarehouse.rb +92 -0
  166. data/lib/gooddata/models/domain.rb +479 -0
  167. data/lib/gooddata/models/execution.rb +115 -0
  168. data/lib/gooddata/models/execution_detail.rb +81 -0
  169. data/lib/gooddata/models/from_wire.rb +160 -0
  170. data/lib/gooddata/models/invitation.rb +75 -0
  171. data/lib/gooddata/models/links.rb +50 -0
  172. data/lib/gooddata/models/membership.rb +441 -0
  173. data/lib/gooddata/models/metadata.rb +272 -0
  174. data/lib/gooddata/models/metadata/attribute.rb +134 -0
  175. data/lib/gooddata/models/metadata/dashboard.rb +108 -0
  176. data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
  177. data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
  178. data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
  179. data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
  180. data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
  181. data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
  182. data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
  183. data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
  184. data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
  185. data/lib/gooddata/models/metadata/dataset.rb +64 -0
  186. data/lib/gooddata/models/metadata/dimension.rb +54 -0
  187. data/lib/gooddata/models/metadata/fact.rb +44 -0
  188. data/lib/gooddata/models/metadata/label.rb +128 -0
  189. data/lib/gooddata/models/metadata/metadata.rb +12 -0
  190. data/lib/gooddata/models/metadata/metric.rb +198 -0
  191. data/lib/gooddata/models/metadata/report.rb +247 -0
  192. data/lib/gooddata/models/metadata/report_definition.rb +264 -0
  193. data/lib/gooddata/models/metadata/scheduled_mail.rb +274 -0
  194. data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
  195. data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
  196. data/lib/gooddata/models/metadata/variable.rb +91 -0
  197. data/lib/gooddata/models/model.rb +282 -0
  198. data/lib/gooddata/models/models.rb +12 -0
  199. data/lib/gooddata/models/module_constants.rb +31 -0
  200. data/lib/gooddata/models/process.rb +316 -0
  201. data/lib/gooddata/models/profile.rb +426 -0
  202. data/lib/gooddata/models/project.rb +1514 -0
  203. data/lib/gooddata/models/project_creator.rb +126 -0
  204. data/lib/gooddata/models/project_metadata.rb +67 -0
  205. data/lib/gooddata/models/project_role.rb +79 -0
  206. data/lib/gooddata/models/report_data_result.rb +266 -0
  207. data/lib/gooddata/models/schedule.rb +518 -0
  208. data/lib/gooddata/models/segment.rb +201 -0
  209. data/lib/gooddata/models/tab_builder.rb +27 -0
  210. data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
  211. data/lib/gooddata/models/user_filters/user_filter.rb +100 -0
  212. data/lib/gooddata/models/user_filters/user_filter_builder.rb +512 -0
  213. data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
  214. data/lib/gooddata/models/user_filters/variable_user_filter.rb +31 -0
  215. data/lib/gooddata/models/user_group.rb +241 -0
  216. data/lib/gooddata/rest/README.md +37 -0
  217. data/lib/gooddata/rest/client.rb +389 -0
  218. data/lib/gooddata/rest/connection.rb +765 -0
  219. data/lib/gooddata/rest/object.rb +69 -0
  220. data/lib/gooddata/rest/object_factory.rb +76 -0
  221. data/lib/gooddata/rest/resource.rb +27 -0
  222. data/lib/gooddata/rest/rest.rb +24 -0
  223. data/lib/gooddata/version.rb +23 -0
  224. data/lib/templates/bricks/brick.rb.erb +7 -0
  225. data/lib/templates/bricks/main.rb.erb +5 -0
  226. data/lib/templates/project/Goodfile.erb +4 -0
  227. data/lib/templates/project/data/commits.csv +4 -0
  228. data/lib/templates/project/data/devs.csv +4 -0
  229. data/lib/templates/project/data/repos.csv +3 -0
  230. data/lib/templates/project/model/model.rb.erb +20 -0
  231. data/spec/bricks/bricks_spec.rb +112 -0
  232. data/spec/bricks/default-config.json +8 -0
  233. data/spec/data/.gooddata +4 -0
  234. data/spec/data/blueprints/additional_dataset_module.json +32 -0
  235. data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
  236. data/spec/data/blueprints/invalid_blueprint.json +103 -0
  237. data/spec/data/blueprints/m_n_model.json +104 -0
  238. data/spec/data/blueprints/model_module.json +25 -0
  239. data/spec/data/blueprints/test_blueprint.json +38 -0
  240. data/spec/data/blueprints/test_project_model_spec.json +106 -0
  241. data/spec/data/cc/data/source/commits.csv +4 -0
  242. data/spec/data/cc/data/source/devs.csv +4 -0
  243. data/spec/data/cc/data/source/repos.csv +3 -0
  244. data/spec/data/cc/devel.prm +0 -0
  245. data/spec/data/cc/graph/graph.grf +11 -0
  246. data/spec/data/cc/workspace.prm +19 -0
  247. data/spec/data/column_based_permissions.csv +7 -0
  248. data/spec/data/column_based_permissions2.csv +6 -0
  249. data/spec/data/gd_gse_data_blueprint.json +1371 -0
  250. data/spec/data/gd_gse_data_manifest.json +1424 -0
  251. data/spec/data/gd_gse_data_model.json +1772 -0
  252. data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
  253. data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
  254. data/spec/data/hello_world_process/hello_world.rb +9 -0
  255. data/spec/data/hello_world_process/hello_world.zip +0 -0
  256. data/spec/data/line_based_permissions.csv +3 -0
  257. data/spec/data/manifests/test_blueprint.json +32 -0
  258. data/spec/data/manifests/test_project.json +107 -0
  259. data/spec/data/reports/left_attr_report.json +108 -0
  260. data/spec/data/reports/metric_only_one_line.json +83 -0
  261. data/spec/data/reports/report_1.json +197 -0
  262. data/spec/data/reports/top_attr_report.json +108 -0
  263. data/spec/data/ruby_params_process/ruby_params.rb +9 -0
  264. data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
  265. data/spec/data/ruby_process/process.rb +8 -0
  266. data/spec/data/ruby_process/stuff.txt +1 -0
  267. data/spec/data/superfluous_titles_view.json +81 -0
  268. data/spec/data/test-ci-data.csv +2 -0
  269. data/spec/data/users.csv +12 -0
  270. data/spec/data/wire_models/model_view.json +1775 -0
  271. data/spec/data/wire_models/nu_model.json +3046 -0
  272. data/spec/data/wire_models/test_blueprint.json +63 -0
  273. data/spec/data/wire_test_project.json +150 -0
  274. data/spec/environment/default.rb +41 -0
  275. data/spec/environment/develop.rb +31 -0
  276. data/spec/environment/environment.rb +18 -0
  277. data/spec/environment/hotfix.rb +21 -0
  278. data/spec/environment/production.rb +35 -0
  279. data/spec/environment/release.rb +21 -0
  280. data/spec/environment/staging.rb +30 -0
  281. data/spec/environment/staging_3.rb +36 -0
  282. data/spec/helpers/blueprint_helper.rb +26 -0
  283. data/spec/helpers/cli_helper.rb +36 -0
  284. data/spec/helpers/connection_helper.rb +41 -0
  285. data/spec/helpers/crypto_helper.rb +17 -0
  286. data/spec/helpers/csv_helper.rb +18 -0
  287. data/spec/helpers/process_helper.rb +33 -0
  288. data/spec/helpers/project_helper.rb +59 -0
  289. data/spec/helpers/schedule_helper.rb +31 -0
  290. data/spec/helpers/spec_helper.rb +15 -0
  291. data/spec/integration/blueprint_updates_spec.rb +101 -0
  292. data/spec/integration/blueprint_with_grain_spec.rb +72 -0
  293. data/spec/integration/clients_spec.rb +134 -0
  294. data/spec/integration/command_datawarehouse_spec.rb +39 -0
  295. data/spec/integration/command_projects_spec.rb +32 -0
  296. data/spec/integration/create_from_template_spec.rb +22 -0
  297. data/spec/integration/create_project_spec.rb +24 -0
  298. data/spec/integration/date_dim_switch_spec.rb +142 -0
  299. data/spec/integration/deprecated_load_spec.rb +58 -0
  300. data/spec/integration/full_process_schedule_spec.rb +298 -0
  301. data/spec/integration/full_project_spec.rb +569 -0
  302. data/spec/integration/over_to_user_filters_spec.rb +94 -0
  303. data/spec/integration/partial_md_export_import_spec.rb +42 -0
  304. data/spec/integration/project_spec.rb +264 -0
  305. data/spec/integration/rest_spec.rb +213 -0
  306. data/spec/integration/schedule_spec.rb +626 -0
  307. data/spec/integration/segments_spec.rb +141 -0
  308. data/spec/integration/user_filters_spec.rb +290 -0
  309. data/spec/integration/user_group_spec.rb +127 -0
  310. data/spec/integration/variables_spec.rb +188 -0
  311. data/spec/logging_in_logging_out_spec.rb +93 -0
  312. data/spec/spec_helper.rb +95 -0
  313. data/spec/unit/bricks/bricks_spec.rb +35 -0
  314. data/spec/unit/bricks/middleware/aws_middelware_spec.rb +51 -0
  315. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
  316. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
  317. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
  318. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +15 -0
  319. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
  320. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
  321. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
  322. data/spec/unit/cli/cli_spec.rb +17 -0
  323. data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
  324. data/spec/unit/commands/command_projects_spec.rb +22 -0
  325. data/spec/unit/core/connection_spec.rb +57 -0
  326. data/spec/unit/core/logging_spec.rb +133 -0
  327. data/spec/unit/core/nil_logger_spec.rb +13 -0
  328. data/spec/unit/core/project_spec.rb +54 -0
  329. data/spec/unit/extensions/hash_spec.rb +23 -0
  330. data/spec/unit/godzilla/goodzilla_spec.rb +78 -0
  331. data/spec/unit/helpers/csv_helper_spec.rb +22 -0
  332. data/spec/unit/helpers/data_helper_spec.rb +61 -0
  333. data/spec/unit/helpers/global_helpers_spec.rb +111 -0
  334. data/spec/unit/helpers_spec.rb +86 -0
  335. data/spec/unit/models/blueprint/attributes_spec.rb +29 -0
  336. data/spec/unit/models/blueprint/dataset_spec.rb +121 -0
  337. data/spec/unit/models/blueprint/labels_spec.rb +44 -0
  338. data/spec/unit/models/blueprint/project_blueprint_spec.rb +648 -0
  339. data/spec/unit/models/blueprint/reference_spec.rb +29 -0
  340. data/spec/unit/models/blueprint/schema_builder_spec.rb +38 -0
  341. data/spec/unit/models/blueprint/to_wire_spec.rb +174 -0
  342. data/spec/unit/models/domain_spec.rb +144 -0
  343. data/spec/unit/models/execution_spec.rb +108 -0
  344. data/spec/unit/models/from_wire_spec.rb +296 -0
  345. data/spec/unit/models/invitation_spec.rb +17 -0
  346. data/spec/unit/models/membership_spec.rb +132 -0
  347. data/spec/unit/models/metadata_spec.rb +104 -0
  348. data/spec/unit/models/metric_spec.rb +117 -0
  349. data/spec/unit/models/model_spec.rb +82 -0
  350. data/spec/unit/models/params_spec.rb +118 -0
  351. data/spec/unit/models/profile_spec.rb +215 -0
  352. data/spec/unit/models/project_creator_spec.rb +127 -0
  353. data/spec/unit/models/project_role_spec.rb +94 -0
  354. data/spec/unit/models/project_spec.rb +162 -0
  355. data/spec/unit/models/report_result_data_spec.rb +199 -0
  356. data/spec/unit/models/schedule_spec.rb +418 -0
  357. data/spec/unit/models/to_manifest_spec.rb +63 -0
  358. data/spec/unit/models/unit_project_spec.rb +125 -0
  359. data/spec/unit/models/user_filters_spec.rb +95 -0
  360. data/spec/unit/models/variable_spec.rb +265 -0
  361. data/spec/unit/rest/polling_spec.rb +89 -0
  362. data/spec/unit/rest/resource_spec.rb +10 -0
  363. data/yard-server.sh +3 -0
  364. metadata +1125 -0
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "lib/gooddata/cli/cli"
4
+
5
+ require_relative 'lib/gooddata/models/domain'
6
+
7
+ res = GoodData::CLI.main(ARGV)
8
+
9
+ exit(res)
@@ -0,0 +1,63 @@
1
+ # encoding: utf-8
2
+ $LOAD_PATH.push File.expand_path('../lib/', __FILE__)
3
+ require 'gooddata/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'gooddata-edge'
7
+ s.version = GoodData::VERSION
8
+ s.licenses = ['BSD']
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
11
+ s.authors = [
12
+ 'Pavel Kolesnikov',
13
+ 'Thomas Watson Steen',
14
+ 'Tomas Svarovsky',
15
+ 'Tomas Korcak'
16
+ ]
17
+
18
+ s.summary = 'A convenient Ruby wrapper around the GoodData RESTful API'
19
+ s.description = 'Use the GoodData::Client class to integrate GoodData into your own application or use the CLI to work with GoodData directly from the command line.'
20
+ s.email = 'pavel@gooddata.com'
21
+ s.extra_rdoc_files = %w(LICENSE README.md)
22
+
23
+ s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
24
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
26
+
27
+ s.homepage = 'http://github.com/gooddata/gooddata-ruby'
28
+ s.require_paths = ['lib']
29
+
30
+ s.add_development_dependency 'bundler'
31
+ s.add_development_dependency 'debase', '~> 0.1', '>= 0.1.7' if !ENV['TRAVIS_BUILD'] && RUBY_VERSION >= '2.0.0'
32
+ s.add_development_dependency 'license_finder', '~> 2.0', '>= 2.0.4'
33
+ s.add_development_dependency 'rake', '~> 10.4', '>= 10.4.2'
34
+ s.add_development_dependency 'rake-notes', '~> 0.2', '>= 0.2.0'
35
+ s.add_development_dependency 'redcarpet', '~> 3.1', '>= 3.1.1' if RUBY_PLATFORM != 'java'
36
+ s.add_development_dependency 'rspec', '~> 3.4', '>= 3.4.0'
37
+ s.add_development_dependency 'rspec-expectations', '~> 3.4', '>= 3.4.0'
38
+ s.add_development_dependency 'rubocop', '~> 0.34', '>= 0.34.0'
39
+ s.add_development_dependency 'ruby-debug-ide', '~> 0.4' if !ENV['TRAVIS_BUILD'] && RUBY_VERSION >= '2.0.0'
40
+ s.add_development_dependency 'simplecov', '~> 0.10', '>= 0.10.0'
41
+ s.add_development_dependency 'webmock', '~> 1.21', '>= 1.21.0'
42
+ s.add_development_dependency 'yard', '~> 0.8.7.6'
43
+ s.add_development_dependency 'yard-rspec', '~> 0.1'
44
+ s.add_development_dependency 'ZenTest', '~> 4.10', '>= 4.11.0'
45
+
46
+ #s.add_dependency 'aws-sdk', '~> 1.45'
47
+ s.add_dependency 'docile', '~> 1.1', '>= 1.1.5'
48
+ s.add_dependency 'erubis', '~> 2.7', '>= 2.7.0'
49
+ s.add_dependency 'gli', '~> 2.13', '>= 2.13.2'
50
+ s.add_dependency 'highline', '~> 1.7', '>= 1.7.3'
51
+ s.add_dependency 'json_pure', '~> 2', '>= 1.8.2'
52
+ s.add_dependency 'multi_json', '~> 1.11', '>= 1.11.2'
53
+ s.add_dependency 'parseconfig', '~> 1.0', '>= 1.0.6'
54
+ s.add_dependency 'pmap', '~> 1.0', '>= 1.0.2'
55
+ s.add_dependency 'pry'
56
+ s.add_dependency 'restforce', '~> 2.1', '>= 2.1.1'
57
+ s.add_dependency 'rest-client', '~> 1.8', '>= 1.8.0'
58
+ s.add_dependency 'rubyzip', '~> 1.1', '>= 1.1.7'
59
+ s.add_dependency 'salesforce_bulk_query-edge', '~> 0.2', '>= 0.2.1'
60
+ s.add_dependency 'terminal-table', '~> 1.5', '>= 1.5.2'
61
+ s.add_dependency 'aws-sdk', '~> 2.0'
62
+ s.add_dependency 'thread_safe'
63
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'pmap'
8
+ $pmap_default_thread_count = 20 # rubocop:disable GlobalVars
9
+
10
+ # GoodData Module
11
+ module GoodData
12
+ end
13
+
14
+ # Modules
15
+ require_relative 'gooddata/bricks/bricks'
16
+ require_relative 'gooddata/commands/commands'
17
+ require_relative 'gooddata/core/core'
18
+ require_relative 'gooddata/data/data'
19
+ require_relative 'gooddata/exceptions/exceptions'
20
+ require_relative 'gooddata/helpers/helpers'
21
+ require_relative 'gooddata/models/models'
22
+
23
+ # Files
24
+ require_relative 'gooddata/app/app'
25
+ require_relative 'gooddata/client'
26
+ require_relative 'gooddata/connection'
27
+ require_relative 'gooddata/extract'
28
+ require_relative 'gooddata/version'
29
+
30
+ # Extensions
31
+ require_relative 'gooddata/extensions/extensions'
@@ -0,0 +1,16 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require_relative '../rest/rest'
8
+
9
+ module GoodData
10
+ # Base class for Ruby SDK CLI Apps
11
+ class App
12
+ def main
13
+ fail NotImplementedError 'Application must implement #main'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,86 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'pathname'
8
+ require 'aws-sdk'
9
+
10
+ module GoodData
11
+ module Bricks
12
+ class BaseDownloader
13
+ def initialize(params)
14
+ @params = params
15
+ @logger = @params['GDC_LOGGER']
16
+ end
17
+
18
+ def pre_process(meta)
19
+ meta
20
+ end
21
+
22
+ def download
23
+ @logger.info 'would download data' if @logger
24
+ []
25
+ end
26
+
27
+ def backup(meta)
28
+ @logger.info 'would send a backup list of files to backup' if @logger
29
+
30
+ files = meta['objects'].map { |_k, o| o }.reduce([]) do |a, e|
31
+ a + e['filenames']
32
+ end
33
+
34
+ bucket_name = @params['s3_backup_bucket_name']
35
+
36
+ s3 = Aws::S3::Resource.new(
37
+ :access_key_id => @params['aws_access_key_id'],
38
+ :secret_access_key => @params['aws_secret_access_key']
39
+ )
40
+
41
+ bucket = s3.bucket(bucket_name)
42
+ bucket = s3.create_bucket(bucket: bucket_name) unless bucket.exists?
43
+
44
+ files.each do |file|
45
+ file_path = Pathname.new(file)
46
+ target_path = Pathname.new(@params['s3_backup_path'] || '') + file_path.basename
47
+ obj = bucket.object(target_path)
48
+ obj.put(body: file_path)
49
+ @logger.info "Backed up file #{file_path} to s3 #{target_path}" if @logger
50
+ end
51
+
52
+ meta
53
+ end
54
+
55
+ def post_process(meta)
56
+ @logger.info 'Maybe some postprocessing' if @logger
57
+ meta
58
+ end
59
+
60
+ # Run downloader
61
+ def run
62
+ downloaded_data = download
63
+ downloaded_data = pre_process(downloaded_data)
64
+ backup(downloaded_data) unless @params['skip_backup']
65
+
66
+ downloaded_data = post_process(downloaded_data)
67
+
68
+ # save the state - whatever is in the return value of #download in the :persist key .. to project metadata
69
+ if downloaded_data[:persist]
70
+ accumulated_state = downloaded_data[:persist].reduce([]) do |memo, item|
71
+ item.key?(:state) ? memo.concat(item[:state]) : memo
72
+ end
73
+ accumulated_state.each do |item|
74
+ key = item[:key]
75
+ val = item[:value]
76
+
77
+ @logger.info "Saving metadata #{key} => #{val}" if @logger
78
+ GoodData::ProjectMetadata[key] = val
79
+ end
80
+ end
81
+
82
+ post_process(downloaded_data)
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require_relative 'base_downloader'
8
+ require_relative 'utils'
9
+
10
+ require_relative 'middleware/middleware'
11
+
12
+ module GoodData
13
+ module Bricks
14
+ # Brick base class
15
+ class Brick
16
+ def log(message)
17
+ logger = @params[:gdc_logger]
18
+ logger.info(message) unless logger.nil?
19
+ end
20
+
21
+ # Name of the brick
22
+ def name
23
+ self.class
24
+ end
25
+
26
+ # Version of brick, this should be implemented in subclasses
27
+ def version
28
+ fail NotImplementedError, 'Method version should be reimplemented'
29
+ end
30
+
31
+ # Bricks implementation which can be 'called'
32
+ def call(params = {})
33
+ @params = params
34
+ ''
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'pathname'
8
+
9
+ base = Pathname(__FILE__).dirname.expand_path
10
+ Dir.glob(base + '*.rb').each do |file|
11
+ require file
12
+ end
13
+
14
+ # Require all middleware
15
+ require_relative 'middleware/middleware'
@@ -0,0 +1,29 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'aws-sdk'
8
+ require_relative 'base_middleware'
9
+
10
+ module GoodData
11
+ module Bricks
12
+ class AWSMiddleware < Bricks::Middleware
13
+ def call(params)
14
+ params = params.to_hash
15
+ if params.key?('aws_client')
16
+ puts 'Setting up AWS-S3 connection'
17
+ fail "Unable to connect to AWS. Parameter \"aws_client\" seems to be empty" unless params['aws_client']
18
+ fail "Unable to connect to AWS. Parameter \"access_key_id\" is missing" if params['aws_client']['access_key_id'].blank?
19
+ fail "Unable to connect to AWS. Parameter \"secret_access_key\" is missing" if params['aws_client']['secret_access_key'].blank?
20
+ s3 = Aws::S3::Resource.new(params['aws_client'])
21
+ params['aws_client']['s3_client'] = s3
22
+ @app.call(params)
23
+ else
24
+ @app.call(params)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'hashie'
8
+
9
+ module GoodData
10
+ module Bricks
11
+ class Middleware
12
+ attr_accessor :app
13
+
14
+ include Bricks::Utils
15
+
16
+ # Loads defaults to params from a json file in @config.
17
+ #
18
+ # The idea is to have a set of parameter defaults
19
+ # for a middleware. The defaults are loaded from a json file.
20
+ # If a brick user wants to override a default, they can
21
+ # do that in runtime params which come to the method in 'params'.
22
+ #
23
+ # A deep merge is done on the params. Arrays and other
24
+ # non-hash types are overwritten (params win).
25
+ #
26
+ # ### Examples
27
+ #
28
+ # A brick developer develops a SalesforceDownloaderMiddleware
29
+ # with default preset 'gse' having a configuration preset
30
+ # {"entities": ["Acount", "Event", "OpportunityLineItem", "Opportunity", "User"]}
31
+ #
32
+ # The brick user only wants to use Opportunity, so he passes
33
+ # runtime parameter {"entities": ["Opportunity"]} which overrides
34
+ # the default.
35
+ # See spec/bricks/bricks_spec.rb for usage.
36
+ def load_defaults(params)
37
+ # if default params given, fill what's not given in runtime params
38
+ if @config
39
+ # load it from file and merge it
40
+ defaults = { 'config' => MultiJson.load(File.read(@config)) }
41
+ default_params = GoodData::Helpers::DeepMergeableHash[defaults]
42
+ params = default_params.deep_merge(params)
43
+ end
44
+ params
45
+ end
46
+
47
+ def call(params)
48
+ load_defaults(params)
49
+ end
50
+
51
+ def initialize(options = {})
52
+ @app = options[:app]
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'benchmark'
8
+ require_relative 'base_middleware'
9
+
10
+ module GoodData
11
+ module Bricks
12
+ class BenchMiddleware < Bricks::Middleware
13
+ def call(params)
14
+ params = params.to_hash
15
+ puts 'Starting timer'
16
+ result = nil
17
+ report = Benchmark.measure { result = @app.call(params) }
18
+ puts 'Stopping timer'
19
+ pp report
20
+ result
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'salesforce_bulk_query'
8
+
9
+ require_relative 'base_middleware'
10
+
11
+ module GoodData
12
+ module Bricks
13
+ class BulkSalesforceMiddleware < Bricks::Middleware
14
+ DEFAULT_VERSION = '29.0'
15
+
16
+ def self.create_client(params)
17
+ salesforce = nil
18
+ if params['salesforce_client']
19
+
20
+ client = params['salesforce_client']
21
+ client.authenticate!
22
+
23
+ salesforce = SalesforceBulkQuery::Api.new(client, :logger => params['GDC_LOGGER'])
24
+ # SalesforceBulkQuery adds its own Restforce logging so turn it off
25
+ Restforce.log = false if params['GDC_LOGGER']
26
+ end
27
+ params.merge('salesforce_bulk_client' => salesforce)
28
+ end
29
+
30
+ def call(params)
31
+ params = params.to_hash
32
+ params = self.class.create_client(params)
33
+ @app.call(params)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require_relative 'base_middleware'
8
+
9
+ module GoodData
10
+ module Bricks
11
+ # Converts params from encoded hash to decoded hash
12
+ class DecodeParamsMiddleware < Bricks::Middleware
13
+ def call(params)
14
+ params = params.to_hash
15
+
16
+ @app.call(GoodData::Helpers.decode_params(params))
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require_relative 'base_middleware'
8
+
9
+ module GoodData
10
+ module Bricks
11
+ class FsProjectDownloadMiddleware < Bricks::Middleware
12
+ def call(params)
13
+ params = params.to_hash
14
+ (params['gdc_files_to_download'] || []).each do |source|
15
+ case source[:type].to_s
16
+ when 'ads'
17
+ CSV.open(source[:to], 'w') do |csv|
18
+ header_written = false
19
+ header = nil
20
+ dwh = params['ads_client']
21
+ dwh.execute_select(source[:query]) do |row|
22
+ unless header_written
23
+ header_written = true
24
+ header = row.keys
25
+ csv << header
26
+ end
27
+ csv << row.values_at(*header)
28
+ end
29
+ end
30
+ when 'staging'
31
+ webdav_uri = GoodData.project_webdav_path
32
+ dav = Net::DAV.new(webdav_uri, :curl => false)
33
+ dav.verify_server = false
34
+ dav.credentials(params['GDC_USERNAME'], params['GDC_PASSWORD'])
35
+ dav.find(path, recursive: true, suppress_errors: true) do |item|
36
+ puts 'Checking: ' + item.url.to_s
37
+ name = (item.uri - webdav_uri).to_s
38
+ File.open(name, 'w') do |f|
39
+ f << item.content
40
+ end
41
+ end
42
+ end
43
+ end
44
+ @app.call(params)
45
+ end
46
+ end
47
+ end
48
+ end