Class: Bloomy::Headline
- Inherits:
-
Object
- Object
- Bloomy::Headline
- Defined in:
- lib/bloomy/operations/headlines.rb
Constant Summary
Constants included from Utilities::Transform
Utilities::Transform::DATE_FIELDS
Instance Method Summary collapse
-
#create(meeting_id:, title:, owner_id: user_id, notes: nil) ⇒ HashWithIndifferentAccess
Creates a new headline.
-
#delete(headline_id) ⇒ Boolean
Deletes a headline.
-
#details(headline_id) ⇒ HashWithIndifferentAccess
Get headline details.
-
#initialize(conn) ⇒ Headline
constructor
Initializes a new headline instance.
-
#list(user_id: nil, meeting_id: nil) ⇒ Array<HashWithIndifferentAccess>
Get headlines for a user or a meeting.
-
#update(headline_id:, title:) ⇒ HashWithIndifferentAccess
Updates a headline.
Methods included from Utilities::Validation
#validate_id!, #validate_title!
Methods included from Utilities::Transform
#transform_array, #transform_response
Methods included from Utilities::UserIdUtility
Constructor Details
#initialize(conn) ⇒ Headline
Initializes a new headline instance
14 15 16 |
# File 'lib/bloomy/operations/headlines.rb', line 14 def initialize(conn) @conn = conn end |
Instance Method Details
#create(meeting_id:, title:, owner_id: user_id, notes: nil) ⇒ HashWithIndifferentAccess
Creates a new headline
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/bloomy/operations/headlines.rb', line 28 def create(meeting_id:, title:, owner_id: user_id, notes: nil) validate_title!(title) validate_id!(meeting_id, context: "meeting_id") response = @conn.post("L10/#{meeting_id}/headlines", {title: title, ownerId: owner_id, notes: notes}.to_json) data = handle_response(response, context: "create headline") transform_response({ id: data.dig("Id"), title: data.dig("Name"), owner_details: {id: data.dig("OwnerId")}, notes_url: data.dig("DetailsUrl") }) end |
#delete(headline_id) ⇒ Boolean
Deletes a headline
152 153 154 155 |
# File 'lib/bloomy/operations/headlines.rb', line 152 def delete(headline_id) response = @conn.delete("headline/#{headline_id}") handle_response!(response, context: "delete headline") end |
#details(headline_id) ⇒ HashWithIndifferentAccess
Get headline details
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/bloomy/operations/headlines.rb', line 65 def details(headline_id) response = @conn.get("headline/#{headline_id}?Include_Origin=true") data = handle_response(response, context: "get headline details") transform_response({ id: data.dig("Id"), title: data.dig("Name"), notes_url: data.dig("DetailsUrl"), meeting_details: { id: data.dig("OriginId"), title: data.dig("Origin") }, owner_details: { id: data.dig("Owner", "Id"), name: data.dig("Owner", "Name") }, archived: data.dig("Archived"), created_at: data.dig("CreateTime"), closed_at: data.dig("CloseTime") }) end |
#list(user_id: nil, meeting_id: nil) ⇒ Array<HashWithIndifferentAccess>
Get headlines for a user or a meeting.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/bloomy/operations/headlines.rb', line 115 def list(user_id: nil, meeting_id: nil) raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both." if user_id && meeting_id if meeting_id response = @conn.get("l10/#{meeting_id}/headlines") data = handle_response(response, context: "list meeting headlines") else user_id ||= self.user_id response = @conn.get("headline/users/#{user_id}") data = handle_response(response, context: "list user headlines") end transform_array(data.map do |headline| { id: headline.dig("Id"), title: headline.dig("Name"), meeting_details: { id: headline.dig("OriginId"), title: headline.dig("Origin") }, owner_details: { id: headline.dig("Owner", "Id"), name: headline.dig("Owner", "Name") }, archived: headline.dig("Archived"), created_at: headline.dig("CreateTime"), closed_at: headline.dig("CloseTime") } end) end |
#update(headline_id:, title:) ⇒ HashWithIndifferentAccess
Updates a headline
51 52 53 54 55 56 |
# File 'lib/bloomy/operations/headlines.rb', line 51 def update(headline_id:, title:) response = @conn.put("headline/#{headline_id}", {title: title}.to_json) handle_response!(response, context: "update headline") details(headline_id) end |