Class: AnkiConnect::Client
- Inherits:
-
Object
- Object
- AnkiConnect::Client
- Includes:
- Cards, Decks, Graphical, Media, Miscellaneous, NoteTypes, Notes, Params, Statistics
- Defined in:
- lib/anki_connect/client.rb,
lib/anki_connect/cards.rb,
lib/anki_connect/decks.rb,
lib/anki_connect/media.rb,
lib/anki_connect/notes.rb,
lib/anki_connect/params.rb,
lib/anki_connect/graphical.rb,
lib/anki_connect/note_types.rb,
lib/anki_connect/statistics.rb,
lib/anki_connect/miscellaneous.rb
Overview
Main client class that includes all API modules and provides the core request mechanism.
Defined Under Namespace
Modules: Cards, Decks, Graphical, Media, Miscellaneous, NoteTypes, Notes, Params, Statistics
Instance Attribute Summary collapse
-
#endpoint ⇒ URI::HTTP, URI::HTTPS
readonly
AnkiConnect endpoint.
-
#host ⇒ String
readonly
AnkiConnect server host.
-
#open_timeout ⇒ Numeric
readonly
Connection timeout in seconds.
-
#port ⇒ Integer
readonly
AnkiConnect server port.
-
#read_timeout ⇒ Numeric
readonly
Response timeout in seconds.
-
#write_timeout ⇒ Numeric
readonly
Request write timeout in seconds.
Instance Method Summary collapse
-
#initialize(host: '127.0.0.1', port: 8765, endpoint: nil, api_key: nil, open_timeout: 5, read_timeout: 60, write_timeout: 60) ⇒ Client
constructor
Creates a new AnkiConnect client.
-
#request(action, **params) ⇒ Object
Makes a request to the AnkiConnect API.
Methods included from Miscellaneous
#active_profile, #api_capabilities, #api_version, #batch, #export_deck, #import_package, #load_profile, #profiles, #reload_collection, #request_permission, #sync
Methods included from Statistics
#cards_reviewed_by_day, #cards_reviewed_today, #collection_stats_html, #insert_reviews, #latest_review_id, #reviews, #reviews_for_cards
Methods included from Graphical
#gui_add_cards, #gui_add_note_set_data, #gui_answer_card, #gui_browse, #gui_check_database, #gui_current_card, #gui_deck_browser, #gui_deck_overview, #gui_deck_review, #gui_edit_note, #gui_exit_anki, #gui_import_file, #gui_play_audio, #gui_review_active?, #gui_select_card, #gui_selected_notes, #gui_show_answer, #gui_show_question, #gui_start_card_timer, #gui_undo
Methods included from Media
#delete_media, #media_directory, #media_files, #retrieve_media, #store_media
Methods included from Notes
#add_note, #add_notes, #add_tags, #change_note_type, #clear_unused_tags, #delete_notes, #note_addability, #note_addability_details, #note_addability_statuses, #note_addable?, #note_modification_times, #note_tags, #notes, #remove_tags, #remove_unused_note_types, #replace_tag, #search_notes, #tags, #update_note, #update_note_fields, #update_note_tags
Methods included from NoteTypes
#add_note_type_field, #add_note_type_template, #create_note_type, #find_and_replace_in_note_type, #note_type_field_descriptions, #note_type_field_fonts, #note_type_field_names, #note_type_fields_on_templates, #note_type_name_from_id, #note_type_names, #note_type_names_and_ids, #note_type_styling, #note_type_templates, #note_types_by_id, #note_types_by_name, #remove_note_type_field, #remove_note_type_template, #rename_note_type_field, #rename_note_type_template, #reposition_note_type_field, #reposition_note_type_template, #set_note_type_field_description, #set_note_type_field_font, #set_note_type_field_font_size, #update_note_type_styling, #update_note_type_templates
Methods included from Decks
#clone_deck_config, #create_deck, #deck_config, #deck_name_from_id, #deck_names, #deck_names_and_ids, #deck_stats, #decks_for_cards, #delete_decks, #move_cards, #remove_deck_config, #save_deck_config, #set_deck_config
Methods included from Cards
#answer_cards, #card_due?, #card_due_statuses, #card_intervals, #card_modification_times, #card_suspended?, #card_suspension_statuses, #cards, #ease_factors, #forget_cards, #note_ids_for_cards, #relearn_cards, #search_cards, #set_card_values, #set_due_date, #set_ease_factors, #suspend_cards, #unsuspend_cards
Constructor Details
#initialize(host: '127.0.0.1', port: 8765, endpoint: nil, api_key: nil, open_timeout: 5, read_timeout: 60, write_timeout: 60) ⇒ Client
Creates a new AnkiConnect client.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/anki_connect/client.rb', line 54 def initialize( host: '127.0.0.1', port: 8765, endpoint: nil, api_key: nil, open_timeout: 5, read_timeout: 60, write_timeout: 60 ) @endpoint = parse_endpoint(endpoint ? endpoint.to_s : "http://#{host}:#{port}") validate_endpoint! validate_api_key_transport!(api_key) @host = @endpoint.hostname @port = @endpoint.port @api_key = api_key @open_timeout = open_timeout @read_timeout = read_timeout @write_timeout = write_timeout end |
Instance Attribute Details
#endpoint ⇒ URI::HTTP, URI::HTTPS (readonly)
Returns AnkiConnect endpoint.
37 38 39 |
# File 'lib/anki_connect/client.rb', line 37 def endpoint @endpoint end |
#host ⇒ String (readonly)
Returns AnkiConnect server host.
33 34 35 |
# File 'lib/anki_connect/client.rb', line 33 def host @host end |
#open_timeout ⇒ Numeric (readonly)
Returns Connection timeout in seconds.
39 40 41 |
# File 'lib/anki_connect/client.rb', line 39 def open_timeout @open_timeout end |
#port ⇒ Integer (readonly)
Returns AnkiConnect server port.
35 36 37 |
# File 'lib/anki_connect/client.rb', line 35 def port @port end |
#read_timeout ⇒ Numeric (readonly)
Returns Response timeout in seconds.
41 42 43 |
# File 'lib/anki_connect/client.rb', line 41 def read_timeout @read_timeout end |
#write_timeout ⇒ Numeric (readonly)
Returns Request write timeout in seconds.
43 44 45 |
# File 'lib/anki_connect/client.rb', line 43 def write_timeout @write_timeout end |
Instance Method Details
#request(action, **params) ⇒ Object
Makes a request to the AnkiConnect API. This is the core method used by all API operations.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/anki_connect/client.rb', line 76 def request(action, **params) body = { action: action, version: API_VERSION, params: params } body[:key] = @api_key if @api_key response = perform_request(body.to_json, action) unless response.code.to_i.between?(200, 299) raise HTTPError.new( "AnkiConnect returned HTTP #{response.code}", action: action, status: response.code.to_i, body: response.body ) end result = parse_response(response.body, action) raise APIError.new(result['error'].to_s, action: action) unless result['error'].nil? result['result'] end |