Skip to content

Commit b12601f

Browse files
authored
Add recitaiton api (#338)
1 parent e6f30a6 commit b12601f

9 files changed

Lines changed: 77 additions & 12 deletions

File tree

app/controllers/api/v1/audio/recitations_controller.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ module Api::V1
22
module Audio
33
class RecitationsController < ApiController
44
def surah_recitations; end
5+
def surah_recitation_detail; end
56

67
def ayah_recitations; end
8+
def ayah_recitation_detail; end
79

810
protected
911

app/presenters/v1/audio/recitation_presenter.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ def surah_recitations
1212
.approved
1313
.includes(:recitation_style, :qirat_type)
1414
end
15+
16+
def surah_recitation
17+
surah_recitations.find(params[:id])
18+
end
19+
20+
def ayah_recitation
21+
ayah_recitations.find(params[:id])
22+
end
1523
end
1624
end
1725
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
include_audio_files = local_assigns[:include_audio_files] || false
2+
3+
json.extract! ayah_recitation, :id, :name, :relative_path, :segments_count
4+
json.has_segments ayah_recitation.segments_count > 0
5+
json.style ayah_recitation.recitation_style&.name
6+
json.qirat ayah_recitation.qirat_type&.name
7+
8+
if include_audio_files
9+
json.audio_files do
10+
ayah_recitation.audio_files.order('verse_id ASC').each do |audio_file|
11+
json.set! audio_file.verse_key.to_s, {
12+
file_size: audio_file.file_size,
13+
duration: audio_file.duration,
14+
audio_url: audio_file.audio_url,
15+
segments_count: audio_file.segments_count
16+
}
17+
end
18+
end
19+
end
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
include_audio_files = local_assigns[:include_audio_files] || false
2+
3+
json.extract! surah_recitation,
4+
:id,
5+
:name,
6+
:relative_path,
7+
:files_size,
8+
:files_count,
9+
:segments_count
10+
11+
json.has_segments surah_recitation.segments_count == 6236
12+
json.style surah_recitation.recitation_style&.name
13+
json.qirat surah_recitation.qirat_type&.name
14+
15+
if include_audio_files
16+
json.audio_files do
17+
surah_recitation.chapter_audio_files.order('chapter_id ASC').each do |audio_file|
18+
json.set! audio_file.chapter_id.to_s, {
19+
file_size: audio_file.file_size,
20+
duration: audio_file.duration,
21+
audio_url: audio_file.audio_url,
22+
segments_count: audio_file.segments_count
23+
}
24+
end
25+
end
26+
end
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
recitation = @presenter.ayah_recitation
2+
3+
json.recitation do
4+
json.partial! partial: 'ayah_recitation', locals: {
5+
ayah_recitation: recitation,
6+
include_audio_files: true
7+
}
8+
end
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
recitations = @presenter.ayah_recitations
22

33
json.recitations do
4-
json.array! recitations do |recitation|
5-
json.extract! recitation, :id, :name, :relative_path, :description
6-
json.has_segments recitation.segments_count == 6236
7-
json.style recitation.recitation_style&.name
8-
json.qirat recitation.qirat_type&.name
9-
end
4+
json.array! recitations, partial: 'ayah_recitation'
105
end
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
recitation = @presenter.surah_recitation
2+
3+
json.recitation do
4+
json.partial! partial: 'surah_recitation', locals: {
5+
surah_recitation: recitation,
6+
include_audio_files: true
7+
}
8+
end
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
recitations = @presenter.surah_recitations
22

33
json.recitations do
4-
json.array! recitations do |recitation|
5-
json.extract! recitation, :id, :name, :relative_path, :description
6-
json.has_segments recitation.segments_count == 6236
7-
json.style recitation.recitation_style&.name
8-
json.qirat recitation.qirat_type&.name
9-
end
4+
json.array! recitations, partial: 'surah_recitation'
105
end

config/routes.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717

1818
namespace :audio do
1919
get 'surah_recitations', to: 'recitations#surah_recitations'
20+
get 'surah_recitations/:id', to: 'recitations#surah_recitation_detail'
21+
2022
get 'ayah_recitations', to: 'recitations#ayah_recitations'
23+
get 'ayah_recitations/:id', to: 'recitations#ayah_recitation_detail'
24+
2125
get 'surah_segments/:recitation_id', to: 'segments#surah_segments'
2226
get 'ayah_segments/:recitation_id', to: 'segments#ayah_segments'
2327
end

0 commit comments

Comments
 (0)