Class: CheFuAcademy::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/chefu_academy/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, auth_token: nil, base_url: DEFAULT_BASE_URL, timeout: 10) ⇒ Client

Returns a new instance of Client.



21
22
23
24
25
26
# File 'lib/chefu_academy/client.rb', line 21

def initialize(api_key: nil, auth_token: nil, base_url: DEFAULT_BASE_URL, timeout: 10)
  @api_key = api_key
  @auth_token = auth_token
  @base_url = base_url.delete_suffix('/')
  @timeout = timeout
end

Instance Attribute Details

#api_keyObject

Returns the value of attribute api_key.



19
20
21
# File 'lib/chefu_academy/client.rb', line 19

def api_key
  @api_key
end

#auth_tokenObject

Returns the value of attribute auth_token.



19
20
21
# File 'lib/chefu_academy/client.rb', line 19

def auth_token
  @auth_token
end

Instance Method Details

#course(course_id) ⇒ Object



60
61
62
# File 'lib/chefu_academy/client.rb', line 60

def course(course_id)
  request('GET', "/courses/#{escape(course_id)}")
end

#course_categoriesObject



56
57
58
# File 'lib/chefu_academy/client.rb', line 56

def course_categories
  request('GET', '/courses/categories')
end

#course_chapter(course_id, chapter_index) ⇒ Object



68
69
70
# File 'lib/chefu_academy/client.rb', line 68

def course_chapter(course_id, chapter_index)
  request('GET', "/courses/#{escape(course_id)}/chapters/#{chapter_index}")
end

#course_chapters(course_id) ⇒ Object



64
65
66
# File 'lib/chefu_academy/client.rb', line 64

def course_chapters(course_id)
  request('GET', "/courses/#{escape(course_id)}/chapters")
end

#course_flashcards(course_id) ⇒ Object



80
81
82
# File 'lib/chefu_academy/client.rb', line 80

def course_flashcards(course_id)
  request('GET', "/courses/#{escape(course_id)}/flashcards")
end

#course_lessons(course_id, chapter_index) ⇒ Object



72
73
74
# File 'lib/chefu_academy/client.rb', line 72

def course_lessons(course_id, chapter_index)
  request('GET', "/courses/#{escape(course_id)}/chapters/#{chapter_index}/lessons")
end

#course_qa(course_id) ⇒ Object



84
85
86
# File 'lib/chefu_academy/client.rb', line 84

def course_qa(course_id)
  request('GET', "/courses/#{escape(course_id)}/qa")
end

#course_quiz(course_id) ⇒ Object



76
77
78
# File 'lib/chefu_academy/client.rb', line 76

def course_quiz(course_id)
  request('GET', "/courses/#{escape(course_id)}/quiz")
end

#create_key(name: nil) ⇒ Object



104
105
106
# File 'lib/chefu_academy/client.rb', line 104

def create_key(name: nil)
  request('POST', '/keys/create', body: { name: name }, user_auth: true, api_key_auth: false)
end


52
53
54
# File 'lib/chefu_academy/client.rb', line 52

def featured_courses(**query)
  request('GET', '/courses/featured', query: query)
end

#list_courses(**query) ⇒ Object



44
45
46
# File 'lib/chefu_academy/client.rb', line 44

def list_courses(**query)
  request('GET', '/courses', query: query)
end

#list_keysObject



108
109
110
# File 'lib/chefu_academy/client.rb', line 108

def list_keys
  request('GET', '/keys/list', user_auth: true, api_key_auth: false)
end

#list_videos(**query) ⇒ Object



88
89
90
# File 'lib/chefu_academy/client.rb', line 88

def list_videos(**query)
  request('GET', '/videos', query: query)
end

#login(email:, password:) ⇒ Object



28
29
30
31
32
# File 'lib/chefu_academy/client.rb', line 28

def (email:, password:)
  session = request('POST', '/auth/login', body: { email: email, password: password }, api_key_auth: false)
  self.auth_token = session['idToken'] || session['token']
  session
end

#refresh(refresh_token:) ⇒ Object



38
39
40
41
42
# File 'lib/chefu_academy/client.rb', line 38

def refresh(refresh_token:)
  session = request('POST', '/auth/refresh', body: { refreshToken: refresh_token }, api_key_auth: false)
  self.auth_token = session['idToken'] || session['token']
  session
end

#register(email:, password:, fullname:) ⇒ Object



34
35
36
# File 'lib/chefu_academy/client.rb', line 34

def register(email:, password:, fullname:)
  request('POST', '/auth/register', body: { email: email, password: password, fullname: fullname }, api_key_auth: false)
end

#revoke_key(key_id) ⇒ Object



112
113
114
# File 'lib/chefu_academy/client.rb', line 112

def revoke_key(key_id)
  request('POST', '/keys/revoke', body: { keyId: key_id }, user_auth: true, api_key_auth: false)
end

#search_courses(**query) ⇒ Object



48
49
50
# File 'lib/chefu_academy/client.rb', line 48

def search_courses(**query)
  request('GET', '/courses/search', query: query)
end

#search_videos(**query) ⇒ Object



92
93
94
# File 'lib/chefu_academy/client.rb', line 92

def search_videos(**query)
  request('GET', '/videos/search', query: query)
end

#video(video_id) ⇒ Object



100
101
102
# File 'lib/chefu_academy/client.rb', line 100

def video(video_id)
  request('GET', "/videos/#{escape(video_id)}")
end

#videos_by_category(category) ⇒ Object



96
97
98
# File 'lib/chefu_academy/client.rb', line 96

def videos_by_category(category)
  request('GET', "/videos/category/#{escape(category)}")
end