mirror of
https://github.com/kevin-DL/m3o-go.git
synced 2026-01-11 18:44:26 +00:00
184 lines
4.7 KiB
Go
Executable File
184 lines
4.7 KiB
Go
Executable File
package sunnah
|
|
|
|
import (
|
|
"go.m3o.com/client"
|
|
)
|
|
|
|
func NewSunnahService(token string) *SunnahService {
|
|
return &SunnahService{
|
|
client: client.NewClient(&client.Options{
|
|
Token: token,
|
|
}),
|
|
}
|
|
}
|
|
|
|
type SunnahService struct {
|
|
client *client.Client
|
|
}
|
|
|
|
// Get a list of books from within a collection. A book can contain many chapters
|
|
// each with its own hadiths.
|
|
func (t *SunnahService) Books(request *BooksRequest) (*BooksResponse, error) {
|
|
rsp := &BooksResponse{}
|
|
return rsp, t.client.Call("sunnah", "Books", request, rsp)
|
|
}
|
|
|
|
// Get all the chapters of a given book within a collection.
|
|
func (t *SunnahService) Chapters(request *ChaptersRequest) (*ChaptersResponse, error) {
|
|
rsp := &ChaptersResponse{}
|
|
return rsp, t.client.Call("sunnah", "Chapters", request, rsp)
|
|
}
|
|
|
|
// Get a list of available collections. A collection is
|
|
// a compilation of hadiths collected and written by an author.
|
|
func (t *SunnahService) Collections(request *CollectionsRequest) (*CollectionsResponse, error) {
|
|
rsp := &CollectionsResponse{}
|
|
return rsp, t.client.Call("sunnah", "Collections", request, rsp)
|
|
}
|
|
|
|
// Hadiths returns a list of hadiths and their corresponding text for a
|
|
// given book within a collection.
|
|
func (t *SunnahService) Hadiths(request *HadithsRequest) (*HadithsResponse, error) {
|
|
rsp := &HadithsResponse{}
|
|
return rsp, t.client.Call("sunnah", "Hadiths", request, rsp)
|
|
}
|
|
|
|
type Book struct {
|
|
// arabic name of the book
|
|
ArabicName string `json:"arabicName"`
|
|
// number of hadiths in the book
|
|
Hadiths int32 `json:"hadiths"`
|
|
// number of the book e.g 1
|
|
Id int32 `json:"id"`
|
|
// name of the book
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type BooksRequest struct {
|
|
// Name of the collection
|
|
Collection string `json:"collection"`
|
|
// Limit the number of books returned
|
|
Limit int32 `json:"limit"`
|
|
// The page in the pagination
|
|
Page int32 `json:"page"`
|
|
}
|
|
|
|
type BooksResponse struct {
|
|
// A list of books
|
|
Books []Book `json:"books"`
|
|
// Name of the collection
|
|
Collection string `json:"collection"`
|
|
// The limit specified
|
|
Limit int32 `json:"limit"`
|
|
// The page requested
|
|
Page int32 `json:"page"`
|
|
// The total overall books
|
|
Total int32 `json:"total"`
|
|
}
|
|
|
|
type Chapter struct {
|
|
// arabic title
|
|
ArabicTitle string `json:"arabicTitle"`
|
|
// the book number
|
|
Book int32 `json:"book"`
|
|
// the chapter id e.g 1
|
|
Id int32 `json:"id"`
|
|
// the chapter key e.g 1.00
|
|
Key string `json:"key"`
|
|
// title of the chapter
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type ChaptersRequest struct {
|
|
// number of the book
|
|
Book int32 `json:"book"`
|
|
// name of the collection
|
|
Collection string `json:"collection"`
|
|
// Limit the number of chapters returned
|
|
Limit int32 `json:"limit"`
|
|
// The page in the pagination
|
|
Page int32 `json:"page"`
|
|
}
|
|
|
|
type ChaptersResponse struct {
|
|
// number of the book
|
|
Book int32 `json:"book"`
|
|
// The chapters of the book
|
|
Chapters []Chapter `json:"chapters"`
|
|
// name of the collection
|
|
Collection string `json:"collection"`
|
|
// Limit the number of chapters returned
|
|
Limit int32 `json:"limit"`
|
|
// The page in the pagination
|
|
Page int32 `json:"page"`
|
|
// Total chapters in the book
|
|
Total int32 `json:"total"`
|
|
}
|
|
|
|
type Collection struct {
|
|
// Arabic title if available
|
|
ArabicTitle string `json:"arabicTitle"`
|
|
// Total hadiths in the collection
|
|
Hadiths int32 `json:"hadiths"`
|
|
// Name of the collection e.g bukhari
|
|
Name string `json:"name"`
|
|
// An introduction explaining the collection
|
|
Summary string `json:"summary"`
|
|
// Title of the collection e.g Sahih al-Bukhari
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type CollectionsRequest struct {
|
|
// Number of collections to limit to
|
|
Limit int32 `json:"limit"`
|
|
// The page in the pagination
|
|
Page int32 `json:"page"`
|
|
}
|
|
|
|
type CollectionsResponse struct {
|
|
Collections []Collection `json:"collections"`
|
|
}
|
|
|
|
type Hadith struct {
|
|
// the arabic chapter title
|
|
ArabicChapterTitle string `json:"arabicChapterTitle"`
|
|
// the arabic text
|
|
ArabicText string `json:"arabicText"`
|
|
// the chapter id
|
|
Chapter int32 `json:"chapter"`
|
|
// the chapter key
|
|
ChapterKey string `json:"chapterKey"`
|
|
// the chapter title
|
|
ChapterTitle string `json:"chapterTitle"`
|
|
// hadith id
|
|
Id int32 `json:"id"`
|
|
// hadith text
|
|
Text string `json:"text"`
|
|
}
|
|
|
|
type HadithsRequest struct {
|
|
// number of the book
|
|
Book int32 `json:"book"`
|
|
// name of the collection
|
|
Collection string `json:"collection"`
|
|
// Limit the number of hadiths
|
|
Limit int32 `json:"limit"`
|
|
// The page in the pagination
|
|
Page int32 `json:"page"`
|
|
}
|
|
|
|
type HadithsResponse struct {
|
|
// number of the book
|
|
Book int32 `json:"book"`
|
|
// name of the collection
|
|
Collection string `json:"collection"`
|
|
// The hadiths of the book
|
|
Hadiths []Hadith `json:"hadiths"`
|
|
// Limit the number of hadiths returned
|
|
Limit int32 `json:"limit"`
|
|
// The page in the pagination
|
|
Page int32 `json:"page"`
|
|
// Total hadiths in the book
|
|
Total int32 `json:"total"`
|
|
}
|