gooddata 1.0.0-java
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 +7 -0
- data/.document +5 -0
- data/.editorconfig +12 -0
- data/.flayignore +6 -0
- data/.gitignore +38 -0
- data/.pronto.yml +3 -0
- data/.rspec +5 -0
- data/.rubocop.yml +101 -0
- data/.travis.yml +9 -0
- data/.yardopts +22 -0
- data/CHANGELOG.md +272 -0
- data/CLI.md +435 -0
- data/CONTRIBUTING.md +38 -0
- data/DEPENDENCIES.md +880 -0
- data/Dockerfile.jruby +17 -0
- data/Dockerfile.ruby +19 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/LICENSE.rb +5 -0
- data/README.md +78 -0
- data/Rakefile +204 -0
- data/TODO.md +32 -0
- data/authors.sh +4 -0
- data/bin/gooddata +7 -0
- data/ci.rake +47 -0
- data/dependency_decisions.yml +104 -0
- data/docker-compose.yml +34 -0
- data/gooddata +9 -0
- data/gooddata.gemspec +72 -0
- data/lib/gooddata.rb +34 -0
- data/lib/gooddata/app/app.rb +16 -0
- data/lib/gooddata/bricks/base_downloader.rb +86 -0
- data/lib/gooddata/bricks/brick.rb +37 -0
- data/lib/gooddata/bricks/bricks.rb +17 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +41 -0
- data/lib/gooddata/bricks/middleware/base_middleware.rb +57 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +25 -0
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +21 -0
- data/lib/gooddata/bricks/middleware/dwh_middleware.rb +41 -0
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +112 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +33 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +58 -0
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
- data/lib/gooddata/bricks/pipeline.rb +25 -0
- data/lib/gooddata/bricks/utils.rb +18 -0
- data/lib/gooddata/cli/cli.rb +27 -0
- data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
- data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
- data/lib/gooddata/cli/commands/project_cmd.rb +28 -0
- data/lib/gooddata/cli/hooks.rb +56 -0
- data/lib/gooddata/cli/shared.rb +66 -0
- data/lib/gooddata/cli/terminal.rb +20 -0
- data/lib/gooddata/client.rb +67 -0
- data/lib/gooddata/commands/api.rb +64 -0
- data/lib/gooddata/commands/auth.rb +107 -0
- data/lib/gooddata/commands/base.rb +12 -0
- data/lib/gooddata/commands/commands.rb +12 -0
- data/lib/gooddata/commands/datasets.rb +148 -0
- data/lib/gooddata/commands/datawarehouse.rb +20 -0
- data/lib/gooddata/commands/domain.rb +40 -0
- data/lib/gooddata/commands/process.rb +67 -0
- data/lib/gooddata/commands/project.rb +144 -0
- data/lib/gooddata/commands/projects.rb +20 -0
- data/lib/gooddata/commands/role.rb +36 -0
- data/lib/gooddata/commands/runners.rb +47 -0
- data/lib/gooddata/commands/scaffold.rb +69 -0
- data/lib/gooddata/commands/user.rb +39 -0
- data/lib/gooddata/connection.rb +127 -0
- data/lib/gooddata/core/core.rb +12 -0
- data/lib/gooddata/core/logging.rb +105 -0
- data/lib/gooddata/core/nil_logger.rb +32 -0
- data/lib/gooddata/core/project.rb +74 -0
- data/lib/gooddata/core/rest.rb +149 -0
- data/lib/gooddata/core/user.rb +20 -0
- data/lib/gooddata/data/data.rb +12 -0
- data/lib/gooddata/data/guesser.rb +122 -0
- data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
- data/lib/gooddata/exceptions/command_failed.rb +11 -0
- data/lib/gooddata/exceptions/exceptions.rb +12 -0
- data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
- data/lib/gooddata/exceptions/export_clone.rb +4 -0
- data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
- data/lib/gooddata/exceptions/import_clone.rb +4 -0
- data/lib/gooddata/exceptions/malformed_user.rb +15 -0
- data/lib/gooddata/exceptions/maql_execution.rb +16 -0
- data/lib/gooddata/exceptions/no_project_error.rb +19 -0
- data/lib/gooddata/exceptions/object_migration.rb +32 -0
- data/lib/gooddata/exceptions/project_not_found.rb +13 -0
- data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
- data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
- data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
- data/lib/gooddata/exceptions/validation_error.rb +16 -0
- data/lib/gooddata/extensions/big_decimal.rb +17 -0
- data/lib/gooddata/extensions/class.rb +11 -0
- data/lib/gooddata/extensions/enumerable.rb +39 -0
- data/lib/gooddata/extensions/extensions.rb +10 -0
- data/lib/gooddata/extensions/false.rb +23 -0
- data/lib/gooddata/extensions/hash.rb +49 -0
- data/lib/gooddata/extensions/integer.rb +5 -0
- data/lib/gooddata/extensions/nil.rb +19 -0
- data/lib/gooddata/extensions/numeric.rb +15 -0
- data/lib/gooddata/extensions/object.rb +31 -0
- data/lib/gooddata/extensions/string.rb +7 -0
- data/lib/gooddata/extensions/symbol.rb +15 -0
- data/lib/gooddata/extensions/true.rb +23 -0
- data/lib/gooddata/extract.rb +21 -0
- data/lib/gooddata/goodzilla/goodzilla.rb +160 -0
- data/lib/gooddata/helpers/auth_helpers.rb +75 -0
- data/lib/gooddata/helpers/csv_helper.rb +61 -0
- data/lib/gooddata/helpers/data_helper.rb +129 -0
- data/lib/gooddata/helpers/erb_helper.rb +23 -0
- data/lib/gooddata/helpers/global_helpers.rb +266 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +292 -0
- data/lib/gooddata/helpers/helpers.rb +10 -0
- data/lib/gooddata/lcm/actions/actions.rb +12 -0
- data/lib/gooddata/lcm/actions/apply_custom_maql.rb +80 -0
- data/lib/gooddata/lcm/actions/associate_clients.rb +87 -0
- data/lib/gooddata/lcm/actions/base_action.rb +23 -0
- data/lib/gooddata/lcm/actions/collect_ca_metrics.rb +53 -0
- data/lib/gooddata/lcm/actions/collect_client_projects.rb +78 -0
- data/lib/gooddata/lcm/actions/collect_clients.rb +128 -0
- data/lib/gooddata/lcm/actions/collect_data_product.rb +57 -0
- data/lib/gooddata/lcm/actions/collect_dynamic_schedule_params.rb +62 -0
- data/lib/gooddata/lcm/actions/collect_ldm_objects.rb +56 -0
- data/lib/gooddata/lcm/actions/collect_meta.rb +88 -0
- data/lib/gooddata/lcm/actions/collect_segment_clients.rb +113 -0
- data/lib/gooddata/lcm/actions/collect_segments.rb +72 -0
- data/lib/gooddata/lcm/actions/collect_tagged_objects.rb +80 -0
- data/lib/gooddata/lcm/actions/collect_users_brick_users.rb +46 -0
- data/lib/gooddata/lcm/actions/create_segment_masters.rb +160 -0
- data/lib/gooddata/lcm/actions/ensure_data_product.rb +53 -0
- data/lib/gooddata/lcm/actions/ensure_release_table.rb +53 -0
- data/lib/gooddata/lcm/actions/ensure_segments.rb +32 -0
- data/lib/gooddata/lcm/actions/ensure_technical_users_domain.rb +70 -0
- data/lib/gooddata/lcm/actions/ensure_technical_users_project.rb +83 -0
- data/lib/gooddata/lcm/actions/execute_schedules.rb +128 -0
- data/lib/gooddata/lcm/actions/hello_world.rb +41 -0
- data/lib/gooddata/lcm/actions/import_object_collections.rb +60 -0
- data/lib/gooddata/lcm/actions/print_actions.rb +58 -0
- data/lib/gooddata/lcm/actions/print_modes.rb +69 -0
- data/lib/gooddata/lcm/actions/print_types.rb +52 -0
- data/lib/gooddata/lcm/actions/provision_clients.rb +89 -0
- data/lib/gooddata/lcm/actions/purge_clients.rb +58 -0
- data/lib/gooddata/lcm/actions/rename_existing_client_projects.rb +70 -0
- data/lib/gooddata/lcm/actions/segments_filter.rb +50 -0
- data/lib/gooddata/lcm/actions/synchronize_attribute_drillpaths.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_cas.rb +72 -0
- data/lib/gooddata/lcm/actions/synchronize_clients.rb +94 -0
- data/lib/gooddata/lcm/actions/synchronize_color_palette.rb +67 -0
- data/lib/gooddata/lcm/actions/synchronize_etls_in_segment.rb +155 -0
- data/lib/gooddata/lcm/actions/synchronize_label_types.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_ldm.rb +82 -0
- data/lib/gooddata/lcm/actions/synchronize_meta.rb +52 -0
- data/lib/gooddata/lcm/actions/synchronize_new_segments.rb +61 -0
- data/lib/gooddata/lcm/actions/synchronize_processes.rb +66 -0
- data/lib/gooddata/lcm/actions/synchronize_schedules.rb +91 -0
- data/lib/gooddata/lcm/actions/synchronize_tag_objects.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +210 -0
- data/lib/gooddata/lcm/actions/synchronize_user_groups.rb +53 -0
- data/lib/gooddata/lcm/actions/synchronize_users.rb +336 -0
- data/lib/gooddata/lcm/actions/update_release_table.rb +77 -0
- data/lib/gooddata/lcm/data/create_lcm_release.sql.erb +6 -0
- data/lib/gooddata/lcm/data/insert_into_lcm_release.sql.erb +11 -0
- data/lib/gooddata/lcm/data/select_from_lcm_release.sql.erb +8 -0
- data/lib/gooddata/lcm/data/update_lcm_release.sql.erb +7 -0
- data/lib/gooddata/lcm/dsl/dsl.rb +50 -0
- data/lib/gooddata/lcm/dsl/params_dsl.rb +61 -0
- data/lib/gooddata/lcm/dsl/type_dsl.rb +62 -0
- data/lib/gooddata/lcm/helpers/check_helper.rb +41 -0
- data/lib/gooddata/lcm/helpers/helpers.rb +12 -0
- data/lib/gooddata/lcm/helpers/tags_helper.rb +36 -0
- data/lib/gooddata/lcm/lcm.rb +325 -0
- data/lib/gooddata/lcm/lcm2.rb +400 -0
- data/lib/gooddata/lcm/types/base_type.rb +29 -0
- data/lib/gooddata/lcm/types/class/ads_client.rb +35 -0
- data/lib/gooddata/lcm/types/class/class.rb +21 -0
- data/lib/gooddata/lcm/types/class/gd_client.rb +35 -0
- data/lib/gooddata/lcm/types/class/types.rb +12 -0
- data/lib/gooddata/lcm/types/complex/complex.rb +33 -0
- data/lib/gooddata/lcm/types/complex/release_query.rb +35 -0
- data/lib/gooddata/lcm/types/complex/segment.rb +40 -0
- data/lib/gooddata/lcm/types/complex/synchronization_info.rb +35 -0
- data/lib/gooddata/lcm/types/complex/tokens.rb +31 -0
- data/lib/gooddata/lcm/types/complex/types.rb +12 -0
- data/lib/gooddata/lcm/types/complex/update_preference.rb +38 -0
- data/lib/gooddata/lcm/types/complex/users_brick_config.rb +32 -0
- data/lib/gooddata/lcm/types/param.rb +16 -0
- data/lib/gooddata/lcm/types/scalar/bool.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/hash.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/integer.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/object.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/string.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/types.rb +12 -0
- data/lib/gooddata/lcm/types/special/array.rb +33 -0
- data/lib/gooddata/lcm/types/special/enum.rb +15 -0
- data/lib/gooddata/lcm/types/special/types.rb +12 -0
- data/lib/gooddata/lcm/types/types.rb +12 -0
- data/lib/gooddata/lcm/user_bricks_helper.rb +32 -0
- data/lib/gooddata/mixins/author.rb +26 -0
- data/lib/gooddata/mixins/content_getter.rb +15 -0
- data/lib/gooddata/mixins/content_property_reader.rb +17 -0
- data/lib/gooddata/mixins/content_property_writer.rb +17 -0
- data/lib/gooddata/mixins/contributor.rb +20 -0
- data/lib/gooddata/mixins/data_getter.rb +15 -0
- data/lib/gooddata/mixins/data_property_reader.rb +19 -0
- data/lib/gooddata/mixins/data_property_writer.rb +19 -0
- data/lib/gooddata/mixins/inspector.rb +53 -0
- data/lib/gooddata/mixins/is_attribute.rb +17 -0
- data/lib/gooddata/mixins/is_dimension.rb +17 -0
- data/lib/gooddata/mixins/is_fact.rb +17 -0
- data/lib/gooddata/mixins/is_folder.rb +11 -0
- data/lib/gooddata/mixins/is_label.rb +19 -0
- data/lib/gooddata/mixins/links.rb +15 -0
- data/lib/gooddata/mixins/md_finders.rb +79 -0
- data/lib/gooddata/mixins/md_grantees.rb +42 -0
- data/lib/gooddata/mixins/md_id_to_uri.rb +39 -0
- data/lib/gooddata/mixins/md_json.rb +15 -0
- data/lib/gooddata/mixins/md_lock.rb +87 -0
- data/lib/gooddata/mixins/md_object_id.rb +15 -0
- data/lib/gooddata/mixins/md_object_indexer.rb +74 -0
- data/lib/gooddata/mixins/md_object_query.rb +134 -0
- data/lib/gooddata/mixins/md_relations.rb +43 -0
- data/lib/gooddata/mixins/meta_getter.rb +17 -0
- data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
- data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
- data/lib/gooddata/mixins/mixins.rb +19 -0
- data/lib/gooddata/mixins/not_attribute.rb +17 -0
- data/lib/gooddata/mixins/not_exportable.rb +15 -0
- data/lib/gooddata/mixins/not_fact.rb +17 -0
- data/lib/gooddata/mixins/not_group.rb +17 -0
- data/lib/gooddata/mixins/not_label.rb +19 -0
- data/lib/gooddata/mixins/not_metric.rb +19 -0
- data/lib/gooddata/mixins/obj_id.rb +15 -0
- data/lib/gooddata/mixins/rest_getters.rb +17 -0
- data/lib/gooddata/mixins/rest_resource.rb +47 -0
- data/lib/gooddata/mixins/root_key_getter.rb +15 -0
- data/lib/gooddata/mixins/root_key_setter.rb +15 -0
- data/lib/gooddata/mixins/timestamps.rb +19 -0
- data/lib/gooddata/mixins/to_json.rb +11 -0
- data/lib/gooddata/mixins/uri_getter.rb +9 -0
- data/lib/gooddata/models/ads_output_stage.rb +85 -0
- data/lib/gooddata/models/automated_data_distribution.rb +36 -0
- data/lib/gooddata/models/blueprint/anchor_field.rb +65 -0
- data/lib/gooddata/models/blueprint/attribute_field.rb +45 -0
- data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
- data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
- data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
- data/lib/gooddata/models/blueprint/dataset_blueprint.rb +455 -0
- data/lib/gooddata/models/blueprint/date_dimension.rb +20 -0
- data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
- data/lib/gooddata/models/blueprint/label_field.rb +47 -0
- data/lib/gooddata/models/blueprint/project_blueprint.rb +791 -0
- data/lib/gooddata/models/blueprint/project_builder.rb +103 -0
- data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
- data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
- data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
- data/lib/gooddata/models/blueprint/to_manifest.rb +185 -0
- data/lib/gooddata/models/blueprint/to_wire.rb +173 -0
- data/lib/gooddata/models/channel_configuration.rb +112 -0
- data/lib/gooddata/models/client.rb +236 -0
- data/lib/gooddata/models/client_synchronization_result.rb +31 -0
- data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
- data/lib/gooddata/models/data_product.rb +149 -0
- data/lib/gooddata/models/datawarehouse.rb +114 -0
- data/lib/gooddata/models/domain.rb +505 -0
- data/lib/gooddata/models/execution.rb +115 -0
- data/lib/gooddata/models/execution_detail.rb +81 -0
- data/lib/gooddata/models/from_wire.rb +173 -0
- data/lib/gooddata/models/invitation.rb +75 -0
- data/lib/gooddata/models/links.rb +50 -0
- data/lib/gooddata/models/membership.rb +441 -0
- data/lib/gooddata/models/metadata.rb +324 -0
- data/lib/gooddata/models/metadata/attribute.rb +155 -0
- data/lib/gooddata/models/metadata/dashboard.rb +120 -0
- data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
- data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
- data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
- data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
- data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
- data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
- data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
- data/lib/gooddata/models/metadata/dataset.rb +67 -0
- data/lib/gooddata/models/metadata/dimension.rb +57 -0
- data/lib/gooddata/models/metadata/fact.rb +51 -0
- data/lib/gooddata/models/metadata/folder.rb +49 -0
- data/lib/gooddata/models/metadata/label.rb +128 -0
- data/lib/gooddata/models/metadata/metadata.rb +12 -0
- data/lib/gooddata/models/metadata/metric.rb +206 -0
- data/lib/gooddata/models/metadata/report.rb +268 -0
- data/lib/gooddata/models/metadata/report_definition.rb +272 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +277 -0
- data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
- data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
- data/lib/gooddata/models/metadata/variable.rb +96 -0
- data/lib/gooddata/models/model.rb +293 -0
- data/lib/gooddata/models/models.rb +12 -0
- data/lib/gooddata/models/module_constants.rb +31 -0
- data/lib/gooddata/models/notification_rule.rb +113 -0
- data/lib/gooddata/models/process.rb +371 -0
- data/lib/gooddata/models/profile.rb +451 -0
- data/lib/gooddata/models/project.rb +2030 -0
- data/lib/gooddata/models/project_creator.rb +209 -0
- data/lib/gooddata/models/project_log_formatter.rb +204 -0
- data/lib/gooddata/models/project_metadata.rb +67 -0
- data/lib/gooddata/models/project_role.rb +79 -0
- data/lib/gooddata/models/report_data_result.rb +270 -0
- data/lib/gooddata/models/schedule.rb +538 -0
- data/lib/gooddata/models/segment.rb +274 -0
- data/lib/gooddata/models/style_setting.rb +62 -0
- data/lib/gooddata/models/subscription.rb +188 -0
- data/lib/gooddata/models/tab_builder.rb +27 -0
- data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
- data/lib/gooddata/models/user_filters/user_filter.rb +101 -0
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +553 -0
- data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +33 -0
- data/lib/gooddata/models/user_group.rb +250 -0
- data/lib/gooddata/rest/README.md +37 -0
- data/lib/gooddata/rest/client.rb +396 -0
- data/lib/gooddata/rest/connection.rb +776 -0
- data/lib/gooddata/rest/object.rb +69 -0
- data/lib/gooddata/rest/object_factory.rb +51 -0
- data/lib/gooddata/rest/resource.rb +27 -0
- data/lib/gooddata/rest/rest.rb +24 -0
- data/lib/gooddata/version.rb +23 -0
- data/lib/templates/bricks/brick.rb.erb +7 -0
- data/lib/templates/bricks/main.rb.erb +5 -0
- data/lib/templates/project/Goodfile.erb +4 -0
- data/lib/templates/project/data/commits.csv +4 -0
- data/lib/templates/project/data/devs.csv +4 -0
- data/lib/templates/project/data/repos.csv +3 -0
- data/lib/templates/project/model/model.rb.erb +20 -0
- data/spec/.rubocop.yml +16 -0
- data/spec/bricks/bricks_spec.rb +110 -0
- data/spec/bricks/default-config.json +8 -0
- data/spec/data/.gooddata +4 -0
- data/spec/data/blueprints/additional_dataset_module.json +32 -0
- data/spec/data/blueprints/attribute_sort_order_blueprint.json +72 -0
- data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
- data/spec/data/blueprints/invalid_blueprint.json +103 -0
- data/spec/data/blueprints/m_n_model.json +104 -0
- data/spec/data/blueprints/model_module.json +25 -0
- data/spec/data/blueprints/test_blueprint.json +39 -0
- data/spec/data/blueprints/test_project_model_spec.json +106 -0
- data/spec/data/cc/data/source/commits.csv +4 -0
- data/spec/data/cc/data/source/devs.csv +4 -0
- data/spec/data/cc/data/source/repos.csv +3 -0
- data/spec/data/cc/devel.prm +0 -0
- data/spec/data/cc/graph/graph.grf +11 -0
- data/spec/data/cc/workspace.prm +19 -0
- data/spec/data/column_based_permissions.csv +7 -0
- data/spec/data/column_based_permissions2.csv +6 -0
- data/spec/data/dynamic_schedule_params_table.csv +7 -0
- data/spec/data/gd_gse_data_blueprint.json +1371 -0
- data/spec/data/gd_gse_data_manifest.json +1424 -0
- data/spec/data/gd_gse_data_model.json +1772 -0
- data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
- data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
- data/spec/data/hello_world_process/hello_world.rb +9 -0
- data/spec/data/hello_world_process/hello_world.zip +0 -0
- data/spec/data/line_based_permissions.csv +3 -0
- data/spec/data/manifests/test_blueprint.json +32 -0
- data/spec/data/manifests/test_project.json +107 -0
- data/spec/data/reports/left_attr_report.json +108 -0
- data/spec/data/reports/metric_only_one_line.json +83 -0
- data/spec/data/reports/report_1.json +197 -0
- data/spec/data/reports/top_attr_report.json +108 -0
- data/spec/data/ruby_params_process/ruby_params.rb +9 -0
- data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
- data/spec/data/ruby_process/process.rb +8 -0
- data/spec/data/ruby_process/stuff.txt +1 -0
- data/spec/data/superfluous_titles_view.json +81 -0
- data/spec/data/test-ci-data.csv +2 -0
- data/spec/data/users.csv +12 -0
- data/spec/data/wire_models/attribute_sort_by_model.json +73 -0
- data/spec/data/wire_models/model_view.json +1775 -0
- data/spec/data/wire_models/nu_model.json +3046 -0
- data/spec/data/wire_models/test_blueprint.json +66 -0
- data/spec/data/wire_test_project.json +150 -0
- data/spec/data/workspace_table.csv +3 -0
- data/spec/environment/default.rb +43 -0
- data/spec/environment/development.rb +32 -0
- data/spec/environment/environment.rb +38 -0
- data/spec/environment/production.rb +27 -0
- data/spec/environment/staging.rb +33 -0
- data/spec/environment/testing.rb +32 -0
- data/spec/helpers/blueprint_helper.rb +27 -0
- data/spec/helpers/cli_helper.rb +38 -0
- data/spec/helpers/connection_helper.rb +43 -0
- data/spec/helpers/crypto_helper.rb +19 -0
- data/spec/helpers/csv_helper.rb +20 -0
- data/spec/helpers/process_helper.rb +35 -0
- data/spec/helpers/project_helper.rb +74 -0
- data/spec/helpers/schedule_helper.rb +33 -0
- data/spec/helpers/spec_helper.rb +17 -0
- data/spec/integration/ads_output_stage_spec.rb +45 -0
- data/spec/integration/blueprint_updates_spec.rb +107 -0
- data/spec/integration/blueprint_with_ca_spec.rb +56 -0
- data/spec/integration/blueprint_with_grain_spec.rb +74 -0
- data/spec/integration/channel_configuration_spec.rb +67 -0
- data/spec/integration/clients_spec.rb +164 -0
- data/spec/integration/command_datawarehouse_spec.rb +45 -0
- data/spec/integration/command_projects_spec.rb +32 -0
- data/spec/integration/commands/command_projects_spec.rb +22 -0
- data/spec/integration/core/connection_spec.rb +56 -0
- data/spec/integration/core/logging_spec.rb +130 -0
- data/spec/integration/core/project_spec.rb +54 -0
- data/spec/integration/create_from_template_spec.rb +29 -0
- data/spec/integration/create_project_spec.rb +27 -0
- data/spec/integration/date_dim_switch_spec.rb +150 -0
- data/spec/integration/deprecated_load_spec.rb +60 -0
- data/spec/integration/full_process_schedule_spec.rb +367 -0
- data/spec/integration/full_project_spec.rb +592 -0
- data/spec/integration/helpers_spec.rb +16 -0
- data/spec/integration/lcm_spec.rb +54 -0
- data/spec/integration/mixins/id_to_uri_spec.rb +44 -0
- data/spec/integration/models/data_product_spec.rb +71 -0
- data/spec/integration/models/domain_spec.rb +162 -0
- data/spec/integration/models/invitation_spec.rb +17 -0
- data/spec/integration/models/membership_spec.rb +127 -0
- data/spec/integration/models/metadata/report_spec.rb +54 -0
- data/spec/integration/models/params_spec.rb +118 -0
- data/spec/integration/models/profile_spec.rb +210 -0
- data/spec/integration/models/project_role_spec.rb +94 -0
- data/spec/integration/models/project_spec.rb +225 -0
- data/spec/integration/models/schedule_spec.rb +485 -0
- data/spec/integration/models/unit_project_spec.rb +130 -0
- data/spec/integration/over_to_user_filters_spec.rb +98 -0
- data/spec/integration/partial_md_export_import_spec.rb +41 -0
- data/spec/integration/project_spec.rb +381 -0
- data/spec/integration/rest_spec.rb +214 -0
- data/spec/integration/schedule_spec.rb +613 -0
- data/spec/integration/segments_spec.rb +100 -0
- data/spec/integration/subscription_spec.rb +88 -0
- data/spec/integration/urn_date_dim_spec.rb +53 -0
- data/spec/integration/user_filters_spec.rb +306 -0
- data/spec/integration/user_group_spec.rb +147 -0
- data/spec/integration/variables_spec.rb +189 -0
- data/spec/logging_in_logging_out_spec.rb +91 -0
- data/spec/spec_helper.rb +66 -0
- data/spec/unit/actions/associate_clients_spec.rb +47 -0
- data/spec/unit/actions/collect_client_projects_spec.rb +47 -0
- data/spec/unit/actions/collect_clients_spec.rb +65 -0
- data/spec/unit/actions/collect_data_product_spec.rb +56 -0
- data/spec/unit/actions/collect_dynamic_schedule_params_spec.rb +56 -0
- data/spec/unit/actions/collect_meta_spec.rb +88 -0
- data/spec/unit/actions/collect_segment_clients_spec.rb +81 -0
- data/spec/unit/actions/collect_tagged_objects_spec.rb +126 -0
- data/spec/unit/actions/collect_users_brick_users_spec.rb +36 -0
- data/spec/unit/actions/create_segment_masters_spec.rb +64 -0
- data/spec/unit/actions/ensure_data_product_spec.rb +38 -0
- data/spec/unit/actions/ensure_technical_users_domain_spec.rb +51 -0
- data/spec/unit/actions/ensure_technical_users_project_spec.rb +72 -0
- data/spec/unit/actions/execute_schedules_spec.rb +94 -0
- data/spec/unit/actions/provision_clients_spec.rb +45 -0
- data/spec/unit/actions/purge_clients_spec.rb +47 -0
- data/spec/unit/actions/rename_existing_client_projects_spec.rb +54 -0
- data/spec/unit/actions/segments_filter_spec.rb +46 -0
- data/spec/unit/actions/shared_examples_for_user_actions.rb +26 -0
- data/spec/unit/actions/synchronize_cas_spec.rb +58 -0
- data/spec/unit/actions/synchronize_etls_in_segment_spec.rb +212 -0
- data/spec/unit/actions/synchronize_ldm_spec.rb +57 -0
- data/spec/unit/actions/synchronize_user_filters_spec.rb +146 -0
- data/spec/unit/actions/synchronize_user_groups_spec.rb +49 -0
- data/spec/unit/actions/synchronize_users_spec.rb +134 -0
- data/spec/unit/bricks/bricks_spec.rb +34 -0
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +98 -0
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +30 -0
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
- data/spec/unit/cli/cli_spec.rb +17 -0
- data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
- data/spec/unit/core/nil_logger_spec.rb +13 -0
- data/spec/unit/extensions/hash_spec.rb +22 -0
- data/spec/unit/godzilla/goodzilla_spec.rb +74 -0
- data/spec/unit/helpers/csv_helper_spec.rb +22 -0
- data/spec/unit/helpers/data_helper_spec.rb +67 -0
- data/spec/unit/helpers/global_helpers_spec.rb +264 -0
- data/spec/unit/helpers_spec.rb +254 -0
- data/spec/unit/lcm/user_bricks_helper_spec.rb +58 -0
- data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +20 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +28 -0
- data/spec/unit/models/blueprint/dataset_spec.rb +120 -0
- data/spec/unit/models/blueprint/labels_spec.rb +43 -0
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +642 -0
- data/spec/unit/models/blueprint/reference_spec.rb +28 -0
- data/spec/unit/models/blueprint/schema_builder_spec.rb +36 -0
- data/spec/unit/models/blueprint/to_wire_spec.rb +195 -0
- data/spec/unit/models/execution_spec.rb +109 -0
- data/spec/unit/models/from_wire_spec.rb +301 -0
- data/spec/unit/models/metadata_spec.rb +140 -0
- data/spec/unit/models/metric_spec.rb +129 -0
- data/spec/unit/models/model_spec.rb +77 -0
- data/spec/unit/models/project_creator_spec.rb +90 -0
- data/spec/unit/models/project_spec.rb +94 -0
- data/spec/unit/models/report_result_data_spec.rb +194 -0
- data/spec/unit/models/to_manifest_spec.rb +136 -0
- data/spec/unit/models/user_filters/user_filter_builder_spec.rb +110 -0
- data/spec/unit/models/user_filters_spec.rb +95 -0
- data/spec/unit/models/variable_spec.rb +280 -0
- data/spec/unit/rest/polling_spec.rb +101 -0
- data/spec/unit/rest/resource_spec.rb +10 -0
- data/yard-server.sh +3 -0
- metadata +1207 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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 'rest-client'
|
|
8
|
+
|
|
9
|
+
require_relative 'nil_logger'
|
|
10
|
+
|
|
11
|
+
module GoodData
|
|
12
|
+
DEFAULT_LOG_LEVEL = Logger::INFO
|
|
13
|
+
DEFAULT_LOG_OUTPUT = STDOUT
|
|
14
|
+
DEFAULT_LOGGER_CLASS = Logger
|
|
15
|
+
|
|
16
|
+
DEFAULT_RESTLOG_LEVEL = Logger::DEBUG
|
|
17
|
+
DEFAULT_RESTLOG_OUTPUT = STDOUT
|
|
18
|
+
DEFAULT_RESTLOGGER_CLASS = Logger
|
|
19
|
+
|
|
20
|
+
class << self
|
|
21
|
+
attr_accessor :logger, :rest_logger
|
|
22
|
+
attr_writer :stats
|
|
23
|
+
|
|
24
|
+
# Turn logging on
|
|
25
|
+
#
|
|
26
|
+
# ### Example
|
|
27
|
+
#
|
|
28
|
+
# # Turn of default logging
|
|
29
|
+
# GoodData.logging_on
|
|
30
|
+
#
|
|
31
|
+
# # Log only WARN and higher
|
|
32
|
+
# GoodData.logging_on(Logger::WARN)
|
|
33
|
+
#
|
|
34
|
+
# # Log DEBUG and above to file
|
|
35
|
+
# GoodData.logging_on(Logger::DEBUG, 'log.txt')
|
|
36
|
+
#
|
|
37
|
+
def logging_on(level = DEFAULT_LOG_LEVEL, output = DEFAULT_LOG_OUTPUT, klass = DEFAULT_LOGGER_CLASS)
|
|
38
|
+
@logger = klass.new(output)
|
|
39
|
+
@logger.level = level
|
|
40
|
+
@logger
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Turn logging on
|
|
44
|
+
#
|
|
45
|
+
# ### Example
|
|
46
|
+
#
|
|
47
|
+
# GoodData.logging_off
|
|
48
|
+
#
|
|
49
|
+
def logging_off
|
|
50
|
+
@logger = NilLogger.new
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def logging_on?
|
|
54
|
+
!@logger.instance_of?(NilLogger)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Turn logging on with HTTP included
|
|
58
|
+
#
|
|
59
|
+
# ### Example
|
|
60
|
+
#
|
|
61
|
+
# GoodData.logging_http_on
|
|
62
|
+
#
|
|
63
|
+
def logging_http_on(level = DEFAULT_RESTLOG_LEVEL, output = DEFAULT_RESTLOG_OUTPUT, klass = DEFAULT_RESTLOGGER_CLASS)
|
|
64
|
+
@rest_logger = klass.new(output)
|
|
65
|
+
@rest_logger.level = level
|
|
66
|
+
@rest_logger
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Turn logging on
|
|
70
|
+
#
|
|
71
|
+
# ### Example
|
|
72
|
+
#
|
|
73
|
+
# GoodData.logging_http_off
|
|
74
|
+
#
|
|
75
|
+
def logging_http_off
|
|
76
|
+
@rest_logger = NilLogger.new
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def logging_http_on?
|
|
80
|
+
!@rest_logger.instance_of?(NilLogger)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def stats_on
|
|
84
|
+
@stats = true
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def stats_on?
|
|
88
|
+
@stats
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def stats_off
|
|
92
|
+
@stats = false
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Initial setup of logger
|
|
96
|
+
GoodData.logger = GoodData.logging_on
|
|
97
|
+
|
|
98
|
+
# Initial setup of rest logger
|
|
99
|
+
GoodData.rest_logger = GoodData.logging_http_on(
|
|
100
|
+
nil,
|
|
101
|
+
DEFAULT_RESTLOG_OUTPUT,
|
|
102
|
+
NilLogger
|
|
103
|
+
)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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
|
+
module GoodData
|
|
8
|
+
# Dummy implementation of logger
|
|
9
|
+
class NilLogger
|
|
10
|
+
attr_accessor :level
|
|
11
|
+
|
|
12
|
+
def initialize(*_args)
|
|
13
|
+
@level = nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def debug(*_args)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
alias_method :info, :debug
|
|
20
|
+
alias_method :warn, :debug
|
|
21
|
+
alias_method :error, :debug
|
|
22
|
+
|
|
23
|
+
def debug?
|
|
24
|
+
false
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
alias_method :info?, :debug?
|
|
28
|
+
alias_method :warn?, :debug?
|
|
29
|
+
alias_method :error?, :debug?
|
|
30
|
+
alias_method :fatal?, :debug?
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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
|
+
module GoodData
|
|
8
|
+
@project = nil
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
# Sets the active project
|
|
12
|
+
#
|
|
13
|
+
# @param project A project identifier
|
|
14
|
+
#
|
|
15
|
+
# ### Examples
|
|
16
|
+
#
|
|
17
|
+
# The following calls are equivalent
|
|
18
|
+
#
|
|
19
|
+
# # Assign project ID
|
|
20
|
+
# GoodData.project = 'afawtv356b6usdfsdf34vt'
|
|
21
|
+
#
|
|
22
|
+
# # Use project ID
|
|
23
|
+
# GoodData.use 'afawtv356b6usdfsdf34vt'
|
|
24
|
+
#
|
|
25
|
+
# # Use project URL
|
|
26
|
+
# GoodData.use '/gdc/projects/afawtv356b6usdfsdf34vt'
|
|
27
|
+
#
|
|
28
|
+
# # Select project using indexer on GoodData::Project class
|
|
29
|
+
# GoodData.project = Project['afawtv356b6usdfsdf34vt']
|
|
30
|
+
# Assigns global/default GoodData project
|
|
31
|
+
def project=(project, opts = { :client => GoodData.connection })
|
|
32
|
+
if project.is_a? Project
|
|
33
|
+
@project = project
|
|
34
|
+
elsif project.nil?
|
|
35
|
+
@project = nil
|
|
36
|
+
else
|
|
37
|
+
@project = Project[project, opts]
|
|
38
|
+
end
|
|
39
|
+
@project
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
alias_method :use, :project=
|
|
43
|
+
|
|
44
|
+
attr_reader :project
|
|
45
|
+
|
|
46
|
+
# Returns the active project
|
|
47
|
+
#
|
|
48
|
+
# def project
|
|
49
|
+
# threaded[:project]
|
|
50
|
+
# end
|
|
51
|
+
|
|
52
|
+
# Perform block in context of another project than currently set
|
|
53
|
+
#
|
|
54
|
+
# @param project Project to use
|
|
55
|
+
# @param bl Block to be performed
|
|
56
|
+
def with_project(project, opts = { :client => GoodData.connection }, &bl)
|
|
57
|
+
fail 'You have to specify a project when using with_project' if project.nil? || (project.is_a?(String) && project.empty?)
|
|
58
|
+
fail 'You have to specify block' unless bl
|
|
59
|
+
old_project = GoodData.project
|
|
60
|
+
|
|
61
|
+
begin
|
|
62
|
+
GoodData.use(project, opts)
|
|
63
|
+
res = bl.call(GoodData.project)
|
|
64
|
+
rescue RestClient::ResourceNotFound
|
|
65
|
+
GoodData.project = old_project
|
|
66
|
+
raise(GoodData::ProjectNotFound, 'Project was not found')
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
GoodData.project = old_project
|
|
70
|
+
|
|
71
|
+
res
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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
|
+
module GoodData
|
|
8
|
+
class << self
|
|
9
|
+
# Performs a HTTP GET request.
|
|
10
|
+
#
|
|
11
|
+
# Retuns the JSON response formatted as a Hash object.
|
|
12
|
+
#
|
|
13
|
+
# @param path The HTTP path on the GoodData server (must be prefixed with a forward slash)
|
|
14
|
+
#
|
|
15
|
+
# ### Examples
|
|
16
|
+
#
|
|
17
|
+
# GoodData.get '/gdc/projects'
|
|
18
|
+
#
|
|
19
|
+
def get(path, options = {})
|
|
20
|
+
connection.get(path, options)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Performs a HTTP POST request.
|
|
24
|
+
#
|
|
25
|
+
# Retuns the JSON response formatted as a Hash object.
|
|
26
|
+
#
|
|
27
|
+
# @param path The HTTP path on the GoodData server (must be prefixed with a forward slash)
|
|
28
|
+
# @param data The payload data in the format of a Hash object
|
|
29
|
+
#
|
|
30
|
+
# ### Examples
|
|
31
|
+
#
|
|
32
|
+
# client.post '/gdc/projects', { ... }
|
|
33
|
+
#
|
|
34
|
+
def post(path, data = {}, options = {})
|
|
35
|
+
connection.post path, data, options
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Performs a HTTP PUT request.
|
|
39
|
+
#
|
|
40
|
+
# Retuns the JSON response formatted as a Hash object.
|
|
41
|
+
#
|
|
42
|
+
# ### Parameters
|
|
43
|
+
#
|
|
44
|
+
# @param path The HTTP path on the GoodData server (must be prefixed with a forward slash)
|
|
45
|
+
# @param data The payload data in the format of a Hash object
|
|
46
|
+
#
|
|
47
|
+
# ### Examples
|
|
48
|
+
#
|
|
49
|
+
# client.put '/gdc/projects', { ... }
|
|
50
|
+
#
|
|
51
|
+
def put(path, data, options = {})
|
|
52
|
+
connection.put path, data, options
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Performs a HTTP DELETE request.
|
|
56
|
+
#
|
|
57
|
+
# Retuns the JSON response formatted as a Hash object.
|
|
58
|
+
#
|
|
59
|
+
# @param path The HTTP path on the GoodData server (must be prefixed with a forward slash)
|
|
60
|
+
#
|
|
61
|
+
# ### Examples
|
|
62
|
+
#
|
|
63
|
+
# GoodData.delete '/gdc/project/1'
|
|
64
|
+
#
|
|
65
|
+
def delete(path, options = {})
|
|
66
|
+
connection.delete path, options
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Upload to user directory
|
|
70
|
+
# @return [String]
|
|
71
|
+
def upload_to_user_webdav(file, options = {})
|
|
72
|
+
url = user_webdav_path({ :client => GoodData.client }.merge(options))
|
|
73
|
+
connection.upload(file, options.merge(staging_url: url))
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Get WebDav directory for project data
|
|
77
|
+
# @return [String]
|
|
78
|
+
def project_webdav_path(options = {})
|
|
79
|
+
options = merge_options(options)
|
|
80
|
+
project = options[:project]
|
|
81
|
+
project.project_webdav_path
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Upload to project directory
|
|
85
|
+
def upload_to_project_webdav(file, options = {})
|
|
86
|
+
options = merge_options(options)
|
|
87
|
+
url = project_webdav_path(options)
|
|
88
|
+
connection.upload(file, options.merge(:staging_url => url))
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Download from project directory
|
|
92
|
+
def download_from_project_webdav(file, where, options = {})
|
|
93
|
+
options = merge_options(options)
|
|
94
|
+
url = project_webdav_path(options)
|
|
95
|
+
connection.download(file, where, options.merge(:staging_url => url))
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Get WebDav directory for user data
|
|
99
|
+
# @return [String]
|
|
100
|
+
def user_webdav_path(options = {})
|
|
101
|
+
client = GoodData::Rest::Object.client({ :client => GoodData.client }.merge(options))
|
|
102
|
+
client.user_webdav_path
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Download from user directory
|
|
106
|
+
def download_from_user_webdav(file, where, options = {})
|
|
107
|
+
url = user_webdav_path({ :client => GoodData.client }.merge(options))
|
|
108
|
+
connection.download(file, where, options.merge(:staging_url => url))
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Generalizaton of poller. Since we have quite a variation of how async proceses are handled
|
|
112
|
+
# this is a helper that should help you with resources where the information about "Are we done"
|
|
113
|
+
# is the http code of response. By default we repeat as long as the code == 202. You can
|
|
114
|
+
# change the code if necessary. It expects the URI as an input where it can poll. It returns the
|
|
115
|
+
# value of last poll. In majority of cases these are the data that you need.
|
|
116
|
+
#
|
|
117
|
+
# @param link [String] Link for polling
|
|
118
|
+
# @param options [Hash] Options
|
|
119
|
+
# @return [Hash] Result of polling
|
|
120
|
+
def poll_on_code(link, options = {})
|
|
121
|
+
client = options[:client]
|
|
122
|
+
fail ArgumentError, 'No :client specified' if client.nil?
|
|
123
|
+
client.poll_on_code(link, options)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Generalizaton of poller. Since we have quite a variation of how async proceses are handled
|
|
127
|
+
# this is a helper that should help you with resources where the information about "Are we done"
|
|
128
|
+
# is inside the response. It expects the URI as an input where it can poll and a block that should
|
|
129
|
+
# return either false -> 'meaning we are done' or true -> meaning sleep and repeat. It returns the
|
|
130
|
+
# value of last poll. In majority of cases these are the data that you need
|
|
131
|
+
#
|
|
132
|
+
# @param link [String] Link for polling
|
|
133
|
+
# @param options [Hash] Options
|
|
134
|
+
# @return [Hash] Result of polling
|
|
135
|
+
def poll_on_response(link, options = {}, &bl)
|
|
136
|
+
client = options[:client]
|
|
137
|
+
fail ArgumentError, 'No :client specified' if client.nil?
|
|
138
|
+
client.poll_on_response(link, options, &bl)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
private
|
|
142
|
+
|
|
143
|
+
def merge_options(opts)
|
|
144
|
+
{
|
|
145
|
+
:project => GoodData.project
|
|
146
|
+
}.merge(opts)
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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 '../models/profile'
|
|
8
|
+
|
|
9
|
+
module GoodData
|
|
10
|
+
class << self
|
|
11
|
+
# Gets currently logged user
|
|
12
|
+
#
|
|
13
|
+
# @return [GoodData::Profile] User Profile
|
|
14
|
+
def user
|
|
15
|
+
GoodData::Profile.current
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
alias_method :profile, :user
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 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 'date'
|
|
8
|
+
|
|
9
|
+
require_relative '../extract'
|
|
10
|
+
require_relative '../exceptions/command_failed'
|
|
11
|
+
|
|
12
|
+
module GoodData
|
|
13
|
+
module Data
|
|
14
|
+
##
|
|
15
|
+
# Utility class to guess data types of a data stream by looking at first couple of rows
|
|
16
|
+
#
|
|
17
|
+
class Guesser
|
|
18
|
+
TYPES_PRIORITY = [:connection_point, :fact, :date, :attribute]
|
|
19
|
+
attr_reader :headers
|
|
20
|
+
|
|
21
|
+
class << self
|
|
22
|
+
def sort_types(types)
|
|
23
|
+
types.sort do |x, y|
|
|
24
|
+
TYPES_PRIORITY.index(x) <=> TYPES_PRIORITY.index(y)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def initialize(reader)
|
|
30
|
+
@reader = reader
|
|
31
|
+
@headers = reader.shift.map!(&:to_s) || fail('Empty data set')
|
|
32
|
+
@pros = {}
|
|
33
|
+
@cons = {}
|
|
34
|
+
@seen = {}
|
|
35
|
+
|
|
36
|
+
@headers.map do |h|
|
|
37
|
+
@cons[h.to_s] = {}
|
|
38
|
+
@pros[h.to_s] = {}
|
|
39
|
+
@seen[h.to_s] = {}
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def guess(limit)
|
|
44
|
+
count = 0
|
|
45
|
+
while (row = @reader.shift)
|
|
46
|
+
break unless row && !row.empty? && count < limit
|
|
47
|
+
fail '%i fields in row %i, %i expected' % [row.size, count + 1, @headers.size] if row.size != @headers.size
|
|
48
|
+
row.each_with_index do |value, j|
|
|
49
|
+
header = @headers[j]
|
|
50
|
+
number = check_number(header, value)
|
|
51
|
+
date = check_date(header, value)
|
|
52
|
+
store_guess header, @pros => :attribute unless number || date
|
|
53
|
+
hash_increment @seen[header], value
|
|
54
|
+
end
|
|
55
|
+
count += 1
|
|
56
|
+
end
|
|
57
|
+
# fields with unique values are connection point candidates
|
|
58
|
+
@seen.each do |header, values|
|
|
59
|
+
store_guess header, @pros => :connection_point if values.size == count
|
|
60
|
+
end
|
|
61
|
+
guess_result
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
private
|
|
65
|
+
|
|
66
|
+
def guess_result
|
|
67
|
+
result = {}
|
|
68
|
+
@headers.each do |header|
|
|
69
|
+
result[header] = Guesser.sort_types @pros[header].keys.select { |type| @cons[header][type].nil? }
|
|
70
|
+
end
|
|
71
|
+
result
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def hash_increment(hash, key)
|
|
75
|
+
if hash[key]
|
|
76
|
+
hash[key] += 1
|
|
77
|
+
else
|
|
78
|
+
hash[key] = 1
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def check_number(header, value)
|
|
83
|
+
if value.nil? || value =~ /^[\+-]?\d*(\.\d*)?$/
|
|
84
|
+
return store_guess(header, @pros => [:fact, :attribute])
|
|
85
|
+
end
|
|
86
|
+
store_guess header, @cons => :fact
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def check_date(header, value)
|
|
90
|
+
return store_guess(header, @pros => [:date, :attribute, :fact]) if value.nil? || value == '0000-00-00'
|
|
91
|
+
begin
|
|
92
|
+
DateTime.parse value
|
|
93
|
+
return store_guess(header, @pros => [:date, :attribute])
|
|
94
|
+
rescue ArgumentError => e
|
|
95
|
+
raise e
|
|
96
|
+
end
|
|
97
|
+
store_guess header, @cons => :date
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
##
|
|
101
|
+
# Stores a guess about given header.
|
|
102
|
+
#
|
|
103
|
+
# Returns true if the @pros key is present, false otherwise
|
|
104
|
+
#
|
|
105
|
+
# === Parameters
|
|
106
|
+
#
|
|
107
|
+
# * +header+ - A header name
|
|
108
|
+
# * +guess+ - A hash with optional @pros and @cons keys
|
|
109
|
+
#
|
|
110
|
+
def store_guess(header, guess)
|
|
111
|
+
result = guess[@pros]
|
|
112
|
+
[@pros, @cons].each do |hash|
|
|
113
|
+
if guess[hash]
|
|
114
|
+
guess[hash] = [guess[hash]] unless guess[hash].is_a? Array
|
|
115
|
+
guess[hash].each { |type| hash_increment hash[header], type }
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
result
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|