Class: ReactOnRailsPro::Request
- Inherits:
-
Object
- Object
- ReactOnRailsPro::Request
- Defined in:
- lib/react_on_rails_pro/request.rb
Overview
rubocop:disable Metrics/ClassLength
Class Method Summary collapse
- .asset_exists_on_vm_renderer?(filename) ⇒ Boolean
- .render_code(path, js_code, send_bundle) ⇒ Object
- .render_code_as_stream(path, js_code, is_rsc_payload:) ⇒ Object
- .reset_connection ⇒ Object
- .upload_assets ⇒ Object
Class Method Details
.asset_exists_on_vm_renderer?(filename) ⇒ Boolean
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/react_on_rails_pro/request.rb', line 66 def asset_exists_on_vm_renderer?(filename) Rails.logger.info { "[ReactOnRailsPro] Sending request to check if file exist on node-renderer: #{filename}" } form_data = common_form_data # Add targetBundles from the current bundle hash and RSC bundle hash pool = ReactOnRailsPro::ServerRenderingPool::NodeRenderingPool target_bundles = [pool.server_bundle_hash] target_bundles << pool.rsc_bundle_hash if ReactOnRailsPro.configuration.enable_rsc_support form_data["targetBundles"] = target_bundles response = perform_request("/asset-exists?filename=#{filename}", json: form_data) JSON.parse(response.body)["exists"] == true end |
.render_code(path, js_code, send_bundle) ⇒ Object
15 16 17 18 19 |
# File 'lib/react_on_rails_pro/request.rb', line 15 def render_code(path, js_code, send_bundle) Rails.logger.info { "[ReactOnRailsPro] Perform rendering request #{path}" } form = form_with_code(js_code, send_bundle) perform_request(path, form: form) end |
.render_code_as_stream(path, js_code, is_rsc_payload:) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/react_on_rails_pro/request.rb', line 21 def render_code_as_stream(path, js_code, is_rsc_payload:) Rails.logger.info { "[ReactOnRailsPro] Perform rendering request as a stream #{path}" } if is_rsc_payload && !ReactOnRailsPro.configuration.enable_rsc_support raise ReactOnRailsPro::Error, "RSC support is not enabled. Please set enable_rsc_support to true in your " \ "config/initializers/react_on_rails_pro.rb file before " \ "rendering any RSC payload." end ReactOnRailsPro::StreamRequest.create do |send_bundle| form = form_with_code(js_code, send_bundle) perform_request(path, form: form, stream: true) end end |
.reset_connection ⇒ Object
10 11 12 13 |
# File 'lib/react_on_rails_pro/request.rb', line 10 def reset_connection @connection&.close @connection = create_connection end |
.upload_assets ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/react_on_rails_pro/request.rb', line 36 def upload_assets Rails.logger.info { "[ReactOnRailsPro] Uploading assets" } # Check if server bundle exists before trying to upload assets server_bundle_path = ReactOnRails::Utils.server_bundle_js_file_path unless File.exist?(server_bundle_path) raise ReactOnRailsPro::Error, "Server bundle not found at #{server_bundle_path}. " \ "Please build your bundles before uploading assets." end # Create a list of bundle timestamps to send to the node renderer pool = ReactOnRailsPro::ServerRenderingPool::NodeRenderingPool target_bundles = [pool.server_bundle_hash] # Add RSC bundle if enabled if ReactOnRailsPro.configuration.enable_rsc_support rsc_bundle_path = ReactOnRailsPro::Utils.rsc_bundle_js_file_path unless File.exist?(rsc_bundle_path) raise ReactOnRailsPro::Error, "RSC bundle not found at #{rsc_bundle_path}. " \ "Please build your bundles before uploading assets." end target_bundles << pool.rsc_bundle_hash end form = form_with_assets_and_bundle form["targetBundles"] = target_bundles perform_request("/upload-assets", form: form) end |