Class: Api::NotificationsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- Api::NotificationsController
- Includes:
- NotificationsConcern
- Defined in:
- app/controllers/api/notifications_controller.rb
Instance Method Summary collapse
-
#archive_selected ⇒ Object
Archive selected notifications.
-
#delete_selected ⇒ Object
Delete selected notifications.
-
#index ⇒ Object
Return a listing of notifications, including a summary of unread repos, notification reasons, and notification types.
-
#lookup ⇒ Object
Find a notification by it’s subject url.
-
#mark_read_selected ⇒ Object
Mark selected notifications as read.
-
#mute_selected ⇒ Object
Mute selected notifications, this will also archive them.
-
#star ⇒ Object
Star a notification.
-
#sync ⇒ Object
Synchronize notifications with GitHub.
-
#syncing ⇒ Object
Check if user is synchronizing notifications with GitHub.
-
#unread_count ⇒ Object
Return a count for the number of unread notifications.
Instance Method Details
#archive_selected ⇒ Object
Archive selected notifications
:category: Notifications Actions
Parameters
-
:id
- An array of IDs of notifications you’d like to archive. If ID is ‘all’, all notifications will be archived
Example
POST api/notifications/archive_selected.json?id=all
HEAD 204
216 217 218 219 |
# File 'app/controllers/api/notifications_controller.rb', line 216 def archive_selected Notification.archive(selected_notifications, params[:value]) head :ok end |
#delete_selected ⇒ Object
Delete selected notifications
:category: Notifications Actions
Parameters
-
:id
- An array of IDs of notifications you’d like to delete. If ID is ‘all’, all notifications will be deleted
Example
POST api/notifications/delete_selected.json?id=all
HEAD 204
252 253 254 255 |
# File 'app/controllers/api/notifications_controller.rb', line 252 def delete_selected selected_notifications.delete_all head :ok end |
#index ⇒ Object
Return a listing of notifications, including a summary of unread repos, notification reasons, and notification types
:category: Notifications CRUD
Parameters
-
:page
- The page you would like to request -
:per_page
- The number of results you would like to return per page. Max 100, default 20. -
:starred
- Return only the user’s starred notifications -
:archive
- Return only the user’s archived notifications -
:q
- Search by subject title of the notification
Notes
If the :per_page
paremeter is set to more than 100, a 404 will be returned
Example
GET api/notifications.json
{
"pagination" : {
"total_notifications" : 1,
"page" : 1,
"total_pages" : 1,
"per_page" : 20
},
"types" : {
"PullRequest" : 1,
},
"reasons" : {
"mention" : 1
},
"unread_repositories" : {
"octobox/octobox" : 1
},
"notifications" : [
{
"id" : 29,
"github_id" : 320,
"reason" : "mention",
"unread" : true,
"archived" : false,
"starred" : false,
"url" : "https://api.github.com/notifications/threads/320",
"web_url" : "https://github.com/octobox/octobox/pull/320",
"last_read_at" : "2017-02-20 22:26:11 UTC",
"created_at" : "2017-02-22T15:49:33.750Z",
"updated_at" : "2017-02-22T15:40:21.000Z",
"subject":{
"title" : "Add JSON API",
"url" : "https://api.github.com/repos/octobox/octobox/pulls/320",
"type" : "PullRequest",
"state" : "merged"
},
"repo":{
"id": 320,
"name" : "octobox/octobox",
"owner" : "octobox",
"repo_url" : "https://github.com/octobox/octobox"
}
}
]
}
71 72 73 |
# File 'app/controllers/api/notifications_controller.rb', line 71 def index load_notifications end |
#lookup ⇒ Object
Find a notification by it’s subject url
Parameters
-
:url
- github url of subject
Example
GET api/notifications/lookup.json
{
"id" : 29,
"github_id" : 320,
"reason" : "mention",
"unread" : true,
"archived" : false,
"starred" : false,
"url" : "https://api.github.com/notifications/threads/320",
"web_url" : "https://github.com/octobox/octobox/pull/320",
"last_read_at" : "2017-02-20 22:26:11 UTC",
"created_at" : "2017-02-22T15:49:33.750Z",
"updated_at" : "2017-02-22T15:40:21.000Z",
"subject":{
"title" : "Add JSON API",
"url" : "https://api.github.com/repos/octobox/octobox/pulls/320",
"type" : "PullRequest",
"state" : "merged"
},
"repo":{
"id": 320,
"name" : "octobox/octobox",
"owner" : "octobox",
"repo_url" : "https://github.com/octobox/octobox"
}
}
175 176 177 178 179 180 181 182 183 |
# File 'app/controllers/api/notifications_controller.rb', line 175 def lookup if params[:url].present? url = Octobox::SubjectUrlParser.new(params[:url]).to_api_url @notification = current_user.notifications.where(subject_url: url).first render json: {} if @notification.nil? else render json: {} end end |
#mark_read_selected ⇒ Object
Mark selected notifications as read
:category: Notifications Actions
Parameters
-
:id
- An array of IDs of notifications you’d like to mark as read. If ID is ‘all’, all notifications will be marked as read
Example
POST api/notifications/mark_read_selected.json?id=all
HEAD 204
234 235 236 237 |
# File 'app/controllers/api/notifications_controller.rb', line 234 def mark_read_selected Notification.mark_read(selected_notifications) head :ok end |
#mute_selected ⇒ Object
Mute selected notifications, this will also archive them
:category: Notifications Actions
Parameters
-
:id
- An array of IDs of notifications you’d like to mute. If ID is ‘all’, all notifications will be muted
Example
POST api/notifications/mute_selected.json?id=all
HEAD 204
198 199 200 201 |
# File 'app/controllers/api/notifications_controller.rb', line 198 def mute_selected Notification.mute(selected_notifications) head :ok end |
#star ⇒ Object
Star a notification
:category: Notifications Actions
Example
POST api/notifications/:id/star.json
HEAD 204
84 85 86 87 88 |
# File 'app/controllers/api/notifications_controller.rb', line 84 def star find_notification @notification.update_columns starred: !@notification.starred? head :ok end |
#sync ⇒ Object
Synchronize notifications with GitHub
:category: Notifications Actions
Example
POST api/notifications/sync.json
HEAD 204
117 118 119 120 121 122 123 124 125 |
# File 'app/controllers/api/notifications_controller.rb', line 117 def sync if Octobox.background_jobs_enabled? current_user.sync_notifications else current_user.sync_notifications_in_foreground end render json: {} end |
#syncing ⇒ Object
Check if user is synchronizing notifications with GitHub
Example
POST api/notifications/syncing.json
{} 204 (ok)
POST api/notifications/syncing.json
{} 423 (locked)
100 101 102 103 104 105 106 |
# File 'app/controllers/api/notifications_controller.rb', line 100 def syncing if current_user.syncing? render json: {}, status: :locked else render json: { error: Sidekiq::Status::get(current_user.sync_job_id, :exception) }, status: :ok end end |
#unread_count ⇒ Object
Return a count for the number of unread notifications
:category: Notifications CRUD
Example
GET api/notifications/unread_count.json
{ "count" : 1 }
136 137 138 |
# File 'app/controllers/api/notifications_controller.rb', line 136 def unread_count render json: { 'count' => user_unread_count } end |