ruby-trello 2.3.1 → 3.0.0
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 +13 -2
 - data/lib/trello.rb +13 -7
 - data/lib/trello/action.rb +27 -21
 - data/lib/trello/attachment.rb +40 -27
 - data/lib/trello/basic_data.rb +104 -9
 - data/lib/trello/board.rb +88 -102
 - data/lib/trello/card.rb +34 -235
 - data/lib/trello/checklist.rb +17 -71
 - data/lib/trello/comment.rb +32 -22
 - data/lib/trello/cover_image.rb +20 -0
 - data/lib/trello/custom_field.rb +31 -84
 - data/lib/trello/custom_field_item.rb +36 -58
 - data/lib/trello/custom_field_option.rb +40 -13
 - data/lib/trello/item.rb +27 -16
 - data/lib/trello/item_state.rb +7 -15
 - data/lib/trello/json_utils.rb +1 -1
 - data/lib/trello/label.rb +14 -101
 - data/lib/trello/label_name.rb +22 -25
 - data/lib/trello/list.rb +31 -44
 - data/lib/trello/member.rb +77 -32
 - data/lib/trello/notification.rb +27 -20
 - data/lib/trello/organization.rb +53 -25
 - data/lib/trello/plugin_datum.rb +11 -16
 - data/lib/trello/schema.rb +31 -0
 - data/lib/trello/schema/attribute/base.rb +79 -0
 - data/lib/trello/schema/attribute/board_pref.rb +45 -0
 - data/lib/trello/schema/attribute/custom_field_display.rb +45 -0
 - data/lib/trello/schema/attribute/default.rb +45 -0
 - data/lib/trello/schema/attribute_builder.rb +42 -0
 - data/lib/trello/schema/attribute_registration.rb +47 -0
 - data/lib/trello/schema/serializer/default.rb +17 -0
 - data/lib/trello/schema/serializer/labels.rb +23 -0
 - data/lib/trello/schema/serializer/time.rb +25 -0
 - data/lib/trello/schema/serializer/webhooks.rb +25 -0
 - data/lib/trello/token.rb +15 -12
 - data/lib/trello/webhook.rb +18 -71
 - data/spec/action_spec.rb +1 -2
 - data/spec/board_spec.rb +43 -103
 - data/spec/card_spec.rb +51 -50
 - data/spec/cassettes/action_find_with_id_and_get_all_fields.yml +104 -0
 - data/spec/cassettes/board_find_with_id_and_get_all_fields.yml +96 -0
 - data/spec/cassettes/board_find_with_id_and_get_specific_fields.yml +96 -0
 - data/spec/cassettes/can_add_a_member_to_a_board.yml +191 -0
 - data/spec/cassettes/can_arvhice_all_cards_of_list.yml +397 -0
 - data/spec/cassettes/can_get_actions_of_board.yml +188 -0
 - data/spec/cassettes/can_get_actions_of_list.yml +202 -0
 - data/spec/cassettes/can_get_actions_of_members.yml +199 -0
 - data/spec/cassettes/can_get_actions_of_organization.yml +201 -0
 - data/spec/cassettes/can_get_boards_of_custom_field.yml +198 -0
 - data/spec/cassettes/can_get_boards_of_label.yml +197 -0
 - data/spec/cassettes/can_get_boards_of_organization.yml +207 -0
 - data/spec/cassettes/can_get_cards_of_board.yml +193 -0
 - data/spec/cassettes/can_get_cards_of_list.yml +201 -0
 - data/spec/cassettes/can_get_cards_of_member.yml +204 -0
 - data/spec/cassettes/can_get_checklists_of_board.yml +187 -0
 - data/spec/cassettes/can_get_custom_field_options_of_custom_field.yml +197 -0
 - data/spec/cassettes/can_get_custom_fields_of_board.yml +187 -0
 - data/spec/cassettes/can_get_label_names_of_board.yml +187 -0
 - data/spec/cassettes/can_get_labels_of_board.yml +187 -0
 - data/spec/cassettes/can_get_lists_of_board.yml +187 -0
 - data/spec/cassettes/can_get_members_of_board.yml +188 -0
 - data/spec/cassettes/can_get_members_of_organization.yml +200 -0
 - data/spec/cassettes/can_get_notifications_of_member.yml +199 -0
 - data/spec/cassettes/can_get_organization_of_board.yml +189 -0
 - data/spec/cassettes/can_get_organizations_of_member.yml +203 -0
 - data/spec/cassettes/can_get_plugin_data_of_board.yml +187 -0
 - data/spec/cassettes/can_move_all_cards_to_another_list.yml +886 -0
 - data/spec/cassettes/can_success_create_a_board.yml +98 -0
 - data/spec/cassettes/can_success_create_a_board_with_full_parameters.yml +97 -0
 - data/spec/cassettes/can_success_create_a_board_without_clone_from_other.yml +98 -0
 - data/spec/cassettes/can_success_create_a_card_when_due_is_datetime.yml +98 -0
 - data/spec/cassettes/can_success_create_a_card_when_due_is_time.yml +98 -0
 - data/spec/cassettes/can_success_create_a_checklist.yml +102 -0
 - data/spec/cassettes/can_success_create_a_custom_field.yml +102 -0
 - data/spec/cassettes/can_success_create_a_custom_field_option.yml +102 -0
 - data/spec/cassettes/can_success_create_a_label.yml +102 -0
 - data/spec/cassettes/can_success_create_a_list.yml +102 -0
 - data/spec/cassettes/can_success_create_a_list_with_full_parameters.yml +102 -0
 - data/spec/cassettes/can_success_create_a_organization.yml +104 -0
 - data/spec/cassettes/can_success_create_a_webhook.yml +102 -0
 - data/spec/cassettes/can_success_delete_a_custom_field_option.yml +389 -0
 - data/spec/cassettes/can_success_delete_checklist.yml +284 -0
 - data/spec/cassettes/can_success_get_card_of_board_by_card_id.yml +188 -0
 - data/spec/cassettes/can_success_remove_member_from_board.yml +186 -0
 - data/spec/cassettes/can_success_return_all_boards_of_current_user.yml +195 -0
 - data/spec/cassettes/can_success_upate_a_board.yml +191 -0
 - data/spec/cassettes/can_success_upate_a_list.yml +296 -0
 - data/spec/cassettes/can_success_update_bong_a_board.yml +39 -39
 - data/spec/cassettes/can_success_update_bong_a_board_with_specific_fields.yml +284 -0
 - data/spec/cassettes/can_success_update_bong_a_checklist_with_specific_fields.yml +296 -0
 - data/spec/cassettes/can_success_update_bong_a_custom_field.yml +200 -0
 - data/spec/cassettes/can_success_update_bong_a_label.yml +200 -0
 - data/spec/cassettes/can_success_update_bong_a_list.yml +199 -0
 - data/spec/cassettes/can_success_update_bong_a_list_with_specific_fields.yml +296 -0
 - data/spec/cassettes/can_success_update_bong_a_organization.yml +203 -0
 - data/spec/cassettes/can_success_update_bong_a_webhook.yml +296 -0
 - data/spec/cassettes/checklist_can_add_an_item.yml +296 -0
 - data/spec/cassettes/checklist_can_update_the_item_state.yml +296 -0
 - data/spec/cassettes/checklist_find_with_id_and_get_all_fields.yml +100 -0
 - data/spec/cassettes/custom_field_find_with_id_and_get_all_fields.yml +100 -0
 - data/spec/cassettes/custom_field_find_with_id_and_get_specific_fields.yml +100 -0
 - data/spec/cassettes/custom_field_item_save_1.yml +1 -1
 - data/spec/cassettes/custom_field_item_save_2.yml +1 -1
 - data/spec/cassettes/custom_field_option_find_with_id.yml +100 -0
 - data/spec/cassettes/get_board_of_list.yml +197 -0
 - data/spec/cassettes/get_boards_of_member.yml +207 -0
 - data/spec/cassettes/label_delete.yml +285 -0
 - data/spec/cassettes/label_find_with_id.yml +100 -0
 - data/spec/cassettes/list_find_with_id_and_get_all_fields.yml +100 -0
 - data/spec/cassettes/list_find_with_id_and_get_specific_fields.yml +100 -0
 - data/spec/cassettes/member_find_with_id_and_get_all_fields.yml +101 -0
 - data/spec/cassettes/member_find_with_id_and_get_specific_fields.yml +100 -0
 - data/spec/cassettes/notification_find_with_id.yml +103 -0
 - data/spec/cassettes/organization_find_with_id_and_get_all_fields.yml +102 -0
 - data/spec/cassettes/organization_find_with_id_and_get_specific_fields.yml +100 -0
 - data/spec/cassettes/token_find_with_token_string.yml +100 -0
 - data/spec/cassettes/webhook_delete.yml +286 -0
 - data/spec/cassettes/webhook_find_with_id.yml +100 -0
 - data/spec/checklist_spec.rb +27 -43
 - data/spec/custom_field_item_spec.rb +2 -2
 - data/spec/custom_field_option_spec.rb +2 -2
 - data/spec/custom_field_spec.rb +25 -13
 - data/spec/integration/action/find_spec.rb +23 -0
 - data/spec/integration/basic_data/many_spec.rb +4 -0
 - data/spec/integration/basic_data/schema_spec.rb +156 -0
 - data/spec/integration/board/add_member_spec.rb +21 -0
 - data/spec/integration/board/all_spec.rb +20 -0
 - data/spec/integration/board/associations/actions_spec.rb +18 -0
 - data/spec/integration/board/associations/cards_spec.rb +18 -0
 - data/spec/integration/board/associations/checklists_spec.rb +18 -0
 - data/spec/integration/board/associations/custom_fields_spec.rb +18 -0
 - data/spec/integration/board/associations/label_names_spec.rb +17 -0
 - data/spec/integration/board/associations/labels_spec.rb +18 -0
 - data/spec/integration/board/associations/lists_spec.rb +18 -0
 - data/spec/integration/board/associations/members_spec.rb +18 -0
 - data/spec/integration/board/associations/organization_spec.rb +19 -0
 - data/spec/integration/board/associations/plugin_data_spec.rb +18 -0
 - data/spec/integration/board/create_spec.rb +95 -0
 - data/spec/integration/board/find_card_spec.rb +18 -0
 - data/spec/integration/board/find_spec.rb +42 -0
 - data/spec/integration/board/remove_member_spec.rb +21 -0
 - data/spec/integration/board/save_spec.rb +37 -0
 - data/spec/integration/board/update!_spec.rb +33 -2
 - data/spec/integration/card/associations/plugin_data_spec.rb +1 -1
 - data/spec/integration/card/create_spec.rb +36 -2
 - data/spec/integration/card/find_spec.rb +1 -1
 - data/spec/integration/card/save_spec.rb +2 -2
 - data/spec/integration/checklist/add_item_spec.rb +20 -0
 - data/spec/integration/checklist/create_spec.rb +23 -0
 - data/spec/integration/checklist/delete_spec.rb +17 -0
 - data/spec/integration/checklist/find_spec.rb +22 -0
 - data/spec/integration/checklist/update!_spec.rb +21 -0
 - data/spec/integration/checklist/update_item_state_spec.rb +20 -0
 - data/spec/integration/custom_field/association/board_spec.rb +18 -0
 - data/spec/integration/custom_field/association/custom_field_options_spec.rb +18 -0
 - data/spec/integration/custom_field/create_spec.rb +29 -0
 - data/spec/integration/custom_field/find_spec.rb +41 -0
 - data/spec/integration/custom_field/update!_spec.rb +25 -0
 - data/spec/integration/custom_field_option/create_spec.rb +23 -0
 - data/spec/integration/custom_field_option/delete_spec.rb +19 -0
 - data/spec/integration/custom_field_option/find_spec.rb +21 -0
 - data/spec/integration/label/association/board_spec.rb +18 -0
 - data/spec/integration/label/create_spec.rb +23 -0
 - data/spec/integration/label/delete_spec.rb +21 -0
 - data/spec/integration/label/find_spec.rb +20 -0
 - data/spec/integration/label/update!_spec.rb +25 -0
 - data/spec/integration/list/archive_all_cards_spec.rb +20 -0
 - data/spec/integration/list/associations/actions_spec.rb +18 -0
 - data/spec/integration/list/associations/board_spec.rb +18 -0
 - data/spec/integration/list/associations/cards_spec.rb +18 -0
 - data/spec/integration/list/create_spec.rb +44 -0
 - data/spec/integration/list/find_spec.rb +37 -0
 - data/spec/integration/list/move_all_cards_spec.rb +31 -0
 - data/spec/integration/list/save_spec.rb +40 -0
 - data/spec/integration/list/update!_spec.rb +43 -0
 - data/spec/integration/member/associations/actions_spec.rb +17 -0
 - data/spec/integration/member/associations/boards_spec.rb +18 -0
 - data/spec/integration/member/associations/cards_spec.rb +18 -0
 - data/spec/integration/member/associations/notifications_spec.rb +18 -0
 - data/spec/integration/member/associations/organizations_spec.rb +18 -0
 - data/spec/integration/member/find_spec.rb +39 -0
 - data/spec/integration/member/update!_spec.rb +18 -0
 - data/spec/integration/notification/find_spec.rb +27 -0
 - data/spec/integration/organization/associations/actions_spec.rb +18 -0
 - data/spec/integration/organization/associations/boards_spec.rb +18 -0
 - data/spec/integration/organization/associations/members_spec.rb +18 -0
 - data/spec/integration/organization/create_spec.rb +23 -0
 - data/spec/integration/organization/find_spec.rb +37 -0
 - data/spec/integration/organization/update!_spec.rb +28 -0
 - data/spec/integration/token/find_spec.rb +24 -0
 - data/spec/integration/webhook/create_spec.rb +27 -0
 - data/spec/integration/webhook/delete_spec.rb +21 -0
 - data/spec/integration/webhook/find_spec.rb +22 -0
 - data/spec/integration/webhook/update!_spec.rb +24 -0
 - data/spec/item_spec.rb +2 -2
 - data/spec/label_spec.rb +31 -33
 - data/spec/list_spec.rb +32 -14
 - data/spec/notification_spec.rb +3 -3
 - data/spec/organization_spec.rb +6 -5
 - data/spec/spec_helper.rb +22 -14
 - data/spec/token_spec.rb +10 -11
 - data/spec/unit/trello/basic_data_spec.rb +67 -8
 - data/spec/unit/trello/board/new_spec.rb +370 -0
 - data/spec/unit/trello/board/save_spec.rb +49 -0
 - data/spec/unit/trello/board/update_fields_spec.rb +129 -0
 - data/spec/unit/trello/board/update_spec.rb +197 -0
 - data/spec/unit/trello/member/new_spec.rb +62 -0
 - data/spec/unit/trello/member/update_fields_spec.rb +80 -0
 - data/spec/unit/trello/schema/attribute/base_spec.rb +349 -0
 - data/spec/unit/trello/schema/attribute/board_pref_spec.rb +208 -0
 - data/spec/unit/trello/schema/attribute/default_spec.rb +236 -0
 - data/spec/unit/trello/schema/attribute_builder_spec.rb +55 -0
 - data/spec/unit/trello/schema/attribute_registration_spec.rb +59 -0
 - data/spec/unit/trello/schema/serializer/default_spec.rb +19 -0
 - data/spec/unit/trello/schema/serializer/time_spec.rb +39 -0
 - data/spec/unit/trello/schema_spec.rb +25 -0
 - data/spec/webhook_spec.rb +23 -7
 - metadata +422 -102
 - data/lib/trello/register_attributes.rb +0 -54
 - data/spec/integration/basic_data/register_attributes_spec.rb +0 -75
 
    
        data/lib/trello/cover_image.rb
    CHANGED
    
    | 
         @@ -4,5 +4,25 @@ module Trello 
     | 
|
| 
       4 
4 
     | 
    
         
             
              # This is normally an attachment that the user (or trello) has set
         
     | 
| 
       5 
5 
     | 
    
         
             
              # as the cover image
         
     | 
| 
       6 
6 
     | 
    
         
             
              class CoverImage < Attachment
         
     | 
| 
      
 7 
     | 
    
         
            +
                # Same with Attachment may need refactor it to support inheritance
         
     | 
| 
      
 8 
     | 
    
         
            +
                schema do
         
     | 
| 
      
 9 
     | 
    
         
            +
                  # Readonly
         
     | 
| 
      
 10 
     | 
    
         
            +
                  attribute :id, readonly: true, primary_key: true
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attribute :position, readonly: true, remote_key: 'pos'
         
     | 
| 
      
 12 
     | 
    
         
            +
                  attribute :bytes, readonly: true
         
     | 
| 
      
 13 
     | 
    
         
            +
                  attribute :member_id, remote_key: 'idMember', readonly: true
         
     | 
| 
      
 14 
     | 
    
         
            +
                  attribute :date, serializer: 'Time', readonly: true
         
     | 
| 
      
 15 
     | 
    
         
            +
                  attribute :is_upload, remote_key: 'isUpload', readonly: true
         
     | 
| 
      
 16 
     | 
    
         
            +
                  attribute :previews, readonly: true
         
     | 
| 
      
 17 
     | 
    
         
            +
                  attribute :file_name, remote_key: 'fileName', readonly: true
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attribute :edge_color, remote_key: 'edgeColor', readonly: true
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  # Writable but create only
         
     | 
| 
      
 21 
     | 
    
         
            +
                  attribute :name, create_only: true
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attribute :url, create_only: true
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attribute :mime_type, remote_key: 'mimeType', create_only: true
         
     | 
| 
      
 24 
     | 
    
         
            +
                  attribute :file, create_only: true
         
     | 
| 
      
 25 
     | 
    
         
            +
                  attribute :set_as_cover, remote_key: 'setCover', create_only: true
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
       7 
27 
     | 
    
         
             
              end
         
     | 
| 
       8 
28 
     | 
    
         
             
            end
         
     | 
    
        data/lib/trello/custom_field.rb
    CHANGED
    
    | 
         @@ -1,53 +1,54 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Trello
         
     | 
| 
       2 
2 
     | 
    
         
             
              # A Custom Field can be activated on a board. Values are stored at the card level.
         
     | 
| 
       3 
3 
     | 
    
         
             
              #
         
     | 
| 
       4 
     | 
    
         
            -
              # @!attribute id
         
     | 
| 
      
 4 
     | 
    
         
            +
              # @!attribute [r] id
         
     | 
| 
       5 
5 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       6 
     | 
    
         
            -
              # @!attribute model_id
         
     | 
| 
      
 6 
     | 
    
         
            +
              # @!attribute [rw] model_id
         
     | 
| 
       7 
7 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       8 
     | 
    
         
            -
              # @!attribute model_type
         
     | 
| 
      
 8 
     | 
    
         
            +
              # @!attribute [rw] model_type
         
     | 
| 
       9 
9 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       10 
     | 
    
         
            -
              # @!attribute field_group
         
     | 
| 
      
 10 
     | 
    
         
            +
              # @!attribute [r] field_group
         
     | 
| 
       11 
11 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       12 
     | 
    
         
            -
              # @!attribute name
         
     | 
| 
      
 12 
     | 
    
         
            +
              # @!attribute [rw] name
         
     | 
| 
       13 
13 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       14 
     | 
    
         
            -
              # @!attribute  
     | 
| 
      
 14 
     | 
    
         
            +
              # @!attribute [rw] position
         
     | 
| 
       15 
15 
     | 
    
         
             
              #   @return [Float]
         
     | 
| 
       16 
     | 
    
         
            -
              # @!attribute type
         
     | 
| 
      
 16 
     | 
    
         
            +
              # @!attribute [rw] type
         
     | 
| 
       17 
17 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       18 
     | 
    
         
            -
              # @!attribute  
     | 
| 
      
 18 
     | 
    
         
            +
              # @!attribute [rw] checkbox_options
         
     | 
| 
       19 
19 
     | 
    
         
             
              #   @return [Array<Hash>]
         
     | 
| 
      
 20 
     | 
    
         
            +
              # @!attribute [w] enable_display_on_card
         
     | 
| 
      
 21 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
       20 
22 
     | 
    
         
             
              class CustomField < BasicData
         
     | 
| 
       21 
     | 
    
         
            -
                register_attributes :id, :model_id, :model_type, :field_group, :name, :pos, :type
         
     | 
| 
       22 
     | 
    
         
            -
                validates_presence_of :id, :model_id, :model_type, :name, :type, :pos
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                 
     | 
| 
       25 
     | 
    
         
            -
                   
     | 
| 
       26 
     | 
    
         
            -
                   
     | 
| 
       27 
     | 
    
         
            -
                   
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
       31 
     | 
    
         
            -
                   
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
                schema do
         
     | 
| 
      
 25 
     | 
    
         
            +
                  # Readonly
         
     | 
| 
      
 26 
     | 
    
         
            +
                  attribute :id, readonly: true, primary_key: true
         
     | 
| 
      
 27 
     | 
    
         
            +
                  attribute :field_group, readonly: true, remote_key: 'fieldGroup'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  # Writable
         
     | 
| 
      
 30 
     | 
    
         
            +
                  attribute :name
         
     | 
| 
      
 31 
     | 
    
         
            +
                  attribute :position, remote_key: 'pos'
         
     | 
| 
      
 32 
     | 
    
         
            +
                  attribute :enable_display_on_card, remote_key: 'cardFront', class_name: 'CustomFieldDisplay'
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  # Writable but for create only
         
     | 
| 
      
 35 
     | 
    
         
            +
                  attribute :model_id, remote_key: 'idModel', create_only: true
         
     | 
| 
      
 36 
     | 
    
         
            +
                  attribute :model_type, remote_key: 'modelType', create_only: true
         
     | 
| 
      
 37 
     | 
    
         
            +
                  attribute :type, create_only: true
         
     | 
| 
      
 38 
     | 
    
         
            +
                  attribute :checkbox_options, remote_key: 'options', create_only: true
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                validates_presence_of :id, :model_id, :model_type, :name, :type, :position
         
     | 
| 
       33 
42 
     | 
    
         | 
| 
       34 
43 
     | 
    
         
             
                class << self
         
     | 
| 
       35 
44 
     | 
    
         
             
                  # Find a custom field by its id.
         
     | 
| 
       36 
45 
     | 
    
         
             
                  def find(id, params = {})
         
     | 
| 
       37 
46 
     | 
    
         
             
                    client.find('customFields', id, params)
         
     | 
| 
       38 
47 
     | 
    
         
             
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
       39 
49 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                   
     | 
| 
       42 
     | 
    
         
            -
                    client.create('customFields',
         
     | 
| 
       43 
     | 
    
         
            -
                      'name'       => options[:name],
         
     | 
| 
       44 
     | 
    
         
            -
                      'idModel'    => options[:model_id],
         
     | 
| 
       45 
     | 
    
         
            -
                      'modelType'  => options[:model_type],
         
     | 
| 
       46 
     | 
    
         
            -
                      'fieldGroup' => options[:field_group],
         
     | 
| 
       47 
     | 
    
         
            -
                      'type'       => options[:type],
         
     | 
| 
       48 
     | 
    
         
            -
                      'pos'        => options[:pos]
         
     | 
| 
       49 
     | 
    
         
            -
                    )
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                def collection_name
         
     | 
| 
      
 51 
     | 
    
         
            +
                  'customFields'
         
     | 
| 
       51 
52 
     | 
    
         
             
                end
         
     | 
| 
       52 
53 
     | 
    
         | 
| 
       53 
54 
     | 
    
         
             
                # References Board where this custom field is located
         
     | 
| 
         @@ -57,43 +58,6 @@ module Trello 
     | 
|
| 
       57 
58 
     | 
    
         
             
                # If type == 'list'
         
     | 
| 
       58 
59 
     | 
    
         
             
                many :custom_field_options, path: 'options'
         
     | 
| 
       59 
60 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                def update_fields(fields)
         
     | 
| 
       61 
     | 
    
         
            -
                  send('name_will_change!') if fields_has_key?(fields, :name)
         
     | 
| 
       62 
     | 
    
         
            -
                  send('pos_will_change!') if fields_has_key?(fields, :pos)
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                  initialize_fields(fields)
         
     | 
| 
       65 
     | 
    
         
            -
                end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                def initialize(fields = {})
         
     | 
| 
       68 
     | 
    
         
            -
                  initialize_fields(fields)
         
     | 
| 
       69 
     | 
    
         
            -
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                # Saves a record.
         
     | 
| 
       72 
     | 
    
         
            -
                def save
         
     | 
| 
       73 
     | 
    
         
            -
                  # If we have an id, just update our fields.
         
     | 
| 
       74 
     | 
    
         
            -
                  return update! if id
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                  from_response client.post("/customFields", {
         
     | 
| 
       77 
     | 
    
         
            -
                    name:       name,
         
     | 
| 
       78 
     | 
    
         
            -
                    idModel:    model_id,
         
     | 
| 
       79 
     | 
    
         
            -
                    modelType:  model_type,
         
     | 
| 
       80 
     | 
    
         
            -
                    type:       type,
         
     | 
| 
       81 
     | 
    
         
            -
                    pos:        pos,
         
     | 
| 
       82 
     | 
    
         
            -
                    fieldGroup: field_group
         
     | 
| 
       83 
     | 
    
         
            -
                  })
         
     | 
| 
       84 
     | 
    
         
            -
                end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
                # Update an existing custom field.
         
     | 
| 
       87 
     | 
    
         
            -
                def update!
         
     | 
| 
       88 
     | 
    
         
            -
                  @previously_changed = changes
         
     | 
| 
       89 
     | 
    
         
            -
                  # extract only new values to build payload
         
     | 
| 
       90 
     | 
    
         
            -
                  payload = Hash[changes.map { |key, values| [SYMBOL_TO_STRING[key.to_sym].to_sym, values[1]] }]
         
     | 
| 
       91 
     | 
    
         
            -
                  @changed_attributes.clear if @changed_attributes.respond_to?(:clear)
         
     | 
| 
       92 
     | 
    
         
            -
                  changes_applied if respond_to?(:changes_applied)
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
                  client.put("/customFields/#{id}", payload)
         
     | 
| 
       95 
     | 
    
         
            -
                end
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
61 
     | 
    
         
             
                # Delete this custom field
         
     | 
| 
       98 
62 
     | 
    
         
             
                # Also deletes all associated values across all cards
         
     | 
| 
       99 
63 
     | 
    
         
             
                def delete
         
     | 
| 
         @@ -110,22 +74,5 @@ module Trello 
     | 
|
| 
       110 
74 
     | 
    
         
             
                def delete_option(option_id)
         
     | 
| 
       111 
75 
     | 
    
         
             
                  client.delete("/customFields/#{id}/options/#{option_id}")
         
     | 
| 
       112 
76 
     | 
    
         
             
                end
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                private
         
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
                def fields_has_key?(fields, key)
         
     | 
| 
       117 
     | 
    
         
            -
                  fields.key?(SYMBOL_TO_STRING[key]) || fields.key?(key)
         
     | 
| 
       118 
     | 
    
         
            -
                end
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
                def initialize_fields(fields)
         
     | 
| 
       121 
     | 
    
         
            -
                  attributes[:id]          = fields[SYMBOL_TO_STRING[:id]] || fields[:id] || attributes[:id]
         
     | 
| 
       122 
     | 
    
         
            -
                  attributes[:name]        = fields[SYMBOL_TO_STRING[:name]] || fields[:name] || attributes[:name]
         
     | 
| 
       123 
     | 
    
         
            -
                  attributes[:model_id]    = fields[SYMBOL_TO_STRING[:model_id]] || fields[:model_id] || attributes[:model_id]
         
     | 
| 
       124 
     | 
    
         
            -
                  attributes[:model_type]  = fields[SYMBOL_TO_STRING[:model_type]] || fields[:model_type] || attributes[:model_type]
         
     | 
| 
       125 
     | 
    
         
            -
                  attributes[:field_group] = fields[SYMBOL_TO_STRING[:field_group]] || fields[:field_group] || attributes[:field_group]
         
     | 
| 
       126 
     | 
    
         
            -
                  attributes[:type]        = fields[SYMBOL_TO_STRING[:type]] || fields[:type] || attributes[:type]
         
     | 
| 
       127 
     | 
    
         
            -
                  attributes[:pos]         = fields[SYMBOL_TO_STRING[:pos]] || fields[:pos] || attributes[:pos]
         
     | 
| 
       128 
     | 
    
         
            -
                  self
         
     | 
| 
       129 
     | 
    
         
            -
                end
         
     | 
| 
       130 
77 
     | 
    
         
             
              end
         
     | 
| 
       131 
78 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,9 +1,30 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Trello
         
     | 
| 
       2 
2 
     | 
    
         
             
              # A custom field item contains the value for a custom field on a particular card.
         
     | 
| 
       3 
3 
     | 
    
         
             
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # @!attribute [r] id
         
     | 
| 
      
 5 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 6 
     | 
    
         
            +
              # @!attribute [r] model_id
         
     | 
| 
      
 7 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 8 
     | 
    
         
            +
              # @!attribute [r] model_type
         
     | 
| 
      
 9 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 10 
     | 
    
         
            +
              # @!attribute [r] custom_field_id
         
     | 
| 
      
 11 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 12 
     | 
    
         
            +
              # @!attribute [r] option_id
         
     | 
| 
      
 13 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 14 
     | 
    
         
            +
              # @!attribute [rw] value
         
     | 
| 
      
 15 
     | 
    
         
            +
              #   @return [Hash]
         
     | 
| 
       4 
16 
     | 
    
         
             
              class CustomFieldItem < BasicData
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                schema do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attribute :id, readonly: true, primary_key: true
         
     | 
| 
      
 20 
     | 
    
         
            +
                  attribute :model_id, readonly: true, remote_key: 'idModel'
         
     | 
| 
      
 21 
     | 
    
         
            +
                  attribute :model_type, readonly: true, remote_key: 'modelType'
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attribute :custom_field_id, readonly: true, remote_key: 'idCustomField'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attribute :option_id, readonly: true, remote_key: 'idValue'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  attribute :value
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
       7 
28 
     | 
    
         
             
                validates_presence_of :id, :model_id, :custom_field_id
         
     | 
| 
       8 
29 
     | 
    
         | 
| 
       9 
30 
     | 
    
         
             
                # References the card with this custom field value
         
     | 
| 
         @@ -12,57 +33,33 @@ module Trello 
     | 
|
| 
       12 
33 
     | 
    
         
             
                # References the parent custom field that this item is an instance of
         
     | 
| 
       13 
34 
     | 
    
         
             
                one :custom_field, path: 'customFields', using: :custom_field_id
         
     | 
| 
       14 
35 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                # Supply a hash of string keyed data retrieved from the Trello API representing
         
     | 
| 
       18 
     | 
    
         
            -
                # an item state.
         
     | 
| 
       19 
     | 
    
         
            -
                def update_fields(fields)
         
     | 
| 
       20 
     | 
    
         
            -
                  if fields_has_key?(fields, 'value')
         
     | 
| 
       21 
     | 
    
         
            -
                    send('value_will_change!')
         
     | 
| 
       22 
     | 
    
         
            -
                  elsif fields_has_key?(fields, 'idValue')
         
     | 
| 
       23 
     | 
    
         
            -
                    send('option_id_will_change!')
         
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  initialize_fields(fields)
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
                def save
         
     | 
| 
      
 37 
     | 
    
         
            +
                  return update! if id
         
     | 
| 
       28 
38 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  initialize_fields(fields)
         
     | 
| 
       31 
     | 
    
         
            -
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  payload = {}
         
     | 
| 
       32 
40 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                   
     | 
| 
       36 
     | 
    
         
            -
                  payload = Hash[changes.map { |key, values| [key.to_sym, values[1]] }]
         
     | 
| 
       37 
     | 
    
         
            -
                  @changed_attributes.clear if @changed_attributes.respond_to?(:clear)
         
     | 
| 
       38 
     | 
    
         
            -
                  changes_applied if respond_to?(:changes_applied)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  schema.attrs.each do |_, attribute|
         
     | 
| 
      
 42 
     | 
    
         
            +
                    payload = attribute.build_payload_for_create(attributes, payload)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
       39 
44 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
      
 45 
     | 
    
         
            +
                  put(element_path, payload)
         
     | 
| 
       41 
46 
     | 
    
         
             
                end
         
     | 
| 
       42 
47 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                 
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                 
     | 
| 
       46 
     | 
    
         
            -
                #
         
     | 
| 
       47 
     | 
    
         
            -
                # @return [String] The JSON representation of the saved custom field item returned by
         
     | 
| 
       48 
     | 
    
         
            -
                # the Trello API.
         
     | 
| 
       49 
     | 
    
         
            -
                def save
         
     | 
| 
       50 
     | 
    
         
            -
                  # If we have an id, just update our fields.
         
     | 
| 
       51 
     | 
    
         
            -
                  return update! if id
         
     | 
| 
      
 48 
     | 
    
         
            +
                def collection_path
         
     | 
| 
      
 49 
     | 
    
         
            +
                  "/cards/#{model_id}/#{collection_name}"
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
       52 
51 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                  })
         
     | 
| 
      
 52 
     | 
    
         
            +
                def element_path
         
     | 
| 
      
 53 
     | 
    
         
            +
                  "/cards/#{model_id}/customField/#{custom_field_id}/item"
         
     | 
| 
       56 
54 
     | 
    
         
             
                end
         
     | 
| 
       57 
55 
     | 
    
         | 
| 
       58 
56 
     | 
    
         
             
                # You can't "delete" a custom field item, you can only clear the value
         
     | 
| 
       59 
57 
     | 
    
         
             
                def remove
         
     | 
| 
       60 
58 
     | 
    
         
             
                  params = { value: {} }
         
     | 
| 
       61 
     | 
    
         
            -
                  client.put( 
     | 
| 
      
 59 
     | 
    
         
            +
                  client.put(element_path, params)
         
     | 
| 
       62 
60 
     | 
    
         
             
                end
         
     | 
| 
       63 
61 
     | 
    
         | 
| 
       64 
62 
     | 
    
         
             
                # Type is saved at the CustomField level
         
     | 
| 
       65 
     | 
    
         
            -
                # Can equally be derived from :value, with a little parsing work: {"number": 42}
         
     | 
| 
       66 
63 
     | 
    
         
             
                def type
         
     | 
| 
       67 
64 
     | 
    
         
             
                  custom_field.type
         
     | 
| 
       68 
65 
     | 
    
         
             
                end
         
     | 
| 
         @@ -75,24 +72,5 @@ module Trello 
     | 
|
| 
       75 
72 
     | 
    
         
             
                    option.value
         
     | 
| 
       76 
73 
     | 
    
         
             
                  end
         
     | 
| 
       77 
74 
     | 
    
         
             
                end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                private
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                def fields_has_key?(fields, key)
         
     | 
| 
       82 
     | 
    
         
            -
                  fields.key?(key.to_s) || fields.key?(key.to_sym)
         
     | 
| 
       83 
     | 
    
         
            -
                end
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
                def initialize_fields(fields)
         
     | 
| 
       86 
     | 
    
         
            -
                  attributes[:id]               = fields['id'] || fields[:id] || attributes[:id]
         
     | 
| 
       87 
     | 
    
         
            -
                  attributes[:model_id]         = fields['idModel'] || fields[:model_id] || attributes[:model_id]
         
     | 
| 
       88 
     | 
    
         
            -
                  attributes[:custom_field_id]  = fields['idCustomField'] || fields[:custom_field_id] || attributes[:custom_field_id]
         
     | 
| 
       89 
     | 
    
         
            -
                  attributes[:model_type]       = fields['modelType'] || fields[:model_type] || attributes[:model_type]
         
     | 
| 
       90 
     | 
    
         
            -
                  # Dropdown custom field items do not have a value, they have an ID that maps to
         
     | 
| 
       91 
     | 
    
         
            -
                  # a different endpoint to get the value
         
     | 
| 
       92 
     | 
    
         
            -
                  attributes[:option_id]       = fields['idValue'] || fields[:idValue] if fields_has_key?(fields, 'idValue')
         
     | 
| 
       93 
     | 
    
         
            -
                  # value format: { "text": "hello world" }
         
     | 
| 
       94 
     | 
    
         
            -
                  attributes[:value]            = fields['value'] || fields[:value] if fields_has_key?(fields, 'value')
         
     | 
| 
       95 
     | 
    
         
            -
                  self
         
     | 
| 
       96 
     | 
    
         
            -
                end
         
     | 
| 
       97 
75 
     | 
    
         
             
              end
         
     | 
| 
       98 
76 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,22 +1,49 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Trello
         
     | 
| 
       2 
2 
     | 
    
         
             
              # A custom field option contains the individual items in a custom field dropdown menu.
         
     | 
| 
       3 
3 
     | 
    
         
             
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # @!attribute [r] id
         
     | 
| 
      
 5 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 6 
     | 
    
         
            +
              # @!attribute [r] custom_field_id
         
     | 
| 
      
 7 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 8 
     | 
    
         
            +
              # @!attribute [rw] value
         
     | 
| 
      
 9 
     | 
    
         
            +
              #   @return [Hash]
         
     | 
| 
      
 10 
     | 
    
         
            +
              # @!attribute [rw] color
         
     | 
| 
      
 11 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 12 
     | 
    
         
            +
              # @!attribute [rw] position
         
     | 
| 
      
 13 
     | 
    
         
            +
              #   @return [Float]
         
     | 
| 
       4 
14 
     | 
    
         
             
              class CustomFieldOption < BasicData
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                schema do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  # Readonly
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attribute :id, remote_key: '_id', readonly: true, primary_key: true
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attribute :custom_field_id, remote_key: 'idCustomField', readonly: true
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  # Writable but for create only
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attribute :value, create_only: true
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attribute :color, create_only: true
         
     | 
| 
      
 24 
     | 
    
         
            +
                  attribute :position, remote_key: 'pos', create_only: true
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       7 
27 
     | 
    
         
             
                validates_presence_of :id, :value
         
     | 
| 
       8 
28 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                   
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
                def self.find(id, params = {})
         
     | 
| 
      
 30 
     | 
    
         
            +
                  params = params.with_indifferent_access
         
     | 
| 
      
 31 
     | 
    
         
            +
                  custom_field_id = params.delete(:custom_field_id)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  return if custom_field_id.nil?
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  from_response client.get("/customFields/#{custom_field_id}/options/#{id}")
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                def delete
         
     | 
| 
      
 38 
     | 
    
         
            +
                  client.delete(element_path)
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                def collection_path
         
     | 
| 
      
 42 
     | 
    
         
            +
                  "/customFields/#{custom_field_id}/options"
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def element_path
         
     | 
| 
      
 46 
     | 
    
         
            +
                  "/customFields/#{custom_field_id}/options/#{id}"
         
     | 
| 
       20 
47 
     | 
    
         
             
                end
         
     | 
| 
       21 
48 
     | 
    
         
             
              end
         
     | 
| 
       22 
49 
     | 
    
         
             
            end
         
     | 
    
        data/lib/trello/item.rb
    CHANGED
    
    | 
         @@ -5,31 +5,42 @@ module Trello 
     | 
|
| 
       5 
5 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       6 
6 
     | 
    
         
             
              # @!attribute [r] name
         
     | 
| 
       7 
7 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
      
 8 
     | 
    
         
            +
              # @!attribute [r] name_data
         
     | 
| 
      
 9 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
       8 
10 
     | 
    
         
             
              # @!attribute [r] type
         
     | 
| 
       9 
11 
     | 
    
         
             
              #   @return [Object]
         
     | 
| 
       10 
12 
     | 
    
         
             
              # @!attribute [r] state
         
     | 
| 
       11 
13 
     | 
    
         
             
              #   @return [Object]
         
     | 
| 
       12 
     | 
    
         
            -
              # @!attribute [r]  
     | 
| 
      
 14 
     | 
    
         
            +
              # @!attribute [r] position
         
     | 
| 
       13 
15 
     | 
    
         
             
              #   @return [Object]
         
     | 
| 
      
 16 
     | 
    
         
            +
              # @!attribute [r] due_date
         
     | 
| 
      
 17 
     | 
    
         
            +
              #   @return [Datetime]
         
     | 
| 
      
 18 
     | 
    
         
            +
              # @!attribute [r] member_id
         
     | 
| 
      
 19 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 20 
     | 
    
         
            +
              # @!attribute [r] checklist_id
         
     | 
| 
      
 21 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 22 
     | 
    
         
            +
              # @!attribute [w] checked
         
     | 
| 
      
 23 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
       14 
24 
     | 
    
         
             
              class Item < BasicData
         
     | 
| 
       15 
     | 
    
         
            -
                register_attributes :id, :name, :type, :state, :pos, readonly: [ :id, :name, :type, :state, :pos ]
         
     | 
| 
       16 
     | 
    
         
            -
                validates_presence_of :id, :type
         
     | 
| 
       17 
25 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
                 
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                   
     | 
| 
       24 
     | 
    
         
            -
                   
     | 
| 
       25 
     | 
    
         
            -
                   
     | 
| 
       26 
     | 
    
         
            -
                   
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                   
     | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
      
 26 
     | 
    
         
            +
                schema do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  # Readonly
         
     | 
| 
      
 28 
     | 
    
         
            +
                  attribute :id, readonly: true, primary_key: true
         
     | 
| 
      
 29 
     | 
    
         
            +
                  attribute :type, readonly: true
         
     | 
| 
      
 30 
     | 
    
         
            +
                  attribute :name_data, readonly: true, remote_key: 'nameData'
         
     | 
| 
      
 31 
     | 
    
         
            +
                  attribute :due_date, readonly: true, remote_key: 'due', serializer: 'Time'
         
     | 
| 
      
 32 
     | 
    
         
            +
                  attribute :member_id, readonly: true, remote_key: 'idMember'
         
     | 
| 
      
 33 
     | 
    
         
            +
                  attribute :state, readonly: true
         
     | 
| 
      
 34 
     | 
    
         
            +
                  attribute :checklist_id, readonly: true, remote_key: 'idChecklist'
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  # Writable and write only
         
     | 
| 
      
 37 
     | 
    
         
            +
                  attribute :name, write_only: true
         
     | 
| 
      
 38 
     | 
    
         
            +
                  attribute :position, write_only: true, remote_key: 'pos'
         
     | 
| 
      
 39 
     | 
    
         
            +
                  attribute :checked, write_only: true
         
     | 
| 
       31 
40 
     | 
    
         
             
                end
         
     | 
| 
       32 
41 
     | 
    
         | 
| 
      
 42 
     | 
    
         
            +
                validates_presence_of :id
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
       33 
44 
     | 
    
         
             
                def complete?
         
     | 
| 
       34 
45 
     | 
    
         
             
                  state == "complete"
         
     | 
| 
       35 
46 
     | 
    
         
             
                end
         
     | 
    
        data/lib/trello/item_state.rb
    CHANGED
    
    | 
         @@ -5,26 +5,18 @@ module Trello 
     | 
|
| 
       5 
5 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       6 
6 
     | 
    
         
             
              # @!attribute [r] state
         
     | 
| 
       7 
7 
     | 
    
         
             
              #   @return [Object]
         
     | 
| 
       8 
     | 
    
         
            -
              # @!attribute [r] item_id
         
     | 
| 
       9 
     | 
    
         
            -
              #   @return [String]
         
     | 
| 
       10 
8 
     | 
    
         
             
              class CheckItemState < BasicData
         
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                #
         
     | 
| 
       16 
     | 
    
         
            -
                # Supply a hash of string keyed data retrieved from the Trello API representing
         
     | 
| 
       17 
     | 
    
         
            -
                # an item state.
         
     | 
| 
       18 
     | 
    
         
            -
                def update_fields(fields)
         
     | 
| 
       19 
     | 
    
         
            -
                  attributes[:id]      = fields['id'] || attributes[:id]
         
     | 
| 
       20 
     | 
    
         
            -
                  attributes[:state]   = fields['state'] || attributes[:state]
         
     | 
| 
       21 
     | 
    
         
            -
                  attributes[:item_id] = fields['idCheckItem'] || attributes[:item_id]
         
     | 
| 
       22 
     | 
    
         
            -
                  self
         
     | 
| 
      
 9 
     | 
    
         
            +
                schema do
         
     | 
| 
      
 10 
     | 
    
         
            +
                  #Readonly
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attribute :id, remote_key: 'idCheckItem', readonly: true, primary_key: true
         
     | 
| 
      
 12 
     | 
    
         
            +
                  attribute :state
         
     | 
| 
       23 
13 
     | 
    
         
             
                end
         
     | 
| 
       24 
14 
     | 
    
         | 
| 
      
 15 
     | 
    
         
            +
                validates_presence_of :id
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       25 
17 
     | 
    
         
             
                # Return the item this state belongs to.
         
     | 
| 
       26 
18 
     | 
    
         
             
                def item
         
     | 
| 
       27 
     | 
    
         
            -
                  Item.find( 
     | 
| 
      
 19 
     | 
    
         
            +
                  Item.find(id)
         
     | 
| 
       28 
20 
     | 
    
         
             
                end
         
     | 
| 
       29 
21 
     | 
    
         
             
              end
         
     | 
| 
       30 
22 
     | 
    
         
             
            end
         
     |