crowdskout 0.0.4 → 0.0.5
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 +4 -4
 - data/README.md +4 -4
 - data/crowdskout.gemspec +1 -1
 - data/lib/crowdskout.rb +4 -2
 - data/lib/crowdskout/api.rb +8 -2
 - data/lib/crowdskout/auth/oauth2.rb +6 -0
 - data/lib/crowdskout/components/attributes/attribute.rb +12 -0
 - data/lib/crowdskout/components/attributes/option.rb +7 -3
 - data/lib/crowdskout/components/component.rb +13 -2
 - data/lib/crowdskout/components/fields/field_options.rb +12 -0
 - data/lib/crowdskout/components/profiles/collection.rb +30 -0
 - data/lib/crowdskout/components/profiles/field.rb +29 -0
 - data/lib/crowdskout/components/profiles/item.rb +34 -0
 - data/lib/crowdskout/components/profiles/profile.rb +22 -16
 - data/lib/crowdskout/components/profiles/{name.rb → value.rb} +10 -6
 - data/lib/crowdskout/components/result_set.rb +4 -2
 - data/lib/crowdskout/exceptions/oauth2_exception.rb +6 -0
 - data/lib/crowdskout/exceptions/service_exception.rb +6 -0
 - data/lib/crowdskout/services/attribute_service.rb +20 -6
 - data/lib/crowdskout/services/base_service.rb +6 -0
 - data/lib/crowdskout/services/field_service.rb +11 -0
 - data/lib/crowdskout/services/profile_service.rb +27 -2
 - data/lib/crowdskout/util/config.rb +6 -0
 - data/lib/crowdskout/util/helpers.rb +6 -0
 - data/lib/crowdskout/version.rb +1 -1
 - data/spec/crowdskout/auth/oauth2_spec.rb +1 -1
 - data/spec/crowdskout/services/attribute_service_spec.rb +1 -0
 - data/spec/crowdskout/services/field_service_spec.rb +1 -0
 - data/spec/crowdskout/services/profile_service_spec.rb +54 -26
 - metadata +6 -4
 - data/lib/crowdskout/components/profiles/gender.rb +0 -40
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 26a82fafee392d2d1494dcf24b3eb88689e656fb
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 9a6d19a488a1dbe4398ff7e85e0edae5d55c8dc7
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 57cc85584ddcb813b76870d3d681a48634dc7639bd73899c096797aebe83d9fb79aedd54a0a8d5c20128954dc736bd837dca231bed1fc2ce75c569ad29ec23b9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 07e130cf6470641e4bb3f72d332542723f89063e402bacaefdf0acd2c72f51b964e20deb606d41940143fe3da442b4add1c79220991387cac3004cfd76abb337
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Crowdskout
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            [](https://travis-ci.org/revvco/crowdskout) [](https://badge.fury.io/rb/crowdskout) [](https://codeclimate.com/github/revvco/crowdskout)
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            A Ruby wrapper for the Crowdskout API.
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
            Crowdskout API documentation can be found [here](http://docs.crowdskout.com/api/#get-the-options-for-a-field)
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            ## Installation
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
         @@ -50,4 +50,4 @@ Or install it yourself as: 
     | 
|
| 
       50 
50 
     | 
    
         
             
            	field_options = api.get_options_for_a_field("AddressCity")
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
            	# Fetching attributes
         
     | 
| 
       53 
     | 
    
         
            -
            	attributes = api.get_attributes
         
     | 
| 
      
 53 
     | 
    
         
            +
            	attributes = api.get_attributes
         
     | 
    
        data/crowdskout.gemspec
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = "crowdskout"
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = '0.0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = '0.0.5'
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.platform = Gem::Platform::RUBY
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.authors = ["Crowdskout", "Revv","Kyle Schutt"]
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.homepage = "https://github.com/revvco/crowdskout"
         
     | 
    
        data/lib/crowdskout.rb
    CHANGED
    
    | 
         @@ -48,8 +48,10 @@ module Crowdskout 
     | 
|
| 
       48 
48 
     | 
    
         
             
                autoload :Attribute, 'crowdskout/components/attributes/attribute'
         
     | 
| 
       49 
49 
     | 
    
         
             
                autoload :Option, 'crowdskout/components/attributes/option'
         
     | 
| 
       50 
50 
     | 
    
         
             
                autoload :Profile, 'crowdskout/components/profiles/profile'
         
     | 
| 
       51 
     | 
    
         
            -
                autoload : 
     | 
| 
       52 
     | 
    
         
            -
                autoload : 
     | 
| 
      
 51 
     | 
    
         
            +
                autoload :Collection, 'crowdskout/components/profiles/collection'
         
     | 
| 
      
 52 
     | 
    
         
            +
                autoload :Item, 'crowdskout/components/profiles/item'
         
     | 
| 
      
 53 
     | 
    
         
            +
                autoload :Field, 'crowdskout/components/profiles/field'
         
     | 
| 
      
 54 
     | 
    
         
            +
                autoload :Value, 'crowdskout/components/profiles/value'
         
     | 
| 
       53 
55 
     | 
    
         
             
                autoload :FieldOptions, 'crowdskout/components/fields/field_options'
         
     | 
| 
       54 
56 
     | 
    
         
             
              end
         
     | 
| 
       55 
57 
     | 
    
         | 
    
        data/lib/crowdskout/api.rb
    CHANGED
    
    | 
         @@ -1,3 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # api.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              class Api
         
     | 
| 
       3 
9 
     | 
    
         
             
                # Class constructor
         
     | 
| 
         @@ -19,7 +25,7 @@ module Crowdskout 
     | 
|
| 
       19 
25 
     | 
    
         
             
                def get_profile(profile_id, collections)
         
     | 
| 
       20 
26 
     | 
    
         
             
                  Services::ProfileService.get_profile(profile_id, collections)
         
     | 
| 
       21 
27 
     | 
    
         
             
                end
         
     | 
| 
       22 
     | 
    
         
            -
                def create_profile(profile 
     | 
| 
      
 28 
     | 
    
         
            +
                def create_profile(profile)
         
     | 
| 
       23 
29 
     | 
    
         
             
                  Services::ProfileService.create_profile(profile, params)
         
     | 
| 
       24 
30 
     | 
    
         
             
                end
         
     | 
| 
       25 
31 
     | 
    
         
             
                def create_profiles_bulk(profiles)
         
     | 
| 
         @@ -41,7 +47,7 @@ module Crowdskout 
     | 
|
| 
       41 
47 
     | 
    
         
             
                def get_attributes(params = {})
         
     | 
| 
       42 
48 
     | 
    
         
             
                  Services::AttributeService.get_attributes(params)
         
     | 
| 
       43 
49 
     | 
    
         
             
                end
         
     | 
| 
       44 
     | 
    
         
            -
                def get_attribute(attribute_id)
         
     | 
| 
      
 50 
     | 
    
         
            +
                def get_attribute(attribute_id, params = {})
         
     | 
| 
       45 
51 
     | 
    
         
             
                  Services::AttributeService.get_attribute(attribute_id)
         
     | 
| 
       46 
52 
     | 
    
         
             
                end
         
     | 
| 
       47 
53 
     | 
    
         
             
                def create_attribute(name, type, options = nil)
         
     | 
| 
         @@ -1,8 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # attribute.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              module Components
         
     | 
| 
       3 
9 
     | 
    
         
             
                class Attribute < Component
         
     | 
| 
       4 
10 
     | 
    
         
             
                  attr_accessor :id, :type, :locked, :name, :options
         
     | 
| 
       5 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                  # Factory method to create an Attribute object from a json string
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # @param [Hash] props - properties to create object from
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # @return [Attribute]
         
     | 
| 
       6 
15 
     | 
    
         
             
                  def self.create(props)
         
     | 
| 
       7 
16 
     | 
    
         
             
                    obj = Attribute.new
         
     | 
| 
       8 
17 
     | 
    
         
             
                    if props
         
     | 
| 
         @@ -22,6 +31,9 @@ module Crowdskout 
     | 
|
| 
       22 
31 
     | 
    
         
             
                    obj
         
     | 
| 
       23 
32 
     | 
    
         
             
                  end
         
     | 
| 
       24 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
                  # Add an Option
         
     | 
| 
      
 35 
     | 
    
         
            +
                  # @param [Option] option
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # @return [Array] the options array
         
     | 
| 
       25 
37 
     | 
    
         
             
                  def add_options(option)
         
     | 
| 
       26 
38 
     | 
    
         
             
                    @options = [] if @options.nil?
         
     | 
| 
       27 
39 
     | 
    
         
             
                    @options << option
         
     | 
| 
         @@ -1,13 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # 
     | 
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # option.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
       2 
6 
     | 
    
         | 
| 
       3 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       4 
8 
     | 
    
         
             
              module Components
         
     | 
| 
       5 
9 
     | 
    
         
             
                class Option < Component
         
     | 
| 
       6 
10 
     | 
    
         
             
                  attr_accessor :id, :value
         
     | 
| 
       7 
11 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                  # Factory method to create an  
     | 
| 
      
 12 
     | 
    
         
            +
                  # Factory method to create an Option object from a json string
         
     | 
| 
       9 
13 
     | 
    
         
             
                  # @param [Hash] props - properties to create object from
         
     | 
| 
       10 
     | 
    
         
            -
                  # @return [ 
     | 
| 
      
 14 
     | 
    
         
            +
                  # @return [Option]
         
     | 
| 
       11 
15 
     | 
    
         
             
                  def self.create(props)
         
     | 
| 
       12 
16 
     | 
    
         
             
                    obj = Option.new
         
     | 
| 
       13 
17 
     | 
    
         
             
                    if props
         
     | 
| 
         @@ -1,7 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # component.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              module Components
         
     | 
| 
       3 
9 
     | 
    
         
             
                class Component
         
     | 
| 
       4 
10 
     | 
    
         | 
| 
      
 11 
     | 
    
         
            +
                  # Return the object as hash
         
     | 
| 
      
 12 
     | 
    
         
            +
                  # @return [Hash]
         
     | 
| 
       5 
13 
     | 
    
         
             
                  def to_hash
         
     | 
| 
       6 
14 
     | 
    
         
             
                    hash = Hash.new
         
     | 
| 
       7 
15 
     | 
    
         
             
                    self.instance_variables.collect do |var|
         
     | 
| 
         @@ -10,6 +18,9 @@ module Crowdskout 
     | 
|
| 
       10 
18 
     | 
    
         
             
                    hash
         
     | 
| 
       11 
19 
     | 
    
         
             
                  end
         
     | 
| 
       12 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
                  # Get the nested value as a hash
         
     | 
| 
      
 22 
     | 
    
         
            +
                  # @param [Object] an object to change into a hash
         
     | 
| 
      
 23 
     | 
    
         
            +
                  # @return [Hash] hash of the val
         
     | 
| 
       13 
24 
     | 
    
         
             
                  def self.to_hash_value(val)
         
     | 
| 
       14 
25 
     | 
    
         
             
                    if val.is_a? Crowdskout::Components::Component
         
     | 
| 
       15 
26 
     | 
    
         
             
                      return val.to_hash
         
     | 
| 
         @@ -22,12 +33,12 @@ module Crowdskout 
     | 
|
| 
       22 
33 
     | 
    
         
             
                    end
         
     | 
| 
       23 
34 
     | 
    
         
             
                  end
         
     | 
| 
       24 
35 
     | 
    
         | 
| 
      
 36 
     | 
    
         
            +
                  # Object to a json string
         
     | 
| 
      
 37 
     | 
    
         
            +
                  # @return [String] the hash of the object to a json string
         
     | 
| 
       25 
38 
     | 
    
         
             
                  def to_json(val = nil)
         
     | 
| 
       26 
39 
     | 
    
         
             
                    self.to_hash.to_json
         
     | 
| 
       27 
40 
     | 
    
         
             
                  end
         
     | 
| 
       28 
41 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                  protected
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
42 
     | 
    
         
             
                  # Get the requested value from a hash, or return the default
         
     | 
| 
       32 
43 
     | 
    
         
             
                  # @param [Hash] hsh - the hash to search for the provided hash key
         
     | 
| 
       33 
44 
     | 
    
         
             
                  # @param [String] key - hash key to look for
         
     | 
| 
         @@ -1,8 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # field_options.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              module Components
         
     | 
| 
       3 
9 
     | 
    
         
             
                class FieldOptions < Component
         
     | 
| 
       4 
10 
     | 
    
         
             
                  attr_accessor :id, :collection, :options
         
     | 
| 
       5 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                  # Factory method to create an FieldOptions object from a json string
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # @param [Hash] props - properties to create object from
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # @return [FieldOptions]
         
     | 
| 
       6 
15 
     | 
    
         
             
                  def self.create(props)
         
     | 
| 
       7 
16 
     | 
    
         
             
                    obj = FieldOptions.new
         
     | 
| 
       8 
17 
     | 
    
         
             
                    if props
         
     | 
| 
         @@ -22,6 +31,9 @@ module Crowdskout 
     | 
|
| 
       22 
31 
     | 
    
         
             
                    obj
         
     | 
| 
       23 
32 
     | 
    
         
             
                  end
         
     | 
| 
       24 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
                  # Add an Option
         
     | 
| 
      
 35 
     | 
    
         
            +
                  # @param [Option] option
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # @return [Array] the options array
         
     | 
| 
       25 
37 
     | 
    
         
             
                  def add_options(option)
         
     | 
| 
       26 
38 
     | 
    
         
             
                    @options = [] if @options.nil?
         
     | 
| 
       27 
39 
     | 
    
         
             
                    @options << option
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # collection.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module Crowdskout
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Components
         
     | 
| 
      
 9 
     | 
    
         
            +
                class Collection < Component
         
     | 
| 
      
 10 
     | 
    
         
            +
                  attr_accessor :key_name, :items
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  # Factory method to create an Collection object from a json string
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # @param [String] key_name - name of the collection
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # @param [Array] items - properties to create object from
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # @return [Collection]
         
     | 
| 
      
 16 
     | 
    
         
            +
                  def self.create(key_name, items)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    obj = Collection.new
         
     | 
| 
      
 18 
     | 
    
         
            +
                    obj.key_name = key_name
         
     | 
| 
      
 19 
     | 
    
         
            +
                    obj.items = []
         
     | 
| 
      
 20 
     | 
    
         
            +
                    if items
         
     | 
| 
      
 21 
     | 
    
         
            +
                      items.each do |item|
         
     | 
| 
      
 22 
     | 
    
         
            +
                        # item is a hash of fields
         
     | 
| 
      
 23 
     | 
    
         
            +
                        obj.items << Components::Item.create(item)
         
     | 
| 
      
 24 
     | 
    
         
            +
                      end
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
                    obj
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # field.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module Crowdskout
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Components
         
     | 
| 
      
 9 
     | 
    
         
            +
                class Field < Component
         
     | 
| 
      
 10 
     | 
    
         
            +
                  # value can either be a string or a hash
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attr_accessor :key_name, :value
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  # Factory method to create an Field object from a json string
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # @param [String] key_name - name of the Field
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # @param [Hash or String] value - properties to create object from
         
     | 
| 
      
 16 
     | 
    
         
            +
                  # @return [Field]
         
     | 
| 
      
 17 
     | 
    
         
            +
                  def self.create(key_name, value)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    obj = Field.new
         
     | 
| 
      
 19 
     | 
    
         
            +
                    obj.key_name = key_name
         
     | 
| 
      
 20 
     | 
    
         
            +
                    if value.is_a?(Hash)
         
     | 
| 
      
 21 
     | 
    
         
            +
                      obj.value = Value.create(value)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    else
         
     | 
| 
      
 23 
     | 
    
         
            +
                      obj.value = value.to_s
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                    obj
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # item.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module Crowdskout
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Components
         
     | 
| 
      
 9 
     | 
    
         
            +
                class Item < Component
         
     | 
| 
      
 10 
     | 
    
         
            +
                  attr_accessor :id, :fields, :delete
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  # Factory method to create an Item object from a json string
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # @param [Hash] props - properties to create object from
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # @return [Item]
         
     | 
| 
      
 15 
     | 
    
         
            +
                  def self.create(props)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    obj = Item.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                    obj.id = 0
         
     | 
| 
      
 18 
     | 
    
         
            +
                    obj.fields = []
         
     | 
| 
      
 19 
     | 
    
         
            +
                    if props
         
     | 
| 
      
 20 
     | 
    
         
            +
                      props.each do |key, value|
         
     | 
| 
      
 21 
     | 
    
         
            +
                        if ['id'].include? key.downcase
         
     | 
| 
      
 22 
     | 
    
         
            +
                          obj.send("#{key}=", value) if obj.respond_to? key
         
     | 
| 
      
 23 
     | 
    
         
            +
                        else
         
     | 
| 
      
 24 
     | 
    
         
            +
                          # key is the name of the field
         
     | 
| 
      
 25 
     | 
    
         
            +
                          # value is the field's value
         
     | 
| 
      
 26 
     | 
    
         
            +
                          obj.fields << Components::Field.create(key, value)
         
     | 
| 
      
 27 
     | 
    
         
            +
                        end
         
     | 
| 
      
 28 
     | 
    
         
            +
                      end
         
     | 
| 
      
 29 
     | 
    
         
            +
                    end
         
     | 
| 
      
 30 
     | 
    
         
            +
                    obj
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,39 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # profile.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              module Components
         
     | 
| 
       3 
9 
     | 
    
         
             
                class Profile < Component
         
     | 
| 
       4 
     | 
    
         
            -
                  attr_accessor :id, : 
     | 
| 
      
 10 
     | 
    
         
            +
                  attr_accessor :id, :collections
         
     | 
| 
       5 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                  # Factory method to create an Profile object from a json string
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # @param [Hash] props - properties to create object from
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # @return [Profile]
         
     | 
| 
       6 
15 
     | 
    
         
             
                  def self.create(props)
         
     | 
| 
       7 
16 
     | 
    
         
             
                    obj = Profile.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                    obj.collections = []
         
     | 
| 
       8 
18 
     | 
    
         
             
                    if props
         
     | 
| 
       9 
19 
     | 
    
         
             
                      props.each do |key, value|
         
     | 
| 
       10 
     | 
    
         
            -
                        if key.downcase 
     | 
| 
       11 
     | 
    
         
            -
                          if value
         
     | 
| 
       12 
     | 
    
         
            -
                            obj.names = []
         
     | 
| 
       13 
     | 
    
         
            -
                            value.each do |name|
         
     | 
| 
       14 
     | 
    
         
            -
                              obj.names << Components::Name.create(name)
         
     | 
| 
       15 
     | 
    
         
            -
                            end
         
     | 
| 
       16 
     | 
    
         
            -
                          end
         
     | 
| 
       17 
     | 
    
         
            -
                        elsif key.downcase == 'genders'
         
     | 
| 
       18 
     | 
    
         
            -
                          if value
         
     | 
| 
       19 
     | 
    
         
            -
                            obj.genders = []
         
     | 
| 
       20 
     | 
    
         
            -
                            value.each do |gender|
         
     | 
| 
       21 
     | 
    
         
            -
                              obj.genders << Components::Gender.create(gender)
         
     | 
| 
       22 
     | 
    
         
            -
                            end
         
     | 
| 
       23 
     | 
    
         
            -
                          end
         
     | 
| 
       24 
     | 
    
         
            -
                        else
         
     | 
| 
      
 20 
     | 
    
         
            +
                        if ['id'].include? key.downcase
         
     | 
| 
       25 
21 
     | 
    
         
             
                          obj.send("#{key}=", value) if obj.respond_to? key
         
     | 
| 
      
 22 
     | 
    
         
            +
                        else
         
     | 
| 
      
 23 
     | 
    
         
            +
                          # the key is the name of the collection
         
     | 
| 
      
 24 
     | 
    
         
            +
                          # the value is an array of items
         
     | 
| 
      
 25 
     | 
    
         
            +
                          obj.collections << Components::Collection.create(key, value)
         
     | 
| 
       26 
26 
     | 
    
         
             
                        end
         
     | 
| 
       27 
27 
     | 
    
         
             
                      end
         
     | 
| 
       28 
28 
     | 
    
         
             
                    end
         
     | 
| 
       29 
29 
     | 
    
         
             
                    obj
         
     | 
| 
       30 
30 
     | 
    
         
             
                  end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
                  # Add a Name
         
     | 
| 
      
 33 
     | 
    
         
            +
                  # @param [Name] name
         
     | 
| 
      
 34 
     | 
    
         
            +
                  # @return [Array] the names array
         
     | 
| 
       32 
35 
     | 
    
         
             
                  def add_names(name)
         
     | 
| 
       33 
36 
     | 
    
         
             
                    @names = [] if @names.nil?
         
     | 
| 
       34 
37 
     | 
    
         
             
                    @names << name
         
     | 
| 
       35 
38 
     | 
    
         
             
                  end
         
     | 
| 
       36 
39 
     | 
    
         | 
| 
      
 40 
     | 
    
         
            +
                  # Add a Gender
         
     | 
| 
      
 41 
     | 
    
         
            +
                  # @param [Gebder] gender
         
     | 
| 
      
 42 
     | 
    
         
            +
                  # @return [Array] the genders array
         
     | 
| 
       37 
43 
     | 
    
         
             
                  def add_genders(gender)
         
     | 
| 
       38 
44 
     | 
    
         
             
                    @genders = [] if @genders.nil?
         
     | 
| 
       39 
45 
     | 
    
         
             
                    @genders << gender
         
     | 
| 
         @@ -1,15 +1,19 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # 
     | 
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # value.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
       2 
6 
     | 
    
         | 
| 
       3 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       4 
8 
     | 
    
         
             
              module Components
         
     | 
| 
       5 
     | 
    
         
            -
                class  
     | 
| 
       6 
     | 
    
         
            -
                  attr_accessor :id, : 
     | 
| 
      
 9 
     | 
    
         
            +
                class Value < Component
         
     | 
| 
      
 10 
     | 
    
         
            +
                  attr_accessor :id, :value
         
     | 
| 
       7 
11 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                  # Factory method to create an  
     | 
| 
      
 12 
     | 
    
         
            +
                  # Factory method to create an Value object from a json string
         
     | 
| 
       9 
13 
     | 
    
         
             
                  # @param [Hash] props - properties to create object from
         
     | 
| 
       10 
     | 
    
         
            -
                  # @return [ 
     | 
| 
      
 14 
     | 
    
         
            +
                  # @return [Value]
         
     | 
| 
       11 
15 
     | 
    
         
             
                  def self.create(props)
         
     | 
| 
       12 
     | 
    
         
            -
                    obj =  
     | 
| 
      
 16 
     | 
    
         
            +
                    obj = Value.new
         
     | 
| 
       13 
17 
     | 
    
         
             
                    if props
         
     | 
| 
       14 
18 
     | 
    
         
             
                      props.each do |key, value|
         
     | 
| 
       15 
19 
     | 
    
         
             
                        obj.send("#{key}=", value) if obj.respond_to? key
         
     | 
| 
         @@ -1,14 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #
         
     | 
| 
       2 
2 
     | 
    
         
             
            # result_set.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
       3 
4 
     | 
    
         
             
            #
         
     | 
| 
       4 
5 
     | 
    
         
             
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       7 
8 
     | 
    
         
             
              module Components
         
     | 
| 
       8 
9 
     | 
    
         
             
                class ResultSet
         
     | 
| 
       9 
     | 
    
         
            -
                  attr_accessor :results, : 
     | 
| 
       10 
     | 
    
         
            -
                  def initialize(results,  
     | 
| 
      
 10 
     | 
    
         
            +
                  attr_accessor :results, :messages
         
     | 
| 
      
 11 
     | 
    
         
            +
                  def initialize(results, messages)
         
     | 
| 
       11 
12 
     | 
    
         
             
                    @results = results
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @messages = messages
         
     | 
| 
       12 
14 
     | 
    
         
             
                  end
         
     | 
| 
       13 
15 
     | 
    
         
             
                end
         
     | 
| 
       14 
16 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,12 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # attribute_service.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              module Services
         
     | 
| 
       3 
9 
     | 
    
         
             
                class AttributeService < BaseService
         
     | 
| 
       4 
10 
     | 
    
         
             
                  class << self
         
     | 
| 
       5 
11 
     | 
    
         | 
| 
       6 
12 
     | 
    
         
             
                    # More info - http://docs.crowdskout.com/api/#get-all-attributes
         
     | 
| 
       7 
     | 
    
         
            -
                    # @param params - query parameters
         
     | 
| 
       8 
     | 
    
         
            -
                    # 
     | 
| 
       9 
     | 
    
         
            -
                    #         - offset - the number of attributes to skip        
         
     | 
| 
      
 13 
     | 
    
         
            +
                    # @param [Hash] params - query parameters
         
     | 
| 
      
 14 
     | 
    
         
            +
                    # @return [ResultSet] set of Components::Attributes       
         
     | 
| 
       10 
15 
     | 
    
         
             
                    def get_attributes(params = {})
         
     | 
| 
       11 
16 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.attributes')
         
     | 
| 
       12 
17 
     | 
    
         
             
                      url = build_url(url, params)
         
     | 
| 
         @@ -23,17 +28,21 @@ module Crowdskout 
     | 
|
| 
       23 
28 
     | 
    
         
             
                    end
         
     | 
| 
       24 
29 
     | 
    
         | 
| 
       25 
30 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#get-an-attribute-by-id
         
     | 
| 
       26 
     | 
    
         
            -
                    # @param [ 
     | 
| 
       27 
     | 
    
         
            -
                     
     | 
| 
      
 31 
     | 
    
         
            +
                    # @param [Integer] attribute_id - the id of the attribute to fetch
         
     | 
| 
      
 32 
     | 
    
         
            +
                    # @param [Hash] params - query parameters
         
     | 
| 
      
 33 
     | 
    
         
            +
                    # @return [Attribute]
         
     | 
| 
      
 34 
     | 
    
         
            +
                    def get_attribute(attribute_id, params = {})
         
     | 
| 
       28 
35 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Attribute ID is required." if attribute_id.nil?
         
     | 
| 
       29 
36 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') +
         
     | 
| 
       30 
37 
     | 
    
         
             
                            sprintf(Util::Config.get('endpoints.crud_attribute'), attribute_id)
         
     | 
| 
       31 
     | 
    
         
            -
                      url = build_url(url)
         
     | 
| 
      
 38 
     | 
    
         
            +
                      url = build_url(url, params)
         
     | 
| 
       32 
39 
     | 
    
         
             
                      response = RestClient.get(url, get_headers())
         
     | 
| 
       33 
40 
     | 
    
         
             
                      Components::Attribute.create(JSON.parse(response.body)["data"])
         
     | 
| 
       34 
41 
     | 
    
         
             
                    end
         
     | 
| 
       35 
42 
     | 
    
         | 
| 
       36 
43 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#create-an-attribute
         
     | 
| 
      
 44 
     | 
    
         
            +
                    # @param [Attribute] attribute - attribute object to add to Crowdskout
         
     | 
| 
      
 45 
     | 
    
         
            +
                    # @return [Attribute]
         
     | 
| 
       37 
46 
     | 
    
         
             
                    def create_attribute(new_attribute)
         
     | 
| 
       38 
47 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Attribute must not be nil" if new_attribute.nil?
         
     | 
| 
       39 
48 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.attribute')
         
     | 
| 
         @@ -44,6 +53,9 @@ module Crowdskout 
     | 
|
| 
       44 
53 
     | 
    
         
             
                    end
         
     | 
| 
       45 
54 
     | 
    
         | 
| 
       46 
55 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#update-an-attribute
         
     | 
| 
      
 56 
     | 
    
         
            +
                    # @param [Integer] attribute_id - the id of the attribute to update
         
     | 
| 
      
 57 
     | 
    
         
            +
                    # @param [Hash] params - query parameters
         
     | 
| 
      
 58 
     | 
    
         
            +
                    # @return [Attribute]
         
     | 
| 
       47 
59 
     | 
    
         
             
                    def update_attribute(attribute_id, params = {})
         
     | 
| 
       48 
60 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Attribute ID is required." if attribute_id.nil?
         
     | 
| 
       49 
61 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.crud_attribute'), attribute_id)
         
     | 
| 
         @@ -53,6 +65,8 @@ module Crowdskout 
     | 
|
| 
       53 
65 
     | 
    
         
             
                    end
         
     | 
| 
       54 
66 
     | 
    
         | 
| 
       55 
67 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#delete-an-attribute
         
     | 
| 
      
 68 
     | 
    
         
            +
                    # @param [Integer] attribute_id - the id of the attribute to update
         
     | 
| 
      
 69 
     | 
    
         
            +
                    # @return [boolean]
         
     | 
| 
       56 
70 
     | 
    
         
             
                    def delete_attribute(attribute_id)
         
     | 
| 
       57 
71 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Attribute ID is required." if attribute_id.nil?
         
     | 
| 
       58 
72 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.crud_attribute'), attribute_id)
         
     | 
| 
         @@ -1,8 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # field_service.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              module Services
         
     | 
| 
       3 
9 
     | 
    
         
             
                class FieldService < BaseService
         
     | 
| 
       4 
10 
     | 
    
         
             
                  class << self
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       5 
12 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#get-the-options-for-a-field
         
     | 
| 
      
 13 
     | 
    
         
            +
                    # Get the options for a field
         
     | 
| 
      
 14 
     | 
    
         
            +
                    # @param [String] field_name - the name of the field
         
     | 
| 
      
 15 
     | 
    
         
            +
                    # @param [Hash] params - A hash with query parameters
         
     | 
| 
      
 16 
     | 
    
         
            +
                    # @return [FieldOptions] - the field options
         
     | 
| 
       6 
17 
     | 
    
         
             
                    def get_options_for_a_field(field_name, params = {})
         
     | 
| 
       7 
18 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Field name is required." if field_name.nil?
         
     | 
| 
       8 
19 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') +
         
     | 
| 
         @@ -1,8 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # profile_service.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            module Crowdskout
         
     | 
| 
       2 
8 
     | 
    
         
             
              module Services
         
     | 
| 
       3 
9 
     | 
    
         
             
                class ProfileService < BaseService
         
     | 
| 
       4 
10 
     | 
    
         
             
                  class << self
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       5 
12 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#get-a-profile-by-id
         
     | 
| 
      
 13 
     | 
    
         
            +
                    # Get a profile based on the collections provided
         
     | 
| 
      
 14 
     | 
    
         
            +
                    # @param [Integer] profile_id - the id of the profile
         
     | 
| 
      
 15 
     | 
    
         
            +
                    # @param [String] collections - A csv of the requested collections
         
     | 
| 
      
 16 
     | 
    
         
            +
                    # @return [Profile] - the profile object
         
     | 
| 
       6 
17 
     | 
    
         
             
                    def get_profile(profile_id, collections)
         
     | 
| 
       7 
18 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Profile ID is required." if profile_id.nil?
         
     | 
| 
       8 
19 
     | 
    
         
             
                      raise Exceptions::ServiceException, "A comma-deliminted list of collections is required." if collections.nil?
         
     | 
| 
         @@ -18,16 +29,24 @@ module Crowdskout 
     | 
|
| 
       18 
29 
     | 
    
         
             
                    end
         
     | 
| 
       19 
30 
     | 
    
         | 
| 
       20 
31 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#create-a-profile
         
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
      
 32 
     | 
    
         
            +
                    # Create a new profile
         
     | 
| 
      
 33 
     | 
    
         
            +
                    # @param [Profile] profile - the new profile object to add to Crowdskout
         
     | 
| 
      
 34 
     | 
    
         
            +
                    # @param [Hash] params - A hash with query parameters
         
     | 
| 
      
 35 
     | 
    
         
            +
                    # @return [Profile] - the profile object
         
     | 
| 
      
 36 
     | 
    
         
            +
                    def create_profile(profile)
         
     | 
| 
       22 
37 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Profile object must not be nil." if profile.nil?
         
     | 
| 
       23 
38 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.profile')
         
     | 
| 
       24 
     | 
    
         
            -
                      url = build_url(url 
     | 
| 
      
 39 
     | 
    
         
            +
                      url = build_url(url)
         
     | 
| 
       25 
40 
     | 
    
         
             
                      payload = profile.to_json
         
     | 
| 
       26 
41 
     | 
    
         
             
                      response = RestClient.post(url, payload, get_headers())
         
     | 
| 
       27 
42 
     | 
    
         
             
                      Components::Profile.create(JSON.parse(response.body)["data"])
         
     | 
| 
       28 
43 
     | 
    
         
             
                    end
         
     | 
| 
       29 
44 
     | 
    
         | 
| 
       30 
45 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#create-many-profiles
         
     | 
| 
      
 46 
     | 
    
         
            +
                    # Create a bunch of new profiles
         
     | 
| 
      
 47 
     | 
    
         
            +
                    # @param [Array<Profile>] profiles - an array of profile to bulk add
         
     | 
| 
      
 48 
     | 
    
         
            +
                    # @param [Hash] params - A hash with query parameters
         
     | 
| 
      
 49 
     | 
    
         
            +
                    # @return [ResultSet] - the results set as an enumeration with profiles
         
     | 
| 
       31 
50 
     | 
    
         
             
                    def create_profiles_bulk(profiles)
         
     | 
| 
       32 
51 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Must be an array of profiles." if profiles.nil? || !profiles.is_a?(Array)
         
     | 
| 
       33 
52 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.profile_bulk')
         
     | 
| 
         @@ -45,6 +64,9 @@ module Crowdskout 
     | 
|
| 
       45 
64 
     | 
    
         
             
                    end
         
     | 
| 
       46 
65 
     | 
    
         | 
| 
       47 
66 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#update-a-profile-by-id
         
     | 
| 
      
 67 
     | 
    
         
            +
                    # Update the given profile
         
     | 
| 
      
 68 
     | 
    
         
            +
                    # @param [Profile] profile - the profile to update
         
     | 
| 
      
 69 
     | 
    
         
            +
                    # @return [Profile] - the profile object
         
     | 
| 
       48 
70 
     | 
    
         
             
                    def update_profile(profile)
         
     | 
| 
       49 
71 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Profile object must not be nil." if profile.nil?
         
     | 
| 
       50 
72 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.crud_profile'), profile.id)
         
     | 
| 
         @@ -55,6 +77,9 @@ module Crowdskout 
     | 
|
| 
       55 
77 
     | 
    
         
             
                    end
         
     | 
| 
       56 
78 
     | 
    
         | 
| 
       57 
79 
     | 
    
         
             
                    # more info - http://docs.crowdskout.com/api/#update-many-profiles
         
     | 
| 
      
 80 
     | 
    
         
            +
                    # Update a bunch of profiles
         
     | 
| 
      
 81 
     | 
    
         
            +
                    # @param [Array<Profile>] profiles - an array of profile to bulk add
         
     | 
| 
      
 82 
     | 
    
         
            +
                    # @return [ResultSet] - the results set as an enumeration with profiles
         
     | 
| 
       58 
83 
     | 
    
         
             
                    def update_profiles_bulk(profiles)
         
     | 
| 
       59 
84 
     | 
    
         
             
                      raise Exceptions::ServiceException, "Must be an array of profiles." if profiles.nil? || !profiles.is_a?(Array)
         
     | 
| 
       60 
85 
     | 
    
         
             
                      url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.profile_bulk')
         
     | 
    
        data/lib/crowdskout/version.rb
    CHANGED
    
    
| 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #
         
     | 
| 
       2 
2 
     | 
    
         
             
            # profile_service_spec.rb
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Crowdskout
         
     | 
| 
       3 
4 
     | 
    
         
             
            #
         
     | 
| 
       4 
5 
     | 
    
         
             
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.require 'spec_helper'
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
         @@ -20,11 +21,17 @@ describe Crowdskout::Services::ProfileService do 
     | 
|
| 
       20 
21 
     | 
    
         
             
                  profile = Crowdskout::Services::ProfileService.get_profile(1, "Names,Genders")
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
                  profile.should be_kind_of(Crowdskout::Components::Profile)
         
     | 
| 
       23 
     | 
    
         
            -
                  profile. 
     | 
| 
       24 
     | 
    
         
            -
                  profile. 
     | 
| 
       25 
     | 
    
         
            -
                  profile. 
     | 
| 
       26 
     | 
    
         
            -
                  profile. 
     | 
| 
       27 
     | 
    
         
            -
                  profile. 
     | 
| 
      
 24 
     | 
    
         
            +
                  profile.collections[1].should be_kind_of(Crowdskout::Components::Collection)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  profile.collections[1].key_name.should eq 'Genders'
         
     | 
| 
      
 26 
     | 
    
         
            +
                  profile.collections[1].items[0].should be_kind_of(Crowdskout::Components::Item)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  profile.collections[1].items[0].id.should eq 1
         
     | 
| 
      
 28 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].should be_kind_of(Crowdskout::Components::Field)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].key_name.should eq "Gender"
         
     | 
| 
      
 30 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].value.should be_kind_of(Crowdskout::Components::Value)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].value.id.should eq 1
         
     | 
| 
      
 32 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].value.value.should eq "Male"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[1].key_name.should eq "TestValue"
         
     | 
| 
      
 34 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[1].value.should eq "value"
         
     | 
| 
       28 
35 
     | 
    
         
             
                end
         
     | 
| 
       29 
36 
     | 
    
         
             
              end
         
     | 
| 
       30 
37 
     | 
    
         | 
| 
         @@ -35,15 +42,21 @@ describe Crowdskout::Services::ProfileService do 
     | 
|
| 
       35 
42 
     | 
    
         | 
| 
       36 
43 
     | 
    
         
             
                  response = RestClient::Response.create(json, net_http_resp, {}, @request)
         
     | 
| 
       37 
44 
     | 
    
         
             
                  RestClient.stub(:post).and_return(response)
         
     | 
| 
       38 
     | 
    
         
            -
                  new_profile = Crowdskout::Components::Profile.create(JSON.parse(json))
         
     | 
| 
      
 45 
     | 
    
         
            +
                  new_profile = Crowdskout::Components::Profile.create(JSON.parse(json)["data"])
         
     | 
| 
       39 
46 
     | 
    
         
             
                  profile = Crowdskout::Services::ProfileService.create_profile(new_profile)
         
     | 
| 
       40 
47 
     | 
    
         | 
| 
       41 
48 
     | 
    
         
             
                  profile.should be_kind_of(Crowdskout::Components::Profile)
         
     | 
| 
       42 
     | 
    
         
            -
                  profile. 
     | 
| 
       43 
     | 
    
         
            -
                  profile. 
     | 
| 
       44 
     | 
    
         
            -
                  profile. 
     | 
| 
       45 
     | 
    
         
            -
                  profile. 
     | 
| 
       46 
     | 
    
         
            -
                  profile. 
     | 
| 
      
 49 
     | 
    
         
            +
                  profile.collections[1].should be_kind_of(Crowdskout::Components::Collection)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  profile.collections[1].key_name.should eq 'Genders'
         
     | 
| 
      
 51 
     | 
    
         
            +
                  profile.collections[1].items[0].should be_kind_of(Crowdskout::Components::Item)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  profile.collections[1].items[0].id.should eq 1
         
     | 
| 
      
 53 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].should be_kind_of(Crowdskout::Components::Field)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].key_name.should eq "Gender"
         
     | 
| 
      
 55 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].value.should be_kind_of(Crowdskout::Components::Value)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].value.id.should eq 1
         
     | 
| 
      
 57 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[0].value.value.should eq "Male"
         
     | 
| 
      
 58 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[1].key_name.should eq "TestValue"
         
     | 
| 
      
 59 
     | 
    
         
            +
                  profile.collections[1].items[0].fields[1].value.should eq "value"
         
     | 
| 
       47 
60 
     | 
    
         
             
                end
         
     | 
| 
       48 
61 
     | 
    
         
             
              end
         
     | 
| 
       49 
62 
     | 
    
         | 
| 
         @@ -54,7 +67,6 @@ describe Crowdskout::Services::ProfileService do 
     | 
|
| 
       54 
67 
     | 
    
         | 
| 
       55 
68 
     | 
    
         
             
                  response = RestClient::Response.create(json, net_http_resp, {}, @request)
         
     | 
| 
       56 
69 
     | 
    
         
             
                  RestClient.stub(:post).and_return(response)
         
     | 
| 
       57 
     | 
    
         
            -
                  new_profile = Crowdskout::Components::Profile.create(JSON.parse(json))
         
     | 
| 
       58 
70 
     | 
    
         
             
                  profiles = []
         
     | 
| 
       59 
71 
     | 
    
         
             
                  body = JSON.parse(json)
         
     | 
| 
       60 
72 
     | 
    
         
             
                  body['data'].each do |profile|
         
     | 
| 
         @@ -65,9 +77,15 @@ describe Crowdskout::Services::ProfileService do 
     | 
|
| 
       65 
77 
     | 
    
         | 
| 
       66 
78 
     | 
    
         
             
                  profiles.should be_kind_of(Crowdskout::Components::ResultSet)
         
     | 
| 
       67 
79 
     | 
    
         
             
                  profile.should be_kind_of(Crowdskout::Components::Profile)
         
     | 
| 
       68 
     | 
    
         
            -
                  profile. 
     | 
| 
       69 
     | 
    
         
            -
                  profile. 
     | 
| 
       70 
     | 
    
         
            -
                  profile. 
     | 
| 
      
 80 
     | 
    
         
            +
                  profile.collections[0].should be_kind_of(Crowdskout::Components::Collection)
         
     | 
| 
      
 81 
     | 
    
         
            +
                  profile.collections[0].key_name.should eq 'Genders'
         
     | 
| 
      
 82 
     | 
    
         
            +
                  profile.collections[0].items[0].should be_kind_of(Crowdskout::Components::Item)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  profile.collections[0].items[0].id.should eq 1
         
     | 
| 
      
 84 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].should be_kind_of(Crowdskout::Components::Field)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].key_name.should eq "Gender"
         
     | 
| 
      
 86 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].value.should be_kind_of(Crowdskout::Components::Value)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].value.id.should eq 1
         
     | 
| 
      
 88 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].value.value.should eq "Male"
         
     | 
| 
       71 
89 
     | 
    
         
             
                end
         
     | 
| 
       72 
90 
     | 
    
         
             
              end
         
     | 
| 
       73 
91 
     | 
    
         | 
| 
         @@ -78,15 +96,21 @@ describe Crowdskout::Services::ProfileService do 
     | 
|
| 
       78 
96 
     | 
    
         | 
| 
       79 
97 
     | 
    
         
             
                  response = RestClient::Response.create(json, net_http_resp, {}, @request)
         
     | 
| 
       80 
98 
     | 
    
         
             
                  RestClient.stub(:put).and_return(response)
         
     | 
| 
       81 
     | 
    
         
            -
                  profile = Crowdskout::Components::Profile.create(JSON.parse(json))
         
     | 
| 
      
 99 
     | 
    
         
            +
                  profile = Crowdskout::Components::Profile.create(JSON.parse(json)["data"])
         
     | 
| 
       82 
100 
     | 
    
         
             
                  result = Crowdskout::Services::ProfileService.update_profile(profile)
         
     | 
| 
       83 
101 
     | 
    
         | 
| 
       84 
102 
     | 
    
         
             
                  result.should be_kind_of(Crowdskout::Components::Profile)
         
     | 
| 
       85 
     | 
    
         
            -
                  result. 
     | 
| 
       86 
     | 
    
         
            -
                  result. 
     | 
| 
       87 
     | 
    
         
            -
                  result. 
     | 
| 
       88 
     | 
    
         
            -
                  result. 
     | 
| 
       89 
     | 
    
         
            -
                  result. 
     | 
| 
      
 103 
     | 
    
         
            +
                  result.collections[1].should be_kind_of(Crowdskout::Components::Collection)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  result.collections[1].key_name.should eq 'Genders'
         
     | 
| 
      
 105 
     | 
    
         
            +
                  result.collections[1].items[0].should be_kind_of(Crowdskout::Components::Item)
         
     | 
| 
      
 106 
     | 
    
         
            +
                  result.collections[1].items[0].id.should eq 1
         
     | 
| 
      
 107 
     | 
    
         
            +
                  result.collections[1].items[0].fields[0].should be_kind_of(Crowdskout::Components::Field)
         
     | 
| 
      
 108 
     | 
    
         
            +
                  result.collections[1].items[0].fields[0].key_name.should eq "Gender"
         
     | 
| 
      
 109 
     | 
    
         
            +
                  result.collections[1].items[0].fields[0].value.should be_kind_of(Crowdskout::Components::Value)
         
     | 
| 
      
 110 
     | 
    
         
            +
                  result.collections[1].items[0].fields[0].value.id.should eq 1
         
     | 
| 
      
 111 
     | 
    
         
            +
                  result.collections[1].items[0].fields[0].value.value.should eq "Male"
         
     | 
| 
      
 112 
     | 
    
         
            +
                  result.collections[1].items[0].fields[1].key_name.should eq "TestValue"
         
     | 
| 
      
 113 
     | 
    
         
            +
                  result.collections[1].items[0].fields[1].value.should eq "value"
         
     | 
| 
       90 
114 
     | 
    
         
             
                end
         
     | 
| 
       91 
115 
     | 
    
         
             
              end
         
     | 
| 
       92 
116 
     | 
    
         | 
| 
         @@ -97,7 +121,6 @@ describe Crowdskout::Services::ProfileService do 
     | 
|
| 
       97 
121 
     | 
    
         | 
| 
       98 
122 
     | 
    
         
             
                  response = RestClient::Response.create(json, net_http_resp, {}, @request)
         
     | 
| 
       99 
123 
     | 
    
         
             
                  RestClient.stub(:put).and_return(response)
         
     | 
| 
       100 
     | 
    
         
            -
                  new_profile = Crowdskout::Components::Profile.create(JSON.parse(json))
         
     | 
| 
       101 
124 
     | 
    
         
             
                  profiles = []
         
     | 
| 
       102 
125 
     | 
    
         
             
                  body = JSON.parse(json)
         
     | 
| 
       103 
126 
     | 
    
         
             
                  body['data'].each do |profile|
         
     | 
| 
         @@ -107,10 +130,15 @@ describe Crowdskout::Services::ProfileService do 
     | 
|
| 
       107 
130 
     | 
    
         
             
                  profile = profiles.results[0]
         
     | 
| 
       108 
131 
     | 
    
         | 
| 
       109 
132 
     | 
    
         
             
                  profiles.should be_kind_of(Crowdskout::Components::ResultSet)
         
     | 
| 
       110 
     | 
    
         
            -
                  profile.should be_kind_of(Crowdskout::Components:: 
     | 
| 
       111 
     | 
    
         
            -
                  profile. 
     | 
| 
       112 
     | 
    
         
            -
                  profile. 
     | 
| 
       113 
     | 
    
         
            -
                  profile. 
     | 
| 
      
 133 
     | 
    
         
            +
                  profile.collections[0].should be_kind_of(Crowdskout::Components::Collection)
         
     | 
| 
      
 134 
     | 
    
         
            +
                  profile.collections[0].key_name.should eq 'Genders'
         
     | 
| 
      
 135 
     | 
    
         
            +
                  profile.collections[0].items[0].should be_kind_of(Crowdskout::Components::Item)
         
     | 
| 
      
 136 
     | 
    
         
            +
                  profile.collections[0].items[0].id.should eq 1
         
     | 
| 
      
 137 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].should be_kind_of(Crowdskout::Components::Field)
         
     | 
| 
      
 138 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].key_name.should eq "Gender"
         
     | 
| 
      
 139 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].value.should be_kind_of(Crowdskout::Components::Value)
         
     | 
| 
      
 140 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].value.id.should eq 1
         
     | 
| 
      
 141 
     | 
    
         
            +
                  profile.collections[0].items[0].fields[0].value.value.should eq "Male"
         
     | 
| 
       114 
142 
     | 
    
         
             
                end
         
     | 
| 
       115 
143 
     | 
    
         
             
              end
         
     | 
| 
       116 
144 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: crowdskout
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Crowdskout
         
     | 
| 
         @@ -10,7 +10,7 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       11 
11 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       12 
12 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       13 
     | 
    
         
            -
            date: 2016-05- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2016-05-04 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: rest-client
         
     | 
| 
         @@ -102,9 +102,11 @@ files: 
     | 
|
| 
       102 
102 
     | 
    
         
             
            - lib/crowdskout/components/attributes/option.rb
         
     | 
| 
       103 
103 
     | 
    
         
             
            - lib/crowdskout/components/component.rb
         
     | 
| 
       104 
104 
     | 
    
         
             
            - lib/crowdskout/components/fields/field_options.rb
         
     | 
| 
       105 
     | 
    
         
            -
            - lib/crowdskout/components/profiles/ 
     | 
| 
       106 
     | 
    
         
            -
            - lib/crowdskout/components/profiles/ 
     | 
| 
      
 105 
     | 
    
         
            +
            - lib/crowdskout/components/profiles/collection.rb
         
     | 
| 
      
 106 
     | 
    
         
            +
            - lib/crowdskout/components/profiles/field.rb
         
     | 
| 
      
 107 
     | 
    
         
            +
            - lib/crowdskout/components/profiles/item.rb
         
     | 
| 
       107 
108 
     | 
    
         
             
            - lib/crowdskout/components/profiles/profile.rb
         
     | 
| 
      
 109 
     | 
    
         
            +
            - lib/crowdskout/components/profiles/value.rb
         
     | 
| 
       108 
110 
     | 
    
         
             
            - lib/crowdskout/components/result_set.rb
         
     | 
| 
       109 
111 
     | 
    
         
             
            - lib/crowdskout/exceptions/oauth2_exception.rb
         
     | 
| 
       110 
112 
     | 
    
         
             
            - lib/crowdskout/exceptions/service_exception.rb
         
     | 
| 
         @@ -1,40 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright (c) 2016 Kyle Schutt. All rights reserved.require 
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module Crowdskout
         
     | 
| 
       4 
     | 
    
         
            -
              module Components
         
     | 
| 
       5 
     | 
    
         
            -
                class Gender < Component
         
     | 
| 
       6 
     | 
    
         
            -
                  attr_accessor :id, :gender
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  # Factory method to create an Address object from a json string
         
     | 
| 
       9 
     | 
    
         
            -
                  # @param [Hash] props - properties to create object from
         
     | 
| 
       10 
     | 
    
         
            -
                  # @return [Address]
         
     | 
| 
       11 
     | 
    
         
            -
                  def self.create(props)
         
     | 
| 
       12 
     | 
    
         
            -
                    obj = Gender.new
         
     | 
| 
       13 
     | 
    
         
            -
                    if props
         
     | 
| 
       14 
     | 
    
         
            -
                      props.each do |key, value|
         
     | 
| 
       15 
     | 
    
         
            -
                        if key.downcase == 'gender'
         
     | 
| 
       16 
     | 
    
         
            -
                          obj.gender = GenderInfo.create(value)
         
     | 
| 
       17 
     | 
    
         
            -
                        else
         
     | 
| 
       18 
     | 
    
         
            -
                          obj.send("#{key}=", value) if obj.respond_to? key
         
     | 
| 
       19 
     | 
    
         
            -
                        end
         
     | 
| 
       20 
     | 
    
         
            -
                      end
         
     | 
| 
       21 
     | 
    
         
            -
                    end
         
     | 
| 
       22 
     | 
    
         
            -
                    obj
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
                
         
     | 
| 
       26 
     | 
    
         
            -
                # Detailed gender information
         
     | 
| 
       27 
     | 
    
         
            -
                class GenderInfo
         
     | 
| 
       28 
     | 
    
         
            -
                  attr_accessor :id, :value
         
     | 
| 
       29 
     | 
    
         
            -
                  def self.create(props)
         
     | 
| 
       30 
     | 
    
         
            -
                    obj = GenderInfo.new
         
     | 
| 
       31 
     | 
    
         
            -
                    if props
         
     | 
| 
       32 
     | 
    
         
            -
                      props.each do |key, value|
         
     | 
| 
       33 
     | 
    
         
            -
                        obj.send("#{key}=", value) if obj.respond_to? key
         
     | 
| 
       34 
     | 
    
         
            -
                      end
         
     | 
| 
       35 
     | 
    
         
            -
                    end
         
     | 
| 
       36 
     | 
    
         
            -
                    obj
         
     | 
| 
       37 
     | 
    
         
            -
                  end
         
     | 
| 
       38 
     | 
    
         
            -
                end
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
            end
         
     |