Class: CheFuAcademy::Client
- Inherits:
-
Object
- Object
- CheFuAcademy::Client
- Defined in:
- lib/chefu_academy/client.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#auth_token ⇒ Object
Returns the value of attribute auth_token.
Instance Method Summary collapse
- #course(course_id) ⇒ Object
- #course_categories ⇒ Object
- #course_chapter(course_id, chapter_index) ⇒ Object
- #course_chapters(course_id) ⇒ Object
- #course_flashcards(course_id) ⇒ Object
- #course_lessons(course_id, chapter_index) ⇒ Object
- #course_qa(course_id) ⇒ Object
- #course_quiz(course_id) ⇒ Object
- #create_key(name: nil) ⇒ Object
- #featured_courses(**query) ⇒ Object
-
#initialize(api_key: nil, auth_token: nil, base_url: DEFAULT_BASE_URL, timeout: 10) ⇒ Client
constructor
A new instance of Client.
- #list_courses(**query) ⇒ Object
- #list_keys ⇒ Object
- #list_videos(**query) ⇒ Object
- #login(email:, password:) ⇒ Object
- #refresh(refresh_token:) ⇒ Object
- #register(email:, password:, fullname:) ⇒ Object
- #revoke_key(key_id) ⇒ Object
- #search_courses(**query) ⇒ Object
- #search_videos(**query) ⇒ Object
- #video(video_id) ⇒ Object
- #videos_by_category(category) ⇒ Object
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_key ⇒ Object
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_token ⇒ Object
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_categories ⇒ Object
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 |
#featured_courses(**query) ⇒ Object
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_keys ⇒ Object
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 login(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 |