mirror of
https://github.com/kevin-DL/m3o-go.git
synced 2026-01-11 18:44:26 +00:00
Commit from m3o/m3o action
This commit is contained in:
218
quran/quran.go
Executable file
218
quran/quran.go
Executable file
@@ -0,0 +1,218 @@
|
||||
package quran
|
||||
|
||||
import (
|
||||
"github.com/m3o/m3o-go/client"
|
||||
)
|
||||
|
||||
func NewQuranService(token string) *QuranService {
|
||||
return &QuranService{
|
||||
client: client.NewClient(&client.Options{
|
||||
Token: token,
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
type QuranService struct {
|
||||
client *client.Client
|
||||
}
|
||||
|
||||
// List the Chapters (surahs) of the Quran
|
||||
func (t *QuranService) Chapters(request *ChaptersRequest) (*ChaptersResponse, error) {
|
||||
rsp := &ChaptersResponse{}
|
||||
return rsp, t.client.Call("quran", "Chapters", request, rsp)
|
||||
}
|
||||
|
||||
// Search the Quran for any form of query or questions
|
||||
func (t *QuranService) Search(request *SearchRequest) (*SearchResponse, error) {
|
||||
rsp := &SearchResponse{}
|
||||
return rsp, t.client.Call("quran", "Search", request, rsp)
|
||||
}
|
||||
|
||||
// Get a summary for a given chapter (surah)
|
||||
func (t *QuranService) Summary(request *SummaryRequest) (*SummaryResponse, error) {
|
||||
rsp := &SummaryResponse{}
|
||||
return rsp, t.client.Call("quran", "Summary", request, rsp)
|
||||
}
|
||||
|
||||
// Lookup the verses (ayahs) for a chapter including
|
||||
// translation, interpretation and breakdown by individual
|
||||
// words.
|
||||
func (t *QuranService) Verses(request *VersesRequest) (*VersesResponse, error) {
|
||||
rsp := &VersesResponse{}
|
||||
return rsp, t.client.Call("quran", "Verses", request, rsp)
|
||||
}
|
||||
|
||||
type Chapter struct {
|
||||
// The arabic name of the chapter
|
||||
ArabicName string `json:"arabicName"`
|
||||
// The complex name of the chapter
|
||||
ComplexName string `json:"complexName"`
|
||||
// The id of the chapter as a number e.g 1
|
||||
Id int32 `json:"id"`
|
||||
// The simple name of the chapter
|
||||
Name string `json:"name"`
|
||||
// The pages from and to e.g 1, 1
|
||||
Pages []int32 `json:"pages"`
|
||||
// Should the chapter start with bismillah
|
||||
PrefixBismillah bool `json:"prefixBismillah"`
|
||||
// The order in which it was revealed
|
||||
RevelationOrder int32 `json:"revelationOrder"`
|
||||
// The place of revelation
|
||||
RevelationPlace string `json:"revelationPlace"`
|
||||
// The translated name
|
||||
TranslatedName string `json:"translatedName"`
|
||||
// The number of verses in the chapter
|
||||
Verses int32 `json:"verses"`
|
||||
}
|
||||
|
||||
type ChaptersRequest struct {
|
||||
// Specify the language e.g en
|
||||
Language string `json:"language"`
|
||||
}
|
||||
|
||||
type ChaptersResponse struct {
|
||||
Chapters []Chapter `json:"chapters"`
|
||||
}
|
||||
|
||||
type Interpretation struct {
|
||||
// The unique id of the interpretation
|
||||
Id int32 `json:"id"`
|
||||
// The source of the interpretation
|
||||
Source string `json:"source"`
|
||||
// The translated text
|
||||
Text string `json:"text"`
|
||||
}
|
||||
|
||||
type Result struct {
|
||||
// The associated arabic text
|
||||
Text string `json:"text"`
|
||||
// The related translations to the text
|
||||
Translations []Translation `json:"translations"`
|
||||
// The unique verse id across the Quran
|
||||
VerseId int32 `json:"verseId"`
|
||||
// The verse key e.g 1:1
|
||||
VerseKey string `json:"verseKey"`
|
||||
}
|
||||
|
||||
type SearchRequest struct {
|
||||
// The language for translation
|
||||
Language string `json:"language"`
|
||||
// The number of results to return
|
||||
Limit int32 `json:"limit"`
|
||||
// The pagination number
|
||||
Page int32 `json:"page"`
|
||||
// The query to ask
|
||||
Query string `json:"query"`
|
||||
}
|
||||
|
||||
type SearchResponse struct {
|
||||
// The current page
|
||||
Page int32 `json:"page"`
|
||||
// The question asked
|
||||
Query string `json:"query"`
|
||||
// The results for the query
|
||||
Results []Result `json:"results"`
|
||||
// The total pages
|
||||
TotalPages int32 `json:"totalPages"`
|
||||
// The total results returned
|
||||
TotalResults int32 `json:"totalResults"`
|
||||
}
|
||||
|
||||
type SummaryRequest struct {
|
||||
// The chapter id e.g 1
|
||||
Chapter int32 `json:"chapter"`
|
||||
// Specify the language e.g en
|
||||
Language string `json:"language"`
|
||||
}
|
||||
|
||||
type SummaryResponse struct {
|
||||
// The chapter id
|
||||
Chapter int32 `json:"chapter"`
|
||||
// The source of the summary
|
||||
Source string `json:"source"`
|
||||
// The short summary for the chapter
|
||||
Summary string `json:"summary"`
|
||||
// The full description for the chapter
|
||||
Text string `json:"text"`
|
||||
}
|
||||
|
||||
type Translation struct {
|
||||
// The unique id of the translation
|
||||
Id int32 `json:"id"`
|
||||
// The source of the translation
|
||||
Source string `json:"source"`
|
||||
// The translated text
|
||||
Text string `json:"text"`
|
||||
}
|
||||
|
||||
type Verse struct {
|
||||
// The unique id of the verse in the whole book
|
||||
Id int32 `json:"id"`
|
||||
// The interpretations of the verse
|
||||
Interpretations []Interpretation `json:"interpretations"`
|
||||
// The key of this verse (chapter:verse) e.g 1:1
|
||||
Key string `json:"key"`
|
||||
// The verse number in this chapter
|
||||
Number int32 `json:"number"`
|
||||
// The page of the Quran this verse is on
|
||||
Page int32 `json:"page"`
|
||||
// The arabic text for this verse
|
||||
Text string `json:"text"`
|
||||
// The basic translation of the verse
|
||||
TranslatedText string `json:"translatedText"`
|
||||
// The alternative translations for the verse
|
||||
Translations []Translation `json:"translations"`
|
||||
// The phonetic transliteration from arabic
|
||||
Transliteration string `json:"transliteration"`
|
||||
// The individual words within the verse (Ayah)
|
||||
Words []Word `json:"words"`
|
||||
}
|
||||
|
||||
type VersesRequest struct {
|
||||
// The chapter id to retrieve
|
||||
Chapter int32 `json:"chapter"`
|
||||
// Return the interpretation (tafsir)
|
||||
Interpret bool `json:"interpret"`
|
||||
// The language of translation
|
||||
Language string `json:"language"`
|
||||
// The verses per page
|
||||
Limit int32 `json:"limit"`
|
||||
// The page number to request
|
||||
Page int32 `json:"page"`
|
||||
// Return alternate translations
|
||||
Translate bool `json:"translate"`
|
||||
// Return the individual words with the verses
|
||||
Words bool `json:"words"`
|
||||
}
|
||||
|
||||
type VersesResponse struct {
|
||||
// The chapter requested
|
||||
Chapter int32 `json:"chapter"`
|
||||
// The page requested
|
||||
Page int32 `json:"page"`
|
||||
// The total pages
|
||||
TotalPages int32 `json:"totalPages"`
|
||||
// The verses on the page
|
||||
Verses []Verse `json:"verses"`
|
||||
}
|
||||
|
||||
type Word struct {
|
||||
// The character type e.g word, end
|
||||
CharType string `json:"charType"`
|
||||
// The QCF v2 font code
|
||||
Code string `json:"code"`
|
||||
// The id of the word within the verse
|
||||
Id int32 `json:"id"`
|
||||
// The line number
|
||||
Line int32 `json:"line"`
|
||||
// The page number
|
||||
Page int32 `json:"page"`
|
||||
// The position of the word
|
||||
Position int32 `json:"position"`
|
||||
// The arabic text for this word
|
||||
Text string `json:"text"`
|
||||
// The translated text
|
||||
Translation string `json:"translation"`
|
||||
// The transliteration text
|
||||
Transliteration string `json:"transliteration"`
|
||||
}
|
||||
Reference in New Issue
Block a user