Sha256: ccae061f5a7e6a7201eff206e6be6a89356530a8e538d11566e3353a3331f444

Contents?: true

Size: 1.93 KB

Versions: 77

Compression:

Stored size: 1.93 KB

Contents

# encoding: UTF-8
#
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

module GoodData
  class ProjectMetadata
    class << self
      def keys(opts = { :client => GoodData.connection, :project => GoodData.project })
        ProjectMetadata[:all, opts].keys
      end

      def [](key, opts = { :client => GoodData.connection, :project => GoodData.project })
        client, project = GoodData.get_client_and_project(opts)

        get_opts = {
          do_not_log: [
            RestClient::ResourceNotFound
          ]
        }

        if key == :all
          uri = "/gdc/projects/#{project.pid}/dataload/metadata"
          res = client.get(uri, get_opts)
          res['metadataItems']['items'].reduce({}) do |memo, i|
            memo[i['metadataItem']['key']] = i['metadataItem']['value']
            memo
          end
        else
          uri = "/gdc/projects/#{project.pid}/dataload/metadata/#{key}"
          res = client.get(uri, get_opts)
          res['metadataItem']['value']
        end
      end

      alias_method :get, :[]
      alias_method :get_key, :[]

      def key?(key, opts = { :client => GoodData.connection, :project => GoodData.project })
        ProjectMetadata[key, opts]
        true
      rescue RestClient::ResourceNotFound
        false
      end

      def []=(key, opts = { :client => GoodData.connection, :project => GoodData.project }, val = nil)
        client, project = GoodData.get_client_and_project(opts)

        data = {
          :metadataItem => {
            :key => key,
            :value => val
          }
        }
        uri = "/gdc/projects/#{project.pid}/dataload/metadata/"
        update_uri = uri + key

        if key?(key, opts)
          client.put(update_uri, data)
        else
          client.post(uri, data)
        end
      end
    end
  end
end

Version data entries

77 entries across 77 versions & 1 rubygems

Version Path
gooddata-2.3.1-java lib/gooddata/models/project_metadata.rb
gooddata-2.3.1 lib/gooddata/models/project_metadata.rb
gooddata-2.3.0-java lib/gooddata/models/project_metadata.rb
gooddata-2.3.0 lib/gooddata/models/project_metadata.rb
gooddata-2.2.0-java lib/gooddata/models/project_metadata.rb
gooddata-2.2.0 lib/gooddata/models/project_metadata.rb
gooddata-2.1.19-java lib/gooddata/models/project_metadata.rb
gooddata-2.1.19 lib/gooddata/models/project_metadata.rb
gooddata-2.1.17-java lib/gooddata/models/project_metadata.rb
gooddata-2.1.17 lib/gooddata/models/project_metadata.rb
gooddata-2.1.15-java lib/gooddata/models/project_metadata.rb
gooddata-2.1.15 lib/gooddata/models/project_metadata.rb
gooddata-2.1.14-java lib/gooddata/models/project_metadata.rb
gooddata-2.1.14 lib/gooddata/models/project_metadata.rb
gooddata-2.1.13-java lib/gooddata/models/project_metadata.rb
gooddata-2.1.13 lib/gooddata/models/project_metadata.rb
gooddata-2.1.12-java lib/gooddata/models/project_metadata.rb
gooddata-2.1.12 lib/gooddata/models/project_metadata.rb
gooddata-2.1.11-java lib/gooddata/models/project_metadata.rb
gooddata-2.1.11 lib/gooddata/models/project_metadata.rb