rturk 2.3.0 → 2.3.1
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.
- data/VERSION +1 -1
- data/lib/rturk/adapters/hit.rb +7 -1
- data/lib/rturk/operations/create_qualification_type.rb +18 -8
- data/lib/rturk/operations/get_qualification_type.rb +20 -0
- data/lib/rturk/operations/get_qualifications_for_qualification_type.rb +26 -0
- data/lib/rturk/operations/notify_workers.rb +2 -0
- data/lib/rturk/operations/revoke_qualification.rb +1 -1
- data/lib/rturk/operations/update_qualification_type.rb +36 -0
- data/lib/rturk/parsers/qualification_parser.rb +19 -0
- data/lib/rturk/parsers/responses/get_qualification_type_response.rb +33 -0
- data/lib/rturk/parsers/responses/get_qualifications_for_qualification_type_response.rb +26 -0
- data/rturk.gemspec +17 -3
- data/spec/adapters/hit_spec.rb +8 -0
- data/spec/fake_responses/get_qualification_type.xml +18 -0
- data/spec/fake_responses/get_qualifications_for_qualification_type.xml +28 -0
- data/spec/fake_responses/update_qualification_type.xml +15 -0
- data/spec/operations/create_qualification_type_spec.rb +2 -3
- data/spec/operations/get_qualification_type_spec.rb +26 -0
- data/spec/operations/get_qualifications_for_qualification_type_spec.rb +27 -0
- data/spec/operations/update_qualification_type_spec.rb +24 -0
- metadata +18 -4
- data/lib/rturk/parsers/responses/create_qualification_type_response.rb +0 -27
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2.3. | 
| 1 | 
            +
            2.3.1
         | 
    
        data/lib/rturk/adapters/hit.rb
    CHANGED
    
    | @@ -28,8 +28,14 @@ module RTurk | |
| 28 28 | 
             
                    new(response.hit_id, response)
         | 
| 29 29 | 
             
                  end
         | 
| 30 30 |  | 
| 31 | 
            +
                  # Find all the details for a HIT
         | 
| 32 | 
            +
                  # You could do this manually with new(id), and only call for the details
         | 
| 33 | 
            +
                  # you need, or simply call this and get them all
         | 
| 31 34 | 
             
                  def find(id)
         | 
| 32 | 
            -
             | 
| 35 | 
            +
                    h = new(id)
         | 
| 36 | 
            +
                    h.details
         | 
| 37 | 
            +
                    h.assignments
         | 
| 38 | 
            +
                    h
         | 
| 33 39 | 
             
                  end
         | 
| 34 40 |  | 
| 35 41 | 
             
                  def all_reviewable
         | 
| @@ -2,19 +2,29 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module RTurk
         | 
| 4 4 | 
             
              class CreateQualificationType < Operation
         | 
| 5 | 
            -
                attr_accessor :name, :description, :keywords, :status, :auto_granted
         | 
| 6 | 
            -
             | 
| 5 | 
            +
                attr_accessor :name, :description, :keywords, :status, :auto_granted,
         | 
| 6 | 
            +
                              :retry_delay_in_seconds, :test, :answer_key,
         | 
| 7 | 
            +
                              :test_duration_in_seconds, :auto_granted_value
         | 
| 8 | 
            +
                require_params :name, :description
         | 
| 7 9 |  | 
| 8 10 | 
             
                def parse(response)
         | 
| 9 | 
            -
                  RTurk:: | 
| 11 | 
            +
                  RTurk::GetQualificationTypeResponse.new(response)
         | 
| 10 12 | 
             
                end
         | 
| 11 13 |  | 
| 12 14 | 
             
                def to_params
         | 
| 13 | 
            -
                   | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 15 | 
            +
                  params = {
         | 
| 16 | 
            +
                    'Name' => name,
         | 
| 17 | 
            +
                    'Description' => description,
         | 
| 18 | 
            +
                    'QualificationTypeStatus' => (status || "Active")
         | 
| 19 | 
            +
                  }
         | 
| 20 | 
            +
                  params['Keywords'] = keywords unless keywords.nil?
         | 
| 21 | 
            +
                  params['AutoGranted'] = auto_granted unless auto_granted.nil?
         | 
| 22 | 
            +
                  params['AutoGrantedValue'] = auto_granted_value unless auto_granted_value.nil?
         | 
| 23 | 
            +
                  params['RetryDelayInSeconds'] = retry_delay_in_seconds unless retry_delay_in_seconds.nil?
         | 
| 24 | 
            +
                  params['Test'] = test unless test.nil?
         | 
| 25 | 
            +
                  params['AnswerKey'] = answer_key unless answer_key.nil?
         | 
| 26 | 
            +
                  params['TestDurationInSeconds'] = test_duration_in_seconds unless test_duration_in_seconds.nil?
         | 
| 27 | 
            +
                  params
         | 
| 18 28 | 
             
                end
         | 
| 19 29 | 
             
              end
         | 
| 20 30 |  | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            # Operation to get info about qualification type
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RTurk
         | 
| 4 | 
            +
              class GetQualificationType < Operation
         | 
| 5 | 
            +
                attr_accessor :qualification_type_id
         | 
| 6 | 
            +
                require_params :qualification_type_id
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def parse(xml)
         | 
| 9 | 
            +
                  RTurk::GetQualificationTypeResponse.new(xml)
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def to_params
         | 
| 13 | 
            +
                  {'QualificationTypeId' => qualification_type_id}
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              def self.GetQualificationType(*args)
         | 
| 18 | 
            +
                RTurk::GetQualificationType.create(*args)
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            # Operation to get qualifications for a qualification type
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RTurk
         | 
| 4 | 
            +
              class GetQualificationsForQualificationType < Operation
         | 
| 5 | 
            +
                attr_accessor :qualification_type_id, :status, :page_size, :page_number
         | 
| 6 | 
            +
                require_params :qualification_type_id
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def parse(xml)
         | 
| 9 | 
            +
                  RTurk::GetQualificationsForQualificationTypeResponse.new(xml)
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def to_params
         | 
| 13 | 
            +
                  params = {
         | 
| 14 | 
            +
                    'QualificationTypeId' => qualification_type_id
         | 
| 15 | 
            +
                  }
         | 
| 16 | 
            +
                  params['Status'] = status unless status.nil?
         | 
| 17 | 
            +
                  params['PageSize'] = page_size unless page_size.nil?
         | 
| 18 | 
            +
                  params['PageNumber'] = page_number unless page_number.nil?
         | 
| 19 | 
            +
                  params
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              def self.GetQualificationsForQualificationType(*args)
         | 
| 24 | 
            +
                RTurk::GetQualificationsForQualificationType.create(*args)
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| @@ -13,6 +13,8 @@ module RTurk | |
| 13 13 | 
             
                require_params :worker_ids, :subject, :message_text
         | 
| 14 14 |  | 
| 15 15 | 
             
                def to_params
         | 
| 16 | 
            +
                  message_text.strip!
         | 
| 17 | 
            +
             | 
| 16 18 | 
             
                  if worker_ids.length > 100
         | 
| 17 19 | 
             
                    raise ArgumentError, 'Cannot send a message to more than 100 workers at a time.'
         | 
| 18 20 | 
             
                  elsif message_text.length > 4096
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # Operation to update a qualification type
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RTurk
         | 
| 4 | 
            +
              class UpdateQualificationType < Operation
         | 
| 5 | 
            +
                attr_accessor :qualification_type_id, :name, :description, :keywords,
         | 
| 6 | 
            +
                              :status, :auto_granted, :retry_delay_in_seconds,
         | 
| 7 | 
            +
                              :test, :answer_key, :test_duration_in_seconds,
         | 
| 8 | 
            +
                              :auto_granted_value
         | 
| 9 | 
            +
                require_params :qualification_type_id
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def parse(xml)
         | 
| 12 | 
            +
                  RTurk::GetQualificationTypeResponse.new(xml)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def to_params
         | 
| 16 | 
            +
                  params = {
         | 
| 17 | 
            +
                    'QualificationTypeId' => qualification_type_id
         | 
| 18 | 
            +
                  }
         | 
| 19 | 
            +
                  params['Name'] = name unless name.nil?
         | 
| 20 | 
            +
                  params['Description'] = description unless description.nil?
         | 
| 21 | 
            +
                  params['Keywords'] = keywords unless keywords.nil?
         | 
| 22 | 
            +
                  params['QualificationTypeStatus'] = status unless status.nil?
         | 
| 23 | 
            +
                  params['AutoGranted'] = auto_granted unless auto_granted.nil?
         | 
| 24 | 
            +
                  params['RetryDelayInSeconds'] = retry_delay_in_seconds unless retry_delay_in_seconds.nil?
         | 
| 25 | 
            +
                  params['Test'] = test unless test.nil?
         | 
| 26 | 
            +
                  params['AnswerKey'] = answer_key unless answer_key.nil?
         | 
| 27 | 
            +
                  params['TestDurationInSeconds'] = test_duration_in_seconds unless test_duration_in_seconds.nil?
         | 
| 28 | 
            +
                  params['AutoGrantedValue'] = auto_granted_value unless auto_granted_value.nil?
         | 
| 29 | 
            +
                  params
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def self.UpdateQualificationType(*args)
         | 
| 34 | 
            +
                RTurk::UpdateQualificationType.create(*args)
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # Parses a Qualification object
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RTurk
         | 
| 4 | 
            +
              class QualificationParser < RTurk::Parser
         | 
| 5 | 
            +
                attr_reader :qualification_type_id, :subject_id, :grant_time,
         | 
| 6 | 
            +
                            :integer_value, :locale_value, :status
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def initialize(qualifications_xml)
         | 
| 9 | 
            +
                  @xml_obj = qualifications_xml
         | 
| 10 | 
            +
                  map_content(@xml_obj,
         | 
| 11 | 
            +
                              :qualification_type_id => 'QualificationTypeId',
         | 
| 12 | 
            +
                              :subject_id => 'SubjectId',
         | 
| 13 | 
            +
                              :grant_time => 'GrantTime',
         | 
| 14 | 
            +
                              :integer_value => 'IntegerValue',
         | 
| 15 | 
            +
                              :locale_value => 'LocaleValue',
         | 
| 16 | 
            +
                              :status => 'Status')
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            # Parses the GetQualificationType Response
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RTurk
         | 
| 4 | 
            +
              class GetQualificationTypeResponse < Response
         | 
| 5 | 
            +
                attr_reader :qualification_type_id, :creation_time, :name, :description,
         | 
| 6 | 
            +
                            :keywords, :status, :retry_delay_in_seconds, :is_requestable,
         | 
| 7 | 
            +
                            :test, :test_duration_in_seconds, :answer_key, :auto_granted,
         | 
| 8 | 
            +
                            :auto_granted_value
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def initialize(response)
         | 
| 11 | 
            +
                  @raw_xml = response.body
         | 
| 12 | 
            +
                  @xml = Nokogiri::XML(@raw_xml)
         | 
| 13 | 
            +
                  raise_errors
         | 
| 14 | 
            +
                  map_content(@xml.xpath('//QualificationType'),
         | 
| 15 | 
            +
                    :qualification_type_id => 'QualificationTypeId',
         | 
| 16 | 
            +
                    :creation_time => 'CreationTime',
         | 
| 17 | 
            +
                    :name => 'Name',
         | 
| 18 | 
            +
                    :description => 'Description',
         | 
| 19 | 
            +
                    :keywords => 'Keywords',
         | 
| 20 | 
            +
                    :status => 'QualificationTypeStatus',
         | 
| 21 | 
            +
                    :retry_delay_in_seconds => 'RetryDelayInSeconds',
         | 
| 22 | 
            +
                    :is_requestable => 'IsRequestable',
         | 
| 23 | 
            +
                    :test => 'Test',
         | 
| 24 | 
            +
                    :test_duration_in_seconds => 'TestDurationInSeconds',
         | 
| 25 | 
            +
                    :answer_key => 'AnswerKey',
         | 
| 26 | 
            +
                    :auto_granted => 'AutoGranted',
         | 
| 27 | 
            +
                    :auto_granted_value => 'AutoGrantedValue'
         | 
| 28 | 
            +
                  )
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  @keywords = @keywords.split(', ') if @keywords
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            # Parses the GetQualificationType Response
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RTurk
         | 
| 4 | 
            +
              class GetQualificationsForQualificationTypeResponse < Response
         | 
| 5 | 
            +
                attr_reader :num_results, :total_num_results, :page_number
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def initialize(response)
         | 
| 8 | 
            +
                  @raw_xml = response.body
         | 
| 9 | 
            +
                  @xml = Nokogiri::XML(@raw_xml)
         | 
| 10 | 
            +
                  raise_errors
         | 
| 11 | 
            +
                  map_content(@xml.xpath('//GetQualificationsForQualificationTypeResult'),
         | 
| 12 | 
            +
                    :num_results => 'NumResults',
         | 
| 13 | 
            +
                    :total_num_results => 'TotalNumResults',
         | 
| 14 | 
            +
                    :page_number => 'PageNumber'
         | 
| 15 | 
            +
                  )
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def qualifications
         | 
| 19 | 
            +
                  @qualifications ||= []
         | 
| 20 | 
            +
                  @xml.xpath('//Qualification').each do |qualification_xml|
         | 
| 21 | 
            +
                    @qualifications << QualificationParser.new(qualification_xml)
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                  @qualifications
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
    
        data/rturk.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{rturk}
         | 
| 8 | 
            -
              s.version = "2.3. | 
| 8 | 
            +
              s.version = "2.3.1"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Mark Percival"]
         | 
| 12 | 
            -
              s.date = %q{2010- | 
| 12 | 
            +
              s.date = %q{2010-09-25}
         | 
| 13 13 | 
             
              s.email = %q{mark@mpercival.com}
         | 
| 14 14 | 
             
              s.extra_rdoc_files = [
         | 
| 15 15 | 
             
                "LICENSE",
         | 
| @@ -142,6 +142,8 @@ Gem::Specification.new do |s| | |
| 142 142 | 
             
                 "lib/rturk/operations/get_account_balance.rb",
         | 
| 143 143 | 
             
                 "lib/rturk/operations/get_assignments_for_hit.rb",
         | 
| 144 144 | 
             
                 "lib/rturk/operations/get_hit.rb",
         | 
| 145 | 
            +
                 "lib/rturk/operations/get_qualification_type.rb",
         | 
| 146 | 
            +
                 "lib/rturk/operations/get_qualifications_for_qualification_type.rb",
         | 
| 145 147 | 
             
                 "lib/rturk/operations/get_reviewable_hits.rb",
         | 
| 146 148 | 
             
                 "lib/rturk/operations/grant_bonus.rb",
         | 
| 147 149 | 
             
                 "lib/rturk/operations/notify_workers.rb",
         | 
| @@ -152,16 +154,19 @@ Gem::Specification.new do |s| | |
| 152 154 | 
             
                 "lib/rturk/operations/send_test_event_notification.rb",
         | 
| 153 155 | 
             
                 "lib/rturk/operations/set_hit_type_notification.rb",
         | 
| 154 156 | 
             
                 "lib/rturk/operations/unblock_worker.rb",
         | 
| 157 | 
            +
                 "lib/rturk/operations/update_qualification_type.rb",
         | 
| 155 158 | 
             
                 "lib/rturk/parser.rb",
         | 
| 156 159 | 
             
                 "lib/rturk/parsers/answer_parser.rb",
         | 
| 157 160 | 
             
                 "lib/rturk/parsers/assignment_parser.rb",
         | 
| 158 161 | 
             
                 "lib/rturk/parsers/hit_parser.rb",
         | 
| 162 | 
            +
                 "lib/rturk/parsers/qualification_parser.rb",
         | 
| 159 163 | 
             
                 "lib/rturk/parsers/response.rb",
         | 
| 160 164 | 
             
                 "lib/rturk/parsers/responses/create_hit_response.rb",
         | 
| 161 | 
            -
                 "lib/rturk/parsers/responses/create_qualification_type_response.rb",
         | 
| 162 165 | 
             
                 "lib/rturk/parsers/responses/get_account_balance_response.rb",
         | 
| 163 166 | 
             
                 "lib/rturk/parsers/responses/get_assignments_for_hit_response.rb",
         | 
| 164 167 | 
             
                 "lib/rturk/parsers/responses/get_hit_response.rb",
         | 
| 168 | 
            +
                 "lib/rturk/parsers/responses/get_qualification_type_response.rb",
         | 
| 169 | 
            +
                 "lib/rturk/parsers/responses/get_qualifications_for_qualification_type_response.rb",
         | 
| 165 170 | 
             
                 "lib/rturk/parsers/responses/get_reviewable_hits_response.rb",
         | 
| 166 171 | 
             
                 "lib/rturk/parsers/responses/register_hit_type_response.rb",
         | 
| 167 172 | 
             
                 "lib/rturk/parsers/responses/search_hits_response.rb",
         | 
| @@ -189,6 +194,8 @@ Gem::Specification.new do |s| | |
| 189 194 | 
             
                 "spec/fake_responses/get_assignments.xml",
         | 
| 190 195 | 
             
                 "spec/fake_responses/get_assignments_multiple.xml",
         | 
| 191 196 | 
             
                 "spec/fake_responses/get_hit.xml",
         | 
| 197 | 
            +
                 "spec/fake_responses/get_qualification_type.xml",
         | 
| 198 | 
            +
                 "spec/fake_responses/get_qualifications_for_qualification_type.xml",
         | 
| 192 199 | 
             
                 "spec/fake_responses/get_reviewable_hits.xml",
         | 
| 193 200 | 
             
                 "spec/fake_responses/grant_bonus.xml",
         | 
| 194 201 | 
             
                 "spec/fake_responses/invalid_credentials.xml",
         | 
| @@ -198,6 +205,7 @@ Gem::Specification.new do |s| | |
| 198 205 | 
             
                 "spec/fake_responses/revoke_qualification.xml",
         | 
| 199 206 | 
             
                 "spec/fake_responses/search_hits.xml",
         | 
| 200 207 | 
             
                 "spec/fake_responses/unblock_worker.xml",
         | 
| 208 | 
            +
                 "spec/fake_responses/update_qualification_type.xml",
         | 
| 201 209 | 
             
                 "spec/mturk.sample.yml",
         | 
| 202 210 | 
             
                 "spec/operations/approve_assignment_spec.rb",
         | 
| 203 211 | 
             
                 "spec/operations/assign_qualification_spec.rb",
         | 
| @@ -212,6 +220,8 @@ Gem::Specification.new do |s| | |
| 212 220 | 
             
                 "spec/operations/get_account_balance_spec.rb",
         | 
| 213 221 | 
             
                 "spec/operations/get_assignments_spec.rb",
         | 
| 214 222 | 
             
                 "spec/operations/get_hit_spec.rb",
         | 
| 223 | 
            +
                 "spec/operations/get_qualification_type_spec.rb",
         | 
| 224 | 
            +
                 "spec/operations/get_qualifications_for_qualification_type_spec.rb",
         | 
| 215 225 | 
             
                 "spec/operations/get_reviewable_hits_spec.rb",
         | 
| 216 226 | 
             
                 "spec/operations/grant_bonus_spec.rb",
         | 
| 217 227 | 
             
                 "spec/operations/notify_workers_spec.rb",
         | 
| @@ -221,6 +231,7 @@ Gem::Specification.new do |s| | |
| 221 231 | 
             
                 "spec/operations/send_test_event_notification_spec.rb",
         | 
| 222 232 | 
             
                 "spec/operations/set_hit_type_notification_spec.rb",
         | 
| 223 233 | 
             
                 "spec/operations/unblock_worker_spec.rb",
         | 
| 234 | 
            +
                 "spec/operations/update_qualification_type_spec.rb",
         | 
| 224 235 | 
             
                 "spec/parsers/answer_parser_spec.rb",
         | 
| 225 236 | 
             
                 "spec/parsers/hit_parser_spec.rb",
         | 
| 226 237 | 
             
                 "spec/requester_spec.rb",
         | 
| @@ -255,6 +266,8 @@ Gem::Specification.new do |s| | |
| 255 266 | 
             
                 "spec/operations/get_account_balance_spec.rb",
         | 
| 256 267 | 
             
                 "spec/operations/get_assignments_spec.rb",
         | 
| 257 268 | 
             
                 "spec/operations/get_hit_spec.rb",
         | 
| 269 | 
            +
                 "spec/operations/get_qualification_type_spec.rb",
         | 
| 270 | 
            +
                 "spec/operations/get_qualifications_for_qualification_type_spec.rb",
         | 
| 258 271 | 
             
                 "spec/operations/get_reviewable_hits_spec.rb",
         | 
| 259 272 | 
             
                 "spec/operations/grant_bonus_spec.rb",
         | 
| 260 273 | 
             
                 "spec/operations/notify_workers_spec.rb",
         | 
| @@ -264,6 +277,7 @@ Gem::Specification.new do |s| | |
| 264 277 | 
             
                 "spec/operations/send_test_event_notification_spec.rb",
         | 
| 265 278 | 
             
                 "spec/operations/set_hit_type_notification_spec.rb",
         | 
| 266 279 | 
             
                 "spec/operations/unblock_worker_spec.rb",
         | 
| 280 | 
            +
                 "spec/operations/update_qualification_type_spec.rb",
         | 
| 267 281 | 
             
                 "spec/parsers/answer_parser_spec.rb",
         | 
| 268 282 | 
             
                 "spec/parsers/hit_parser_spec.rb",
         | 
| 269 283 | 
             
                 "spec/requester_spec.rb",
         | 
    
        data/spec/adapters/hit_spec.rb
    CHANGED
    
    | @@ -19,6 +19,14 @@ describe "HIT adapter" do | |
| 19 19 | 
             
                RTurk::Hit.create(:title => 'foo', :description => 'do foo', :question => 'http://mpercival.com', :reward => 0.05)
         | 
| 20 20 | 
             
              end
         | 
| 21 21 |  | 
| 22 | 
            +
              it "should retrieve all the details of a HIT with find" do
         | 
| 23 | 
            +
                proxy_hit = RTurk::Hit.new(12345)
         | 
| 24 | 
            +
                proxy_hit.should_receive(:details)
         | 
| 25 | 
            +
                proxy_hit.should_receive(:assignments)
         | 
| 26 | 
            +
                RTurk::Hit.should_receive(:new).and_return(proxy_hit)
         | 
| 27 | 
            +
                hit = RTurk::Hit.find(12345)
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
              
         | 
| 22 30 | 
             
              it "should automagically request additional information on an existing hit" do
         | 
| 23 31 | 
             
                hit = RTurk::Hit.new(12345)
         | 
| 24 32 | 
             
                hit.type_id.should eql("YGKZ2W5X6YFZ08ZRXXZZ")
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            <GetQualificationTypeResponse>
         | 
| 2 | 
            +
              <OperationRequest>
         | 
| 3 | 
            +
                <RequestId>49341251-fcbd-45c3-ab98-8fbe2e4d8060</RequestId>
         | 
| 4 | 
            +
              </OperationRequest>
         | 
| 5 | 
            +
              <QualificationType>
         | 
| 6 | 
            +
                <Request>
         | 
| 7 | 
            +
                  <IsValid>True</IsValid>
         | 
| 8 | 
            +
                </Request>
         | 
| 9 | 
            +
                <QualificationTypeId>789RVWYBAZW00EXAMPLE</QualificationTypeId>
         | 
| 10 | 
            +
                <CreationTime>2005-01-31T23:59:59Z</CreationTime>
         | 
| 11 | 
            +
                <Name>EnglishWritingAbility</Name>
         | 
| 12 | 
            +
                <Description>The ability to write and edit text...</Description>
         | 
| 13 | 
            +
                <Keywords>English, text, write, edit, language</Keywords>
         | 
| 14 | 
            +
                <QualificationTypeStatus>Active</QualificationTypeStatus>
         | 
| 15 | 
            +
                <RetryDelayInSeconds>86400</RetryDelayInSeconds>
         | 
| 16 | 
            +
                <IsRequestable>true</IsRequestable>
         | 
| 17 | 
            +
              </QualificationType>
         | 
| 18 | 
            +
            </GetQualificationTypeResponse>
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            <?xml version="1.0"?>
         | 
| 2 | 
            +
            <GetQualificationsForQualificationTypeResponse>
         | 
| 3 | 
            +
              <OperationRequest>
         | 
| 4 | 
            +
                <RequestId>49341251-fcbd-45c3-ab98-8fbe2e4d8060</RequestId>
         | 
| 5 | 
            +
              </OperationRequest>
         | 
| 6 | 
            +
              <GetQualificationsForQualificationTypeResult>
         | 
| 7 | 
            +
                <Request>
         | 
| 8 | 
            +
                  <IsValid>True</IsValid>
         | 
| 9 | 
            +
                </Request>
         | 
| 10 | 
            +
                <NumResults>2</NumResults>
         | 
| 11 | 
            +
                <TotalNumResults>2</TotalNumResults>
         | 
| 12 | 
            +
                <PageNumber>1</PageNumber>
         | 
| 13 | 
            +
                <Qualification>
         | 
| 14 | 
            +
                  <QualificationTypeId>ZSPJXD4F1SFZP7YNJWR0</QualificationTypeId>
         | 
| 15 | 
            +
                  <SubjectId>AZ3456EXAMPLE</SubjectId>
         | 
| 16 | 
            +
                  <GrantTime>2009-07-15T01:21:28.296Z</GrantTime>
         | 
| 17 | 
            +
                  <IntegerValue>1</IntegerValue>
         | 
| 18 | 
            +
                  <Status>Granted</Status>
         | 
| 19 | 
            +
                </Qualification>
         | 
| 20 | 
            +
                <Qualification>
         | 
| 21 | 
            +
                  <QualificationTypeId>ZSPJXD4F1SFZP7YNJWR0</QualificationTypeId>
         | 
| 22 | 
            +
                  <SubjectId>AZ4567EXAMPLE</SubjectId>
         | 
| 23 | 
            +
                  <GrantTime>2009-07-15T01:21:28.296Z</GrantTime>
         | 
| 24 | 
            +
                  <IntegerValue>1</IntegerValue>
         | 
| 25 | 
            +
                  <Status>Granted</Status>
         | 
| 26 | 
            +
                </Qualification>
         | 
| 27 | 
            +
              </GetQualificationsForQualificationTypeResult>
         | 
| 28 | 
            +
            </GetQualificationsForQualificationTypeResponse>
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            <UpdateQualificationTypeResult>
         | 
| 2 | 
            +
              <Request>
         | 
| 3 | 
            +
                <IsValid>True</IsValid>
         | 
| 4 | 
            +
              </Request>
         | 
| 5 | 
            +
              <QualificationType>
         | 
| 6 | 
            +
                <QualificationTypeId>789RVWYBAZW00EXAMPLE</QualificationTypeId>
         | 
| 7 | 
            +
                <CreationTime>2009-06-15T12:00:01Z</CreationTime>
         | 
| 8 | 
            +
                <Name>EnglishWritingAbility</Name>
         | 
| 9 | 
            +
                <Description>The ability to write and edit text...</Description>
         | 
| 10 | 
            +
                <Keywords>English, text, write, edit, language</Keywords>
         | 
| 11 | 
            +
                <QualificationTypeStatus>Active</QualificationTypeStatus>
         | 
| 12 | 
            +
                <RetryDelayInSeconds>86400</RetryDelayInSeconds>
         | 
| 13 | 
            +
                <IsRequestable>true</IsRequestable>
         | 
| 14 | 
            +
              </QualificationType>
         | 
| 15 | 
            +
            </UpdateQualificationTypeResult>
         | 
| @@ -14,12 +14,11 @@ describe RTurk::CreateQualificationType do | |
| 14 14 | 
             
              it "should successfully request the operation" do
         | 
| 15 15 | 
             
                RTurk::Requester.should_receive(:request).once.with(
         | 
| 16 16 | 
             
                  hash_including('Operation' => 'CreateQualificationType'))
         | 
| 17 | 
            -
                RTurk::CreateQualificationType(:name => "bogus") rescue RTurk::InvalidRequest
         | 
| 17 | 
            +
                RTurk::CreateQualificationType(:name => "bogus", :description => 'really bogus') rescue RTurk::InvalidRequest
         | 
| 18 18 | 
             
              end
         | 
| 19 19 |  | 
| 20 20 | 
             
              it "should parse and return the result" do
         | 
| 21 | 
            -
                response = RTurk::CreateQualificationType(:name => "bogus")
         | 
| 22 | 
            -
                response['CreateQualificationTypeResponse']['QualificationType']['QualificationTypeId'].should == "ZSPJXD4F1SFZP7YNJWR0"
         | 
| 21 | 
            +
                response = RTurk::CreateQualificationType(:name => "bogus", :description => 'really bogus')
         | 
| 23 22 | 
             
                response.qualification_type_id.should == "ZSPJXD4F1SFZP7YNJWR0"
         | 
| 24 23 | 
             
              end
         | 
| 25 24 | 
             
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe RTurk::GetQualificationType do
         | 
| 4 | 
            +
              before(:all) do
         | 
| 5 | 
            +
                aws = YAML.load(File.open(File.join(SPEC_ROOT, 'mturk.yml')))
         | 
| 6 | 
            +
                RTurk.setup(aws['AWSAccessKeyId'], aws['AWSAccessKey'], :sandbox => true)
         | 
| 7 | 
            +
                faker('get_qualification_type', :operation => 'GetQualificationType')
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it "should ensure required params" do
         | 
| 11 | 
            +
                lambda{RTurk::GetQualificationType()}.should raise_error RTurk::MissingParameters
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it "should successfully request the operation" do
         | 
| 15 | 
            +
                RTurk::Requester.should_receive(:request).once.with(
         | 
| 16 | 
            +
                  hash_including('Operation' => 'GetQualificationType'))
         | 
| 17 | 
            +
                RTurk::GetQualificationType(:qualification_type_id => '789RVWYBAZW00EXAMPLE') rescue RTurk::InvalidRequest
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it "should parse and return the result" do
         | 
| 21 | 
            +
                response = RTurk::GetQualificationType(:qualification_type_id => '789RVWYBAZW00EXAMPLE')
         | 
| 22 | 
            +
                response.name.should == 'EnglishWritingAbility'
         | 
| 23 | 
            +
                response.description.should == "The ability to write and edit text..."
         | 
| 24 | 
            +
                response.keywords.should == ["English", "text", "write", "edit", "language"]
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe RTurk::GetQualificationsForQualificationType do
         | 
| 4 | 
            +
              before(:all) do
         | 
| 5 | 
            +
                aws = YAML.load(File.open(File.join(SPEC_ROOT, 'mturk.yml')))
         | 
| 6 | 
            +
                RTurk.setup(aws['AWSAccessKeyId'], aws['AWSAccessKey'], :sandbox => true)
         | 
| 7 | 
            +
                faker('get_qualifications_for_qualification_type', :operation => 'GetQualificationsForQualificationType')
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it "should ensure required params" do
         | 
| 11 | 
            +
                lambda{RTurk::GetQualificationsForQualificationType()}.should raise_error RTurk::MissingParameters
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it "should successfully request the operation" do
         | 
| 15 | 
            +
                RTurk::Requester.should_receive(:request).once.with(
         | 
| 16 | 
            +
                  hash_including('Operation' => 'GetQualificationsForQualificationType'))
         | 
| 17 | 
            +
                RTurk::GetQualificationsForQualificationType(:qualification_type_id => '789RVWYBAZW00EXAMPLE') rescue RTurk::InvalidRequest
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it "should parse and return the result" do
         | 
| 21 | 
            +
                response = RTurk::GetQualificationsForQualificationType(:qualification_type_id => '789RVWYBAZW00EXAMPLE')
         | 
| 22 | 
            +
                response.num_results.should == 2
         | 
| 23 | 
            +
                response.qualifications.length.should == 2
         | 
| 24 | 
            +
                response.qualifications[0].subject_id.should == 'AZ3456EXAMPLE'
         | 
| 25 | 
            +
                response.qualifications[1].subject_id.should == 'AZ4567EXAMPLE'
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe RTurk::UpdateQualificationType do
         | 
| 4 | 
            +
              before(:all) do
         | 
| 5 | 
            +
                aws = YAML.load(File.open(File.join(SPEC_ROOT, 'mturk.yml')))
         | 
| 6 | 
            +
                RTurk.setup(aws['AWSAccessKeyId'], aws['AWSAccessKey'], :sandbox => true)
         | 
| 7 | 
            +
                faker('update_qualification_type', :operation => 'UpdateQualificationType')
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it "should ensure required params" do
         | 
| 11 | 
            +
                lambda{RTurk::UpdateQualificationType()}.should raise_error RTurk::MissingParameters
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it "should successfully request the operation" do
         | 
| 15 | 
            +
                RTurk::Requester.should_receive(:request).once.with(
         | 
| 16 | 
            +
                  hash_including('Operation' => 'UpdateQualificationType'))
         | 
| 17 | 
            +
                RTurk::UpdateQualificationType(:qualification_type_id => '789RVWYBAZW00EXAMPLE', :name => "bogus") rescue RTurk::InvalidRequest
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it "should parse and return the result" do
         | 
| 21 | 
            +
                response = RTurk::UpdateQualificationType(:qualification_type_id => '789RVWYBAZW00EXAMPLE', :name => "bogus")
         | 
| 22 | 
            +
                response.qualification_type_id.should == "789RVWYBAZW00EXAMPLE"
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 2
         | 
| 7 7 | 
             
              - 3
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 2.3. | 
| 8 | 
            +
              - 1
         | 
| 9 | 
            +
              version: 2.3.1
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Mark Percival
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2010- | 
| 17 | 
            +
            date: 2010-09-25 00:00:00 -07:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -181,6 +181,8 @@ files: | |
| 181 181 | 
             
            - lib/rturk/operations/get_account_balance.rb
         | 
| 182 182 | 
             
            - lib/rturk/operations/get_assignments_for_hit.rb
         | 
| 183 183 | 
             
            - lib/rturk/operations/get_hit.rb
         | 
| 184 | 
            +
            - lib/rturk/operations/get_qualification_type.rb
         | 
| 185 | 
            +
            - lib/rturk/operations/get_qualifications_for_qualification_type.rb
         | 
| 184 186 | 
             
            - lib/rturk/operations/get_reviewable_hits.rb
         | 
| 185 187 | 
             
            - lib/rturk/operations/grant_bonus.rb
         | 
| 186 188 | 
             
            - lib/rturk/operations/notify_workers.rb
         | 
| @@ -191,16 +193,19 @@ files: | |
| 191 193 | 
             
            - lib/rturk/operations/send_test_event_notification.rb
         | 
| 192 194 | 
             
            - lib/rturk/operations/set_hit_type_notification.rb
         | 
| 193 195 | 
             
            - lib/rturk/operations/unblock_worker.rb
         | 
| 196 | 
            +
            - lib/rturk/operations/update_qualification_type.rb
         | 
| 194 197 | 
             
            - lib/rturk/parser.rb
         | 
| 195 198 | 
             
            - lib/rturk/parsers/answer_parser.rb
         | 
| 196 199 | 
             
            - lib/rturk/parsers/assignment_parser.rb
         | 
| 197 200 | 
             
            - lib/rturk/parsers/hit_parser.rb
         | 
| 201 | 
            +
            - lib/rturk/parsers/qualification_parser.rb
         | 
| 198 202 | 
             
            - lib/rturk/parsers/response.rb
         | 
| 199 203 | 
             
            - lib/rturk/parsers/responses/create_hit_response.rb
         | 
| 200 | 
            -
            - lib/rturk/parsers/responses/create_qualification_type_response.rb
         | 
| 201 204 | 
             
            - lib/rturk/parsers/responses/get_account_balance_response.rb
         | 
| 202 205 | 
             
            - lib/rturk/parsers/responses/get_assignments_for_hit_response.rb
         | 
| 203 206 | 
             
            - lib/rturk/parsers/responses/get_hit_response.rb
         | 
| 207 | 
            +
            - lib/rturk/parsers/responses/get_qualification_type_response.rb
         | 
| 208 | 
            +
            - lib/rturk/parsers/responses/get_qualifications_for_qualification_type_response.rb
         | 
| 204 209 | 
             
            - lib/rturk/parsers/responses/get_reviewable_hits_response.rb
         | 
| 205 210 | 
             
            - lib/rturk/parsers/responses/register_hit_type_response.rb
         | 
| 206 211 | 
             
            - lib/rturk/parsers/responses/search_hits_response.rb
         | 
| @@ -228,6 +233,8 @@ files: | |
| 228 233 | 
             
            - spec/fake_responses/get_assignments.xml
         | 
| 229 234 | 
             
            - spec/fake_responses/get_assignments_multiple.xml
         | 
| 230 235 | 
             
            - spec/fake_responses/get_hit.xml
         | 
| 236 | 
            +
            - spec/fake_responses/get_qualification_type.xml
         | 
| 237 | 
            +
            - spec/fake_responses/get_qualifications_for_qualification_type.xml
         | 
| 231 238 | 
             
            - spec/fake_responses/get_reviewable_hits.xml
         | 
| 232 239 | 
             
            - spec/fake_responses/grant_bonus.xml
         | 
| 233 240 | 
             
            - spec/fake_responses/invalid_credentials.xml
         | 
| @@ -237,6 +244,7 @@ files: | |
| 237 244 | 
             
            - spec/fake_responses/revoke_qualification.xml
         | 
| 238 245 | 
             
            - spec/fake_responses/search_hits.xml
         | 
| 239 246 | 
             
            - spec/fake_responses/unblock_worker.xml
         | 
| 247 | 
            +
            - spec/fake_responses/update_qualification_type.xml
         | 
| 240 248 | 
             
            - spec/mturk.sample.yml
         | 
| 241 249 | 
             
            - spec/operations/approve_assignment_spec.rb
         | 
| 242 250 | 
             
            - spec/operations/assign_qualification_spec.rb
         | 
| @@ -251,6 +259,8 @@ files: | |
| 251 259 | 
             
            - spec/operations/get_account_balance_spec.rb
         | 
| 252 260 | 
             
            - spec/operations/get_assignments_spec.rb
         | 
| 253 261 | 
             
            - spec/operations/get_hit_spec.rb
         | 
| 262 | 
            +
            - spec/operations/get_qualification_type_spec.rb
         | 
| 263 | 
            +
            - spec/operations/get_qualifications_for_qualification_type_spec.rb
         | 
| 254 264 | 
             
            - spec/operations/get_reviewable_hits_spec.rb
         | 
| 255 265 | 
             
            - spec/operations/grant_bonus_spec.rb
         | 
| 256 266 | 
             
            - spec/operations/notify_workers_spec.rb
         | 
| @@ -260,6 +270,7 @@ files: | |
| 260 270 | 
             
            - spec/operations/send_test_event_notification_spec.rb
         | 
| 261 271 | 
             
            - spec/operations/set_hit_type_notification_spec.rb
         | 
| 262 272 | 
             
            - spec/operations/unblock_worker_spec.rb
         | 
| 273 | 
            +
            - spec/operations/update_qualification_type_spec.rb
         | 
| 263 274 | 
             
            - spec/parsers/answer_parser_spec.rb
         | 
| 264 275 | 
             
            - spec/parsers/hit_parser_spec.rb
         | 
| 265 276 | 
             
            - spec/requester_spec.rb
         | 
| @@ -318,6 +329,8 @@ test_files: | |
| 318 329 | 
             
            - spec/operations/get_account_balance_spec.rb
         | 
| 319 330 | 
             
            - spec/operations/get_assignments_spec.rb
         | 
| 320 331 | 
             
            - spec/operations/get_hit_spec.rb
         | 
| 332 | 
            +
            - spec/operations/get_qualification_type_spec.rb
         | 
| 333 | 
            +
            - spec/operations/get_qualifications_for_qualification_type_spec.rb
         | 
| 321 334 | 
             
            - spec/operations/get_reviewable_hits_spec.rb
         | 
| 322 335 | 
             
            - spec/operations/grant_bonus_spec.rb
         | 
| 323 336 | 
             
            - spec/operations/notify_workers_spec.rb
         | 
| @@ -327,6 +340,7 @@ test_files: | |
| 327 340 | 
             
            - spec/operations/send_test_event_notification_spec.rb
         | 
| 328 341 | 
             
            - spec/operations/set_hit_type_notification_spec.rb
         | 
| 329 342 | 
             
            - spec/operations/unblock_worker_spec.rb
         | 
| 343 | 
            +
            - spec/operations/update_qualification_type_spec.rb
         | 
| 330 344 | 
             
            - spec/parsers/answer_parser_spec.rb
         | 
| 331 345 | 
             
            - spec/parsers/hit_parser_spec.rb
         | 
| 332 346 | 
             
            - spec/requester_spec.rb
         | 
| @@ -1,27 +0,0 @@ | |
| 1 | 
            -
            # Parses out the CreateQualificationType response
         | 
| 2 | 
            -
            #
         | 
| 3 | 
            -
            # Example response:
         | 
| 4 | 
            -
            # <CreateQualificationTypeResponse>
         | 
| 5 | 
            -
            #   <OperationRequest>
         | 
| 6 | 
            -
            #     <RequestId>5218189c-1d7e-49a3-abbf-672fb5e77c66</RequestId>
         | 
| 7 | 
            -
            #   </OperationRequest>
         | 
| 8 | 
            -
            #   <QualificationType>
         | 
| 9 | 
            -
            #     <Request>
         | 
| 10 | 
            -
            #       <IsValid>True</IsValid>
         | 
| 11 | 
            -
            #     </Request>
         | 
| 12 | 
            -
            #     <QualificationTypeId>ZSPJXD4F1SFZP7YNJWR0</QualificationTypeId>
         | 
| 13 | 
            -
            #     <CreationTime>2009-07-13T17:26:33Z</CreationTime>
         | 
| 14 | 
            -
            #     <Name>SampleQualificationTest</Name>
         | 
| 15 | 
            -
            #     <Description>Description of my qualification test.</Description>
         | 
| 16 | 
            -
            #     <QualificationTypeStatus>Active</QualificationTypeStatus>
         | 
| 17 | 
            -
            #     <AutoGranted>0</AutoGranted>
         | 
| 18 | 
            -
            #   </QualificationType>
         | 
| 19 | 
            -
            # </CreateQualificationTypeResponse>
         | 
| 20 | 
            -
             | 
| 21 | 
            -
            module RTurk
         | 
| 22 | 
            -
              class CreateQualificationTypeResponse < Response
         | 
| 23 | 
            -
                def qualification_type_id
         | 
| 24 | 
            -
                  @xml.xpath('//QualificationTypeId').inner_text
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
            end
         |