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.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitignore +36 -0
- data/.rspec +3 -0
- data/.rubocop.yml +89 -0
- data/.yardopts +22 -0
- data/CHANGELOG.md +196 -0
- data/CLI.md +439 -0
- data/DEPENDENCIES.md +817 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/LICENSE.rb +5 -0
- data/README.md +75 -0
- data/Rakefile +179 -0
- data/TODO.md +32 -0
- data/authors.sh +4 -0
- data/bin/gooddata +7 -0
- data/dependency_decisions.yml +104 -0
- data/gooddata +9 -0
- data/gooddata.gemspec +63 -0
- data/lib/gooddata.rb +31 -0
- data/lib/gooddata/app/app.rb +16 -0
- data/lib/gooddata/bricks/base_downloader.rb +86 -0
- data/lib/gooddata/bricks/brick.rb +38 -0
- data/lib/gooddata/bricks/bricks.rb +15 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/base_middleware.rb +56 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +24 -0
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +20 -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 +39 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +61 -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 +32 -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 +45 -0
- data/lib/gooddata/cli/hooks.rb +57 -0
- data/lib/gooddata/cli/shared.rb +61 -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 +175 -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 +23 -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/filter_maqlization.rb +16 -0
- data/lib/gooddata/exceptions/malformed_user.rb +15 -0
- data/lib/gooddata/exceptions/no_project_error.rb +15 -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/enumerable.rb +39 -0
- data/lib/gooddata/extensions/extensions.rb +10 -0
- data/lib/gooddata/extensions/false.rb +15 -0
- data/lib/gooddata/extensions/hash.rb +38 -0
- data/lib/gooddata/extensions/nil.rb +15 -0
- data/lib/gooddata/extensions/numeric.rb +15 -0
- data/lib/gooddata/extensions/object.rb +27 -0
- data/lib/gooddata/extensions/symbol.rb +15 -0
- data/lib/gooddata/extensions/true.rb +15 -0
- data/lib/gooddata/extract.rb +21 -0
- data/lib/gooddata/goodzilla/goodzilla.rb +159 -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 +116 -0
- data/lib/gooddata/helpers/global_helpers.rb +331 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +172 -0
- data/lib/gooddata/helpers/helpers.rb +10 -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_label.rb +19 -0
- data/lib/gooddata/mixins/links.rb +15 -0
- data/lib/gooddata/mixins/md_finders.rb +77 -0
- data/lib/gooddata/mixins/md_grantees.rb +42 -0
- data/lib/gooddata/mixins/md_id_to_uri.rb +34 -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 +64 -0
- data/lib/gooddata/mixins/md_object_query.rb +128 -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/blueprint/anchor_field.rb +64 -0
- data/lib/gooddata/models/blueprint/attribute_field.rb +29 -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 +449 -0
- data/lib/gooddata/models/blueprint/date_dimension.rb +14 -0
- data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
- data/lib/gooddata/models/blueprint/label_field.rb +43 -0
- data/lib/gooddata/models/blueprint/project_blueprint.rb +746 -0
- data/lib/gooddata/models/blueprint/project_builder.rb +83 -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 +181 -0
- data/lib/gooddata/models/blueprint/to_wire.rb +154 -0
- data/lib/gooddata/models/client.rb +182 -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/datawarehouse.rb +92 -0
- data/lib/gooddata/models/domain.rb +479 -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 +160 -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 +272 -0
- data/lib/gooddata/models/metadata/attribute.rb +134 -0
- data/lib/gooddata/models/metadata/dashboard.rb +108 -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 +64 -0
- data/lib/gooddata/models/metadata/dimension.rb +54 -0
- data/lib/gooddata/models/metadata/fact.rb +44 -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 +198 -0
- data/lib/gooddata/models/metadata/report.rb +247 -0
- data/lib/gooddata/models/metadata/report_definition.rb +264 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +274 -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 +91 -0
- data/lib/gooddata/models/model.rb +282 -0
- data/lib/gooddata/models/models.rb +12 -0
- data/lib/gooddata/models/module_constants.rb +31 -0
- data/lib/gooddata/models/process.rb +316 -0
- data/lib/gooddata/models/profile.rb +426 -0
- data/lib/gooddata/models/project.rb +1514 -0
- data/lib/gooddata/models/project_creator.rb +126 -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 +266 -0
- data/lib/gooddata/models/schedule.rb +518 -0
- data/lib/gooddata/models/segment.rb +201 -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 +100 -0
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +512 -0
- data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +31 -0
- data/lib/gooddata/models/user_group.rb +241 -0
- data/lib/gooddata/rest/README.md +37 -0
- data/lib/gooddata/rest/client.rb +389 -0
- data/lib/gooddata/rest/connection.rb +765 -0
- data/lib/gooddata/rest/object.rb +69 -0
- data/lib/gooddata/rest/object_factory.rb +76 -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/bricks/bricks_spec.rb +112 -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/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 +38 -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/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/model_view.json +1775 -0
- data/spec/data/wire_models/nu_model.json +3046 -0
- data/spec/data/wire_models/test_blueprint.json +63 -0
- data/spec/data/wire_test_project.json +150 -0
- data/spec/environment/default.rb +41 -0
- data/spec/environment/develop.rb +31 -0
- data/spec/environment/environment.rb +18 -0
- data/spec/environment/hotfix.rb +21 -0
- data/spec/environment/production.rb +35 -0
- data/spec/environment/release.rb +21 -0
- data/spec/environment/staging.rb +30 -0
- data/spec/environment/staging_3.rb +36 -0
- data/spec/helpers/blueprint_helper.rb +26 -0
- data/spec/helpers/cli_helper.rb +36 -0
- data/spec/helpers/connection_helper.rb +41 -0
- data/spec/helpers/crypto_helper.rb +17 -0
- data/spec/helpers/csv_helper.rb +18 -0
- data/spec/helpers/process_helper.rb +33 -0
- data/spec/helpers/project_helper.rb +59 -0
- data/spec/helpers/schedule_helper.rb +31 -0
- data/spec/helpers/spec_helper.rb +15 -0
- data/spec/integration/blueprint_updates_spec.rb +101 -0
- data/spec/integration/blueprint_with_grain_spec.rb +72 -0
- data/spec/integration/clients_spec.rb +134 -0
- data/spec/integration/command_datawarehouse_spec.rb +39 -0
- data/spec/integration/command_projects_spec.rb +32 -0
- data/spec/integration/create_from_template_spec.rb +22 -0
- data/spec/integration/create_project_spec.rb +24 -0
- data/spec/integration/date_dim_switch_spec.rb +142 -0
- data/spec/integration/deprecated_load_spec.rb +58 -0
- data/spec/integration/full_process_schedule_spec.rb +298 -0
- data/spec/integration/full_project_spec.rb +569 -0
- data/spec/integration/over_to_user_filters_spec.rb +94 -0
- data/spec/integration/partial_md_export_import_spec.rb +42 -0
- data/spec/integration/project_spec.rb +264 -0
- data/spec/integration/rest_spec.rb +213 -0
- data/spec/integration/schedule_spec.rb +626 -0
- data/spec/integration/segments_spec.rb +141 -0
- data/spec/integration/user_filters_spec.rb +290 -0
- data/spec/integration/user_group_spec.rb +127 -0
- data/spec/integration/variables_spec.rb +188 -0
- data/spec/logging_in_logging_out_spec.rb +93 -0
- data/spec/spec_helper.rb +95 -0
- data/spec/unit/bricks/bricks_spec.rb +35 -0
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +51 -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 +15 -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/commands/command_projects_spec.rb +22 -0
- data/spec/unit/core/connection_spec.rb +57 -0
- data/spec/unit/core/logging_spec.rb +133 -0
- data/spec/unit/core/nil_logger_spec.rb +13 -0
- data/spec/unit/core/project_spec.rb +54 -0
- data/spec/unit/extensions/hash_spec.rb +23 -0
- data/spec/unit/godzilla/goodzilla_spec.rb +78 -0
- data/spec/unit/helpers/csv_helper_spec.rb +22 -0
- data/spec/unit/helpers/data_helper_spec.rb +61 -0
- data/spec/unit/helpers/global_helpers_spec.rb +111 -0
- data/spec/unit/helpers_spec.rb +86 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +29 -0
- data/spec/unit/models/blueprint/dataset_spec.rb +121 -0
- data/spec/unit/models/blueprint/labels_spec.rb +44 -0
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +648 -0
- data/spec/unit/models/blueprint/reference_spec.rb +29 -0
- data/spec/unit/models/blueprint/schema_builder_spec.rb +38 -0
- data/spec/unit/models/blueprint/to_wire_spec.rb +174 -0
- data/spec/unit/models/domain_spec.rb +144 -0
- data/spec/unit/models/execution_spec.rb +108 -0
- data/spec/unit/models/from_wire_spec.rb +296 -0
- data/spec/unit/models/invitation_spec.rb +17 -0
- data/spec/unit/models/membership_spec.rb +132 -0
- data/spec/unit/models/metadata_spec.rb +104 -0
- data/spec/unit/models/metric_spec.rb +117 -0
- data/spec/unit/models/model_spec.rb +82 -0
- data/spec/unit/models/params_spec.rb +118 -0
- data/spec/unit/models/profile_spec.rb +215 -0
- data/spec/unit/models/project_creator_spec.rb +127 -0
- data/spec/unit/models/project_role_spec.rb +94 -0
- data/spec/unit/models/project_spec.rb +162 -0
- data/spec/unit/models/report_result_data_spec.rb +199 -0
- data/spec/unit/models/schedule_spec.rb +418 -0
- data/spec/unit/models/to_manifest_spec.rb +63 -0
- data/spec/unit/models/unit_project_spec.rb +125 -0
- data/spec/unit/models/user_filters_spec.rb +95 -0
- data/spec/unit/models/variable_spec.rb +265 -0
- data/spec/unit/rest/polling_spec.rb +89 -0
- data/spec/unit/rest/resource_spec.rb +10 -0
- data/yard-server.sh +3 -0
- metadata +1125 -0
@@ -0,0 +1,69 @@
|
|
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 '../mixins/data_property_reader'
|
8
|
+
require_relative '../mixins/data_property_writer'
|
9
|
+
|
10
|
+
require_relative '../mixins/content_getter'
|
11
|
+
|
12
|
+
require_relative '../mixins/meta_getter'
|
13
|
+
|
14
|
+
require_relative '../mixins/meta_property_reader'
|
15
|
+
require_relative '../mixins/meta_property_writer'
|
16
|
+
|
17
|
+
require_relative '../mixins/root_key_getter'
|
18
|
+
|
19
|
+
module GoodData
|
20
|
+
module Rest
|
21
|
+
# Base class dealing with REST endpoints
|
22
|
+
#
|
23
|
+
# MUST Be interface for objects dealing with REST endpoints
|
24
|
+
# MUST provide way to work with remote REST-like API in unified manner.
|
25
|
+
# MUST NOT create new connections.
|
26
|
+
class Object
|
27
|
+
extend Mixin::DataPropertyReader
|
28
|
+
extend Mixin::DataPropertyWriter
|
29
|
+
|
30
|
+
extend Mixin::MetaPropertyReader
|
31
|
+
extend Mixin::MetaPropertyWriter
|
32
|
+
|
33
|
+
include Mixin::ContentGetter
|
34
|
+
include Mixin::RootKeyGetter
|
35
|
+
include Mixin::DataGetter
|
36
|
+
include Mixin::MetaGetter
|
37
|
+
|
38
|
+
attr_accessor :json
|
39
|
+
alias_method :raw_data, :json
|
40
|
+
alias_method :to_hash, :json
|
41
|
+
|
42
|
+
alias_method :to_json, :json
|
43
|
+
|
44
|
+
attr_writer :client
|
45
|
+
attr_accessor :project
|
46
|
+
|
47
|
+
def initialize(_opts = {})
|
48
|
+
@client = nil
|
49
|
+
end
|
50
|
+
|
51
|
+
def client(opts = {})
|
52
|
+
@client || GoodData::Rest::Object.client(opts)
|
53
|
+
end
|
54
|
+
|
55
|
+
def saved?
|
56
|
+
!uri.blank?
|
57
|
+
end
|
58
|
+
|
59
|
+
class << self
|
60
|
+
def default_client
|
61
|
+
end
|
62
|
+
|
63
|
+
def client(opts = { :client => GoodData.connection })
|
64
|
+
opts[:client] # || GoodData.client
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,76 @@
|
|
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 'object'
|
8
|
+
|
9
|
+
module GoodData
|
10
|
+
module Rest
|
11
|
+
# Bridge between Rest::Object and Rest::Connection
|
12
|
+
#
|
13
|
+
# MUST be Responsible for creating new Rest::Object instances using proper Rest::Connection
|
14
|
+
# SHOULD be used for throttling, statistics, custom 'allocation strategies' ...
|
15
|
+
class ObjectFactory
|
16
|
+
attr_accessor :client
|
17
|
+
attr_accessor :connection
|
18
|
+
attr_accessor :objects
|
19
|
+
attr_accessor :resources
|
20
|
+
|
21
|
+
#################################
|
22
|
+
# Class methods
|
23
|
+
#################################
|
24
|
+
class << self
|
25
|
+
# Gets list of all GoodData::Rest::Object subclasses
|
26
|
+
#
|
27
|
+
# @return [Array<GoodData::Rest::Object>] Subclasses of GoodData::Rest::Object
|
28
|
+
def objects
|
29
|
+
ObjectSpace.each_object(Class).select { |klass| klass < GoodData::Rest::Object }
|
30
|
+
end
|
31
|
+
|
32
|
+
# Gets list of all GoodData::Rest::Resource subclasses
|
33
|
+
#
|
34
|
+
# @return [Array<GoodData::Rest::Resource>] Subclasses of GoodData::Rest::Resource
|
35
|
+
def resources
|
36
|
+
ObjectSpace.each_object(Class).select { |klass| klass < GoodData::Rest::Resource }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Initializes instance of factory
|
41
|
+
#
|
42
|
+
# @param connection [GoodData::Rest::Connection] Connection used by factory
|
43
|
+
# @return [GoodData::Rest::ObjectFactory] Factory instance
|
44
|
+
def initialize(client)
|
45
|
+
fail ArgumentError 'Invalid connection passed' if client.nil?
|
46
|
+
|
47
|
+
@client = client
|
48
|
+
|
49
|
+
# Set connection used by factory
|
50
|
+
@connection = @client.connection
|
51
|
+
|
52
|
+
# Initialize internal factory map of GoodData::Rest::Object instances
|
53
|
+
@objects = ObjectFactory.objects
|
54
|
+
|
55
|
+
# Initialize internal factory map of GoodData::Rest::Resource instances
|
56
|
+
@resources = ObjectFactory.resources
|
57
|
+
end
|
58
|
+
|
59
|
+
def create(type, data = {}, opts = {})
|
60
|
+
res = type.new(data)
|
61
|
+
res.client = client
|
62
|
+
|
63
|
+
opts.each do |key, value|
|
64
|
+
method = "#{key}="
|
65
|
+
res.send(method, value) if res.respond_to?(method)
|
66
|
+
end
|
67
|
+
|
68
|
+
res
|
69
|
+
end
|
70
|
+
|
71
|
+
def find(type, opts = {})
|
72
|
+
type.send('find', opts, @client)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,27 @@
|
|
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 'object'
|
8
|
+
|
9
|
+
require_relative '../mixins/obj_id'
|
10
|
+
require_relative '../mixins/rest_resource'
|
11
|
+
|
12
|
+
module GoodData
|
13
|
+
module Rest
|
14
|
+
# Base class for REST resources implementing (at least 'somehow') full CRUD
|
15
|
+
#
|
16
|
+
# IS responsible for wrapping full CRUD interface
|
17
|
+
class Resource < Object
|
18
|
+
include Mixin::RestResource
|
19
|
+
include Mixin::ObjId
|
20
|
+
|
21
|
+
# Default constructor passing all arguments to parent
|
22
|
+
def initialize(opts = {})
|
23
|
+
super(opts)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
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 'pathname'
|
8
|
+
|
9
|
+
base = Pathname(__FILE__).dirname.expand_path
|
10
|
+
Dir.glob(base + '*.rb').each do |file|
|
11
|
+
require_relative file
|
12
|
+
end
|
13
|
+
|
14
|
+
module GoodData
|
15
|
+
module Rest
|
16
|
+
class << self
|
17
|
+
# Print GoodData::Rest internal info
|
18
|
+
def info
|
19
|
+
# TODO: Print objects
|
20
|
+
# TODO: Print resources
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,23 @@
|
|
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
|
+
# GoodData Module
|
8
|
+
module GoodData
|
9
|
+
VERSION = '0.6.27.edge'
|
10
|
+
|
11
|
+
class << self
|
12
|
+
# Version
|
13
|
+
def version
|
14
|
+
VERSION
|
15
|
+
end
|
16
|
+
|
17
|
+
# Identifier of gem version
|
18
|
+
# @return Formatted gem version
|
19
|
+
def gem_version_string
|
20
|
+
"gooddata-gem/#{VERSION}/#{RUBY_PLATFORM}/#{RUBY_VERSION}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
GoodData::Model::ProjectBuilder.create("Test project") do |p|
|
2
|
+
p.add_date_dimension("committed_on")
|
3
|
+
|
4
|
+
p.add_dataset("repos") do |d|
|
5
|
+
d.add_anchor("repo_id")
|
6
|
+
d.add_label("name", :reference => "repo_id")
|
7
|
+
end
|
8
|
+
|
9
|
+
p.add_dataset("devs") do |d|
|
10
|
+
d.add_anchor("dev_id")
|
11
|
+
d.add_label("email", :reference => "dev_id")
|
12
|
+
end
|
13
|
+
|
14
|
+
p.add_dataset("commits") do |d|
|
15
|
+
d.add_fact("lines_changed")
|
16
|
+
d.add_date("committed_on", :dataset => "committed_on")
|
17
|
+
d.add_reference('devs')
|
18
|
+
d.add_reference('repos')
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,112 @@
|
|
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 'gooddata/bricks/brick'
|
8
|
+
require 'gooddata/bricks/bricks'
|
9
|
+
require 'gooddata/bricks/middleware/base_middleware'
|
10
|
+
require 'pry'
|
11
|
+
|
12
|
+
describe GoodData::Bricks do
|
13
|
+
it "Has GoodData::Bricks::Brick class" do
|
14
|
+
GoodData::Bricks::Brick.should_not == nil
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should be possible to use block as an app in pipeline" do
|
18
|
+
p = GoodData::Bricks::Pipeline.prepare([
|
19
|
+
lambda { |params| puts "x" }
|
20
|
+
])
|
21
|
+
p.call({})
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#load_defaults" do
|
25
|
+
context "when you define a middleware with default_loaded_call and give it some defaults file with prefix" do
|
26
|
+
class TestMiddleWare < GoodData::Bricks::Middleware
|
27
|
+
def initialize(options={})
|
28
|
+
@config = 'spec/bricks/default-config.json'
|
29
|
+
super(options)
|
30
|
+
end
|
31
|
+
|
32
|
+
def call(params)
|
33
|
+
params = super(params)
|
34
|
+
my_stuff = params['config']['my']['namespace']
|
35
|
+
puts "Now I have the defaults and runtime parameters merged and loaded: #{my_stuff['key']}"
|
36
|
+
|
37
|
+
# Doing something cool and puting it into params
|
38
|
+
params['something_cool'] = "#{my_stuff['key']} and also #{my_stuff['default_key']}"
|
39
|
+
|
40
|
+
@app.call(params)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class TestBrick
|
45
|
+
def call(params)
|
46
|
+
# doing something with params
|
47
|
+
puts "Brick: #{params['something_cool']}"
|
48
|
+
params
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "puts them into params" do
|
53
|
+
p = GoodData::Bricks::Pipeline.prepare([
|
54
|
+
TestMiddleWare,
|
55
|
+
TestBrick
|
56
|
+
])
|
57
|
+
|
58
|
+
res = p.call({
|
59
|
+
'config' => {
|
60
|
+
'my' => {
|
61
|
+
'namespace' => {
|
62
|
+
'key' => 'redefined value',
|
63
|
+
'new_key' => 'new value'
|
64
|
+
}
|
65
|
+
},
|
66
|
+
'other_namespace' => {
|
67
|
+
'some_key' => 'some value'
|
68
|
+
}
|
69
|
+
}
|
70
|
+
})
|
71
|
+
|
72
|
+
res.should eq({
|
73
|
+
'config' => {
|
74
|
+
'my' => {
|
75
|
+
'namespace' => {
|
76
|
+
'key' => 'redefined value',
|
77
|
+
'new_key' => 'new value',
|
78
|
+
'default_key' => 'default value 2'
|
79
|
+
}
|
80
|
+
},
|
81
|
+
'other_namespace' => {
|
82
|
+
'some_key' => 'some value'
|
83
|
+
}
|
84
|
+
},
|
85
|
+
"something_cool" => "redefined value and also default value 2"
|
86
|
+
})
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
# TODO: Better test pre and post so we are sure it is executed in right order
|
93
|
+
it "should be possible to use instance both as middleware and app" do
|
94
|
+
|
95
|
+
class DummyMiddleware < GoodData::Bricks::Middleware
|
96
|
+
|
97
|
+
def call(params)
|
98
|
+
puts "pre"
|
99
|
+
app.call(params)
|
100
|
+
puts "post"
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
p = GoodData::Bricks::Pipeline.prepare([
|
106
|
+
DummyMiddleware.new,
|
107
|
+
lambda { |params| puts "x" }
|
108
|
+
])
|
109
|
+
p.call({})
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
data/spec/data/.gooddata
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"title": "RubyGem Dev Week test",
|
3
|
+
"datasets": [
|
4
|
+
{
|
5
|
+
"type": "dataset",
|
6
|
+
"id": "dataset.sales",
|
7
|
+
"title": "Commits",
|
8
|
+
"columns": [
|
9
|
+
{
|
10
|
+
"type": "anchor",
|
11
|
+
"id": "attr.sales.id"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"type": "fact",
|
15
|
+
"id" : "some_sales_fact_id",
|
16
|
+
"title": "Sales fact Title",
|
17
|
+
"description": "Sales Fact description"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"type": "reference",
|
21
|
+
"id": "ref_dev_id",
|
22
|
+
"dataset": "dataset.devs"
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"type": "reference",
|
26
|
+
"id": "ref_repo_id",
|
27
|
+
"dataset": "dataset.repos"
|
28
|
+
}
|
29
|
+
]
|
30
|
+
}
|
31
|
+
]
|
32
|
+
}
|