module Octokit class Client module Notifications # List your notifications # # @param options [Hash] Optional parameters # # @option options [Boolean] :all 'true' to show notifications marked as # read. # # @option options [Boolean] :participating 'true' to show only # notifications in which the user is directly participating or # mentioned. # # @option options [String] :since Time filters out any notifications # updated before the given time. The time should be passed in as UTC in # the ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z' # # @return [Array] Array of notifications. # # @see http://developer.github.com/v3/activity/notifications/#list-your-notifications # # @example Get users notifications # @client.notifications # # @example Get all notifications since a certain time. # @client.notifications({all: true, since: '2012-10-09T23:39:01Z'}) def notifications(options={}) get("notifications", options) end # List your notifications in a repository # # @param repo [String, Hash, Repository] A GitHub repository # @param options [Hash] Optional parameters # # @option options [Boolean] :all 'true' to show notifications marked as # read. # # @option options [Boolean] :participating 'true' to show only # notifications in which the user is directly participating or # mentioned. # # @option options [String] :since Time filters out any notifications # updated before the given time. The time should be passed in as UTC in # the ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z' # # @return [Array] Array of notifications. # # @see http://developer.github.com/v3/activity/notifications/#list-your-notifications-in-a-repository # # @example Get your notifications for pengwynn/octokit # @client.repository_notifications('pengwynn/octokit') # # @example Get your notifications for pengwynn/octokit since a time. # @client.repository_notifications({since: '2012-10-09T23:39:01Z'}) def repository_notifications(repo, options={}) get("repos/#{Repository.new repo}/notifications", options) end alias :repo_notifications :repository_notifications # Mark notifications as read # # @param options [Hash] Optional parameters # # @option options [Boolean] :unread Changes the unread status of the # threads. # # @option options [Boolean] :read Inverse of 'unread'. # # @option options [String] :last_read_at ('Now') Describes the last point # that notifications were checked. Anything updated since this time # will not be updated. The time should be passed in as UTC in the # ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z' # # @return [Boolean] True if marked as read, false otherwise # # @see http://developer.github.com/v3/activity/notifications/#mark-as-read # # @example # @client.mark_notifications_as_read def mark_notifications_as_read(options={}) request(:put, "notifications", options).status == 205 rescue Octokit::Error false end # Mark notifications from a specific repository as read # # @param repo [String, Hash, Repository] A GitHub repository # @param options [Hash] Optional parameters # # @option options [Boolean] :unread Changes the unread status of the # threads. # # @option options [Boolean] :read Inverse of 'unread'. # # @option options [String] :last_read_at ('Now') Describes the last point # that notifications were checked. Anything updated since this time # will not be updated. The time should be passed in as UTC in the # ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Ex. '2012-10-09T23:39:01Z' # # @return [Boolean] True if marked as read, false otherwise # # @see http://developer.github.com/v3/activity/notifications/#mark-notifications-as-read-in-a-repository # # @example # @client.mark_notifications_as_read("pengwynn/octokit") def mark_repository_notifications_as_read(repo, options={}) request(:put, "repos/#{Repository.new repo}/notifications", options).status == 205 rescue Octokit::Error false end alias :mark_repo_notifications_as_read :mark_repository_notifications_as_read # List notifications for a specific thread # # @param thread_id [Integer] Id of the thread. # # @return [Array] Array of notifications. # # @see http://developer.github.com/v3/activity/notifications/#view-a-single-thread # # @example # @client.notification_thread(1000) def thread_notifications(thread_id, options={}) get("notifications/threads/#{thread_id}", options) end # Mark thread as read # # @param thread_id [Integer] Id of the thread to update. # @param options [Hash] Optional parameters. # # @option options [Boolean] :unread Changes the unread status of the # threads. # # @option options [Boolean] :read Inverse of 'unread'. # # @return [Boolean] True if updated, false otherwise. # # @see http://developer.github.com/v3/activity/notifications/#mark-a-thread-as-read # # @example # @client.mark_thread_as_ready(1, :read => false) def mark_thread_as_read(thread_id, options={}) request(:patch, "notifications/threads/#{thread_id}", options).status == 205 rescue Octokit::Error false end # Get thread subscription # # @param thread_id [Integer] Id of the thread. # # @return [Hashie::Mash] Subscription. # # @see http://developer.github.com/v3/activity/notifications/#get-a-thread-subscription # # @example # @client.thread_subscription(1) def thread_subscription(thread_id, options={}) get("notifications/threads/#{thread_id}/subscription", options) end # Update thread subscription # # This lets you subscribe to a thread, or ignore it. Subscribing to a # thread is unnecessary if the user is already subscribed to the # repository. Ignoring a thread will mute all future notifications (until # you comment or get @mentioned). # # @param thread_id [Integer] Id of the thread. # @param options # # @option options [Boolean] :subscribed Determines if notifications # should be received from this repository. # # @option options [Boolean] :ignored Deterimines if all notifications # should be blocked from this repository. # # @return [Hashie::Mash] Updated subscription. # # @see http://developer.github.com/v3/activity/notifications/#set-a-thread-subscription # # @example Subscribe to notifications # @client.update_thread_subscription(1, :subscribed => true) # # @example Ignore notifications from a repo # @client.update_thread_subscription(1, :ignored => true) def update_thread_subscription(thread_id, options={}) put("notifications/threads/#{thread_id}/subscription", options) end # Delete a thread subscription # # @param thread_id [Integer] Id of the thread. # # @return [Boolean] True if delete successful, false otherwise. # # @see http://developer.github.com/v3/activity/notifications/#delete-a-thread-subscription # # @example # @client.delete_thread_subscription(1) def delete_thread_subscription(thread_id, options={}) boolean_from_response(:delete, "notifications/threads/#{thread_id}", options) end end end end