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,277 @@
|
|
|
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 'scheduled_mail/dashboard_attachment'
|
|
8
|
+
require_relative 'scheduled_mail/report_attachment'
|
|
9
|
+
|
|
10
|
+
require_relative '../../helpers/global_helpers'
|
|
11
|
+
|
|
12
|
+
require_relative '../../core/core'
|
|
13
|
+
require_relative '../metadata'
|
|
14
|
+
require_relative 'metadata'
|
|
15
|
+
require_relative 'report'
|
|
16
|
+
|
|
17
|
+
require 'multi_json'
|
|
18
|
+
|
|
19
|
+
module GoodData
|
|
20
|
+
class ScheduledMail < GoodData::MdObject
|
|
21
|
+
root_key :scheduledMail
|
|
22
|
+
|
|
23
|
+
include GoodData::Mixin::Lockable
|
|
24
|
+
|
|
25
|
+
DEFAULT_OPTS = {
|
|
26
|
+
# Meta options
|
|
27
|
+
:title => 'Scheduled report example',
|
|
28
|
+
:summary => 'Daily at 12:00pm PT',
|
|
29
|
+
:tags => '',
|
|
30
|
+
:deprecated => 0,
|
|
31
|
+
|
|
32
|
+
# Content When options
|
|
33
|
+
:recurrency => '0:0:0:12:0:0',
|
|
34
|
+
:startDate => '2012-06-05',
|
|
35
|
+
:timeZone => 'America/Los_Angeles',
|
|
36
|
+
|
|
37
|
+
# Content Email options
|
|
38
|
+
:to => [],
|
|
39
|
+
:bcc => [],
|
|
40
|
+
:subject => 'Scheduled Report',
|
|
41
|
+
:body => "Hey, I'm sending you new Reports and Dashboards!",
|
|
42
|
+
|
|
43
|
+
# Attachments
|
|
44
|
+
:attachments => []
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
class << self
|
|
48
|
+
# Method intended to get all objects of that type in a specified project
|
|
49
|
+
#
|
|
50
|
+
# @param options [Hash] the options hash
|
|
51
|
+
# @option options [Boolean] :full if passed true the subclass can decide
|
|
52
|
+
# to pull in full objects. This is desirable from the usability POV
|
|
53
|
+
# but unfortunately has negative impact on performance so it is not the
|
|
54
|
+
# default
|
|
55
|
+
# @return [Array<GoodData::MdObject> | Array<Hash>] Return the appropriate metadata objects or their representation
|
|
56
|
+
def all(options = { :client => GoodData.connection, :project => GoodData.project })
|
|
57
|
+
query('scheduledMail', ScheduledMail, options)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def convert_attachment(item, opts)
|
|
61
|
+
if item.is_a?(GoodData::Dashboard)
|
|
62
|
+
{
|
|
63
|
+
dashboardAttachment: GoodData::DashboardAttachment::DEFAULT_OPTS.merge(opts.merge(:uri => item.uri))
|
|
64
|
+
}
|
|
65
|
+
elsif item.is_a?(GoodData::Report)
|
|
66
|
+
{
|
|
67
|
+
reportAttachment: GoodData::ReportAttachment::DEFAULT_OPTS.merge(opts.merge(:uri => item.uri))
|
|
68
|
+
}
|
|
69
|
+
elsif item.is_a?(GoodData::DashboardAttachment)
|
|
70
|
+
item.json
|
|
71
|
+
elsif item.is_a?(GoodData::ReportAttachment)
|
|
72
|
+
item.json
|
|
73
|
+
elsif item.is_a?(Hash)
|
|
74
|
+
item
|
|
75
|
+
elsif item == 'dashboardAttachment'
|
|
76
|
+
{
|
|
77
|
+
dashboardAttachment: GoodData::DashboardAttachment::DEFAULT_OPTS.merge(opts)
|
|
78
|
+
}
|
|
79
|
+
elsif item == 'reportAttachment'
|
|
80
|
+
{
|
|
81
|
+
reportAttachment: GoodData::ReportAttachment::DEFAULT_OPTS.merge(opts)
|
|
82
|
+
}
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def create(options = { :client => GoodData.connection, :project => GoodData.project })
|
|
87
|
+
client = options[:client]
|
|
88
|
+
fail ArgumentError, 'No :client specified' if client.nil?
|
|
89
|
+
|
|
90
|
+
p = options[:project]
|
|
91
|
+
fail ArgumentError, 'No :project specified' if p.nil?
|
|
92
|
+
|
|
93
|
+
project = client.projects(p)
|
|
94
|
+
fail ArgumentError, 'Wrong :project specified' if project.nil?
|
|
95
|
+
|
|
96
|
+
opts = GoodData::ScheduledMail::DEFAULT_OPTS.merge(GoodData::Helpers.symbolize_keys(options))
|
|
97
|
+
|
|
98
|
+
scheduled_mail = {
|
|
99
|
+
:scheduledMail => {
|
|
100
|
+
:meta => {
|
|
101
|
+
:title => opts[:title],
|
|
102
|
+
:summary => opts[:summary],
|
|
103
|
+
:tags => opts[:tags],
|
|
104
|
+
:deprecated => opts[:deprecated]
|
|
105
|
+
},
|
|
106
|
+
:content => {
|
|
107
|
+
:when => {
|
|
108
|
+
:recurrency => opts[:recurrency],
|
|
109
|
+
:startDate => opts[:startDate] || opts[:start_date],
|
|
110
|
+
:timeZone => opts[:timeZone] || opts[:time_zone] || opts[:timezone]
|
|
111
|
+
},
|
|
112
|
+
:to => opts[:to].is_a?(Array) ? opts[:to] : [opts[:to]],
|
|
113
|
+
:bcc => opts[:bcc].is_a?(Array) ? opts[:bcc] : [opts[:bcc]],
|
|
114
|
+
:subject => opts[:subject],
|
|
115
|
+
:body => opts[:body]
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
attachments = opts[:attachments].map do |attachment|
|
|
121
|
+
key = attachment.keys.first
|
|
122
|
+
body = attachment[key]
|
|
123
|
+
|
|
124
|
+
ScheduledMail.convert_attachment(key, body)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
scheduled_mail[:scheduledMail][:content][:attachments] = attachments
|
|
128
|
+
|
|
129
|
+
client.create(ScheduledMail, GoodData::Helpers.stringify_keys(scheduled_mail), :project => project)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Add attachment
|
|
134
|
+
#
|
|
135
|
+
# @param [String | Object] item Schedule to add
|
|
136
|
+
# @param [Hash] opts Optional schedule options
|
|
137
|
+
# @return [Array] New list of attachments
|
|
138
|
+
def add_attachment(item, opts)
|
|
139
|
+
attachment = ScheduledMail.convert_attachment(item, opts)
|
|
140
|
+
fail ArgumentError unless attachment
|
|
141
|
+
|
|
142
|
+
content['attachments'] << attachment
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Add attachment and save
|
|
146
|
+
#
|
|
147
|
+
# @param [String | Object] item Schedule to add
|
|
148
|
+
# @param [Hash] opts Optional schedule options
|
|
149
|
+
# @return [Array] New list of attachments
|
|
150
|
+
def add_attachment!(item, opts)
|
|
151
|
+
add_attachment(item, opts)
|
|
152
|
+
save!
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Get attachments as objects
|
|
156
|
+
#
|
|
157
|
+
# @return [Array<GoodData::DashboardAttachment | GoodData::ReportAttachment>] Array of attachments
|
|
158
|
+
def attachments
|
|
159
|
+
content['attachments'].map do |attachment|
|
|
160
|
+
key = attachment.keys.first
|
|
161
|
+
|
|
162
|
+
if key == 'dashboardAttachment'
|
|
163
|
+
GoodData::DashboardAttachment.new(self, attachment)
|
|
164
|
+
elsif key == 'reportAttachment'
|
|
165
|
+
GoodData::ReportAttachment.new(self, attachment)
|
|
166
|
+
else
|
|
167
|
+
RuntimeError "Unsupported attachment type: #{key}"
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Get body
|
|
173
|
+
#
|
|
174
|
+
# @return [String] Scheduled email body
|
|
175
|
+
def body
|
|
176
|
+
content['body']
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# Set body
|
|
180
|
+
#
|
|
181
|
+
# @param [String] new_body New body to be set
|
|
182
|
+
# @return [String] New body
|
|
183
|
+
def body=(new_body)
|
|
184
|
+
content['body'] = new_body
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Get recurrency string
|
|
188
|
+
#
|
|
189
|
+
# @return [String] Recurrency (cron) string
|
|
190
|
+
def recurrency
|
|
191
|
+
content['when']['recurrency']
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
# Set recurrency
|
|
195
|
+
#
|
|
196
|
+
# @param [String] new_recurrency New recurrency to be set
|
|
197
|
+
# @return [Hash] New recurrency
|
|
198
|
+
def recurrency=(new_recurrency)
|
|
199
|
+
content['when']['recurrency'] = new_recurrency
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
# Get start date
|
|
203
|
+
#
|
|
204
|
+
# @return [String] Start date
|
|
205
|
+
def start_date
|
|
206
|
+
content['when']['startDate']
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
# Set start date
|
|
210
|
+
#
|
|
211
|
+
# @param [String] new_start_date New start date to be set
|
|
212
|
+
# @return [String] New start date
|
|
213
|
+
def start_date=(new_start_date)
|
|
214
|
+
content['when']['startDate'] = new_start_date
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
# Get subject
|
|
218
|
+
#
|
|
219
|
+
# @return [String] Subject of scheduled email
|
|
220
|
+
def subject
|
|
221
|
+
content['subject']
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
# Set subject
|
|
225
|
+
#
|
|
226
|
+
# @param [String] new_subject New subject to be set
|
|
227
|
+
# @return [String] New subject
|
|
228
|
+
def subject=(new_subject)
|
|
229
|
+
content['subject'] = new_subject
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
# Get timezone
|
|
233
|
+
#
|
|
234
|
+
# @return [String] Timezone
|
|
235
|
+
def timezone
|
|
236
|
+
content['when']['timeZone']
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Set timezone
|
|
240
|
+
#
|
|
241
|
+
# @param [String] new_timezone New timezone string to be set
|
|
242
|
+
# @return [String] New timezone
|
|
243
|
+
def timezone=(new_timezone)
|
|
244
|
+
content['when']['timeZone'] = new_timezone
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
# Get recipients
|
|
248
|
+
#
|
|
249
|
+
# @return [String] Recipients of email
|
|
250
|
+
def to
|
|
251
|
+
content['to']
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# Set recipients
|
|
255
|
+
#
|
|
256
|
+
# @param [String|Array<String>] new_to New recipients to be set
|
|
257
|
+
# @return [Array<String>] New recipient list
|
|
258
|
+
def to=(new_to)
|
|
259
|
+
content['to'] = new_to.is_a?(Array) ? new_to : [new_to]
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
# Get 'when' section
|
|
263
|
+
#
|
|
264
|
+
# @return [Hash] 'when' section from json
|
|
265
|
+
def when
|
|
266
|
+
content['when']
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
# Set 'when' section
|
|
270
|
+
#
|
|
271
|
+
# @param [Hash] new_when New 'when' section to be set
|
|
272
|
+
# @return [Hash] New 'when' section
|
|
273
|
+
def when=(new_when)
|
|
274
|
+
content['when'] = new_when
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
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 DashboardAttachment
|
|
9
|
+
include GoodData::Mixin::RootKeyGetter
|
|
10
|
+
include GoodData::Mixin::DataGetter
|
|
11
|
+
|
|
12
|
+
attr_reader :scheduled_email
|
|
13
|
+
attr_accessor :json
|
|
14
|
+
|
|
15
|
+
DEFAULT_OPTS = {
|
|
16
|
+
:allTabs => 1,
|
|
17
|
+
:tabs => []
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
def initialize(scheduled_email, json)
|
|
21
|
+
@scheduled_email = scheduled_email
|
|
22
|
+
@json = json
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Get all tabs flag
|
|
26
|
+
#
|
|
27
|
+
# @return [Fixnum] All dashboard tabs?
|
|
28
|
+
def all_tabs
|
|
29
|
+
data['allTabs']
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Set all tabs flag
|
|
33
|
+
#
|
|
34
|
+
# @param [String | Fixnum] new_all_tabs New value of all_tabs flag to be set
|
|
35
|
+
# @return [Fixnum] New value of all_tabs flag
|
|
36
|
+
def all_tabs=(new_all_tabs)
|
|
37
|
+
data['allTabs'] = new_all_tabs.to_i
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Get selected tabs
|
|
41
|
+
#
|
|
42
|
+
# @return [Array<String>] List of selected tabs
|
|
43
|
+
def tabs
|
|
44
|
+
data['tabs']
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Set selected tabs
|
|
48
|
+
#
|
|
49
|
+
# @param [Array<String>] new_tabs New list of selected tabs to be set
|
|
50
|
+
# @return [Array<String>] New list of selected tabs
|
|
51
|
+
def tabs=(new_tabs)
|
|
52
|
+
data['tabs'] = new_tabs
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Get attachment URI
|
|
56
|
+
#
|
|
57
|
+
# @return [String] Attachment URI
|
|
58
|
+
def uri
|
|
59
|
+
data['uri']
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
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 ReportAttachment
|
|
9
|
+
include GoodData::Mixin::RootKeyGetter
|
|
10
|
+
include GoodData::Mixin::DataGetter
|
|
11
|
+
|
|
12
|
+
attr_reader :scheduled_email
|
|
13
|
+
attr_accessor :json
|
|
14
|
+
|
|
15
|
+
DEFAULT_OPTS = {
|
|
16
|
+
:formats => %w(pdf xls),
|
|
17
|
+
:exportOptions => {
|
|
18
|
+
:pageOrientation => 'landscape'
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
def initialize(scheduled_email, json)
|
|
23
|
+
@scheduled_email = scheduled_email
|
|
24
|
+
@json = json
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Get export options settings
|
|
28
|
+
#
|
|
29
|
+
# @return [Hash] Export options settings
|
|
30
|
+
def export_options
|
|
31
|
+
data['exportOptions']
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Set export options settings
|
|
35
|
+
#
|
|
36
|
+
# @param [Hash] new_export_options New export options settings to be set
|
|
37
|
+
# @return [Hash] New export options settings
|
|
38
|
+
def export_options=(new_export_options)
|
|
39
|
+
data['exportOptions'] = new_export_options
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Get formats
|
|
43
|
+
#
|
|
44
|
+
# @return [Array<String>] List of selected formats
|
|
45
|
+
def formats
|
|
46
|
+
data['formats']
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Set formats
|
|
50
|
+
#
|
|
51
|
+
# @param [String | Array<String>] new_formats New list of selected formats to be set
|
|
52
|
+
# @return [Array<String>] New list of selected formats
|
|
53
|
+
def formats=(new_formats)
|
|
54
|
+
data['formats'] = new_formats.is_a?(Array) ? new_formats : [new_formats]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Get attachment URI
|
|
58
|
+
#
|
|
59
|
+
# @return [String] Attachment URI
|
|
60
|
+
def uri
|
|
61
|
+
data['uri']
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
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 '../metadata'
|
|
8
|
+
|
|
9
|
+
require_relative 'metadata'
|
|
10
|
+
|
|
11
|
+
module GoodData
|
|
12
|
+
class Variable < MdObject
|
|
13
|
+
class << self
|
|
14
|
+
# Method intended to get all objects of that type in a specified project
|
|
15
|
+
#
|
|
16
|
+
# @param options [Hash] the options hash
|
|
17
|
+
# @option options [Boolean] :full if passed true the subclass can decide
|
|
18
|
+
# to pull in full objects. This is desirable from the usability
|
|
19
|
+
# POV but unfortunately has negative impact on performance so it
|
|
20
|
+
# is not the default
|
|
21
|
+
# @return [Array<GoodData::MdObject> | Array<Hash>] Return the appropriate metadata objects or their representation
|
|
22
|
+
def all(options = { :client => GoodData.connection, :project => GoodData.project })
|
|
23
|
+
query('prompt', Variable, options)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def create(data, options = { :client => GoodData.connection, :project => GoodData.project })
|
|
27
|
+
title = data[:title]
|
|
28
|
+
project = options[:project]
|
|
29
|
+
c = client(options)
|
|
30
|
+
attribute = project.attributes(data[:attribute])
|
|
31
|
+
|
|
32
|
+
payload = {
|
|
33
|
+
'prompt' => {
|
|
34
|
+
'content' => {
|
|
35
|
+
'attribute' => attribute.uri,
|
|
36
|
+
'type' => 'filter'
|
|
37
|
+
},
|
|
38
|
+
'meta' => {
|
|
39
|
+
'tags' => '',
|
|
40
|
+
'deprecated' => '0',
|
|
41
|
+
'summary' => '',
|
|
42
|
+
'title' => title,
|
|
43
|
+
'category' => 'prompt'
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
c.create(self, payload, project: project)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Retrieves variable values
|
|
52
|
+
#
|
|
53
|
+
# @return [Array<GoodData::VariableUserFilter>] Values of variable
|
|
54
|
+
def values
|
|
55
|
+
payload = {
|
|
56
|
+
variablesSearch: {
|
|
57
|
+
variables: [
|
|
58
|
+
uri
|
|
59
|
+
],
|
|
60
|
+
context: []
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
client.post("/gdc/md/#{project.pid}/variables/search", payload)['variables'].map { |f| client.create(GoodData::VariableUserFilter, f, project: project) }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Retrieves variable values and returns only those related to user
|
|
67
|
+
#
|
|
68
|
+
# @return [Array<GoodData::VariableUserFilter>] Values of variable related to user
|
|
69
|
+
def user_values
|
|
70
|
+
values.select { |x| x.level == :user }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Method used for replacing values in their state according to mapping.
|
|
74
|
+
# Can be used to replace any values but it is typically used to replace
|
|
75
|
+
# the URIs. Returns a new object of the same type.
|
|
76
|
+
#
|
|
77
|
+
# @param [Array<Array>]Mapping specifying what should be exchanged for what. As mapping should be used output of GoodData::Helpers.prepare_mapping.
|
|
78
|
+
# @return [GoodData::Variable]
|
|
79
|
+
def replace(mapping)
|
|
80
|
+
GoodData::MdObject.replace_quoted(self, mapping)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Retrieves variable values and returns only those related to project
|
|
84
|
+
#
|
|
85
|
+
# @return [Array<GoodData::VariableUserFilter>] Values of variable related to project
|
|
86
|
+
def project_values
|
|
87
|
+
values.select { |x| x.level == :project }
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Deletes all the values and eventually the variable itself
|
|
91
|
+
def delete
|
|
92
|
+
values.pmap(&:delete)
|
|
93
|
+
super
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|