Class: APICall
- Inherits:
-
Record
- Object
- AbstractRecord
- MongoRecord
- SiteRecord
- Record
- APICall
- Defined in:
- lib/yodel/models/api/api_call.rb
Constant Summary
Constants inherited from AbstractRecord
AbstractRecord::CALLBACKS, AbstractRecord::FIELD_CALLBACKS, AbstractRecord::ORDERS
Instance Attribute Summary
Attributes inherited from Record
#mixins, #model, #model_record, #real_record
Attributes inherited from SiteRecord
Attributes inherited from AbstractRecord
#changed, #errors, #stash, #typecast, #values
Instance Method Summary collapse
- #call(data) ⇒ Object
- #content ⇒ Object
- #data ⇒ Object
- #get_binding ⇒ Object
- #perform_call(data) ⇒ Object
- #set_binding(binding) ⇒ Object
- #set_content(content) ⇒ Object
Methods inherited from Record
#all_children, #append_to_siblings, #children_and_self, #collection, #create_eigenmodel, #create_mixin_instances, #default_values, #delegate_mixins, #destroy_children, #field_sections, #fields, #first_non_blank_response_to, #first_parent, #first_response_to, #has_eigenmodel?, #initialize, #insert_in_siblings, #inspect_hash, #load_model, #model_name, #parent?, #parents, #perform_reload, #prepare_reload_params, #remove_eigenmodel, #remove_from_siblings, #root?, #run_record_after_create_callbacks, #run_record_after_destroy_callbacks, #run_record_after_save_callbacks, #run_record_after_update_callbacks, #run_record_after_validation_callbacks, #run_record_before_create_callbacks, #run_record_before_destroy_callbacks, #run_record_before_save_callbacks, #run_record_before_update_callbacks, #run_record_before_validation_callbacks, #siblings, #to_str, #update_search_keywords, #user_allowed_to?, #user_allowed_to_create?, #user_allowed_to_delete?, #user_allowed_to_update?, #user_allowed_to_view?
Methods inherited from SiteRecord
#default_values, #initialize, #inspect_hash, #perform_reload, #prepare_reload_params, #site_id
Methods included from SiteModel
Methods included from MongoModel
Methods included from AbstractModel
#embed_many, #embed_one, #field, #fields, #many, #modify_field, #one, #remove_field
Methods inherited from MongoRecord
#collection, #default_values, #fields, #id, #increment!, #inspect_hash, #load_from_mongo, #load_mongo_document, #perform_destroy, #perform_reload, #perform_save, #set_id
Methods inherited from AbstractRecord
#changed!, #changed?, #clear_key, #default_values, #destroy, #destroyed?, #eql?, #errors?, #field, #field?, #field_was, #fields, #from_json, #get, #get_meta, #get_raw, #hash, #id, #increment!, inherited, #initialize, #inspect, #inspect_hash, #inspect_value, #method_missing, #new?, #prepare_reload_params, #present?, #reload, #save, #save_without_validation, #search_terms, #set, #set_meta, #set_raw, #to_json, #to_str, #trigger_field_callback, #update, #valid?
Constructor Details
This class inherits a constructor from Record
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class AbstractRecord
Instance Method Details
#call(data) ⇒ Object
2 3 4 |
# File 'lib/yodel/models/api/api_call.rb', line 2 def call(data) Task.add_task(:call_api, encode_data_hash(data), site) end |
#content ⇒ Object
36 37 38 |
# File 'lib/yodel/models/api/api_call.rb', line 36 def content @content end |
#data ⇒ Object
52 53 54 |
# File 'lib/yodel/models/api/api_call.rb', line 52 def data @data end |
#get_binding ⇒ Object
44 45 46 |
# File 'lib/yodel/models/api/api_call.rb', line 44 def get_binding @binding end |
#perform_call(data) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/yodel/models/api/api_call.rb', line 6 def perform_call(data) data = decode_data_hash(data) mime = Yodel.mime_types[mime_type.to_sym] headers = {'Content-Type' => mime.default_mime_type} # FIXME: reloading should be done elsewhere, not a concern of APICall #Layout.reload_layouts(site) if Yodel.env.development? if body_layout && layout = site.layouts.where(name: body_layout, mime_type: mime_type).first @data = data set_content(body) set_binding(binding) payload = mime.process(layout.render(self)) else payload = body end Net::HTTP.start(domain, port) do |http| request = request_class.new(path, headers) case authentication when 'basic' request.basic_auth username, password when 'digest' # FIXME: implement end response = http.request(request, payload) Function.new(function).execute(binding) end end |
#set_binding(binding) ⇒ Object
48 49 50 |
# File 'lib/yodel/models/api/api_call.rb', line 48 def set_binding(binding) @binding = binding end |
#set_content(content) ⇒ Object
40 41 42 |
# File 'lib/yodel/models/api/api_call.rb', line 40 def set_content(content) @content = content end |