class Qc::QuantConnectProxy
Constants
- BASE_URL
Attributes
credentials[RW]
Public Class Methods
new(credentials)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 10 def initialize(credentials) @credentials = credentials end
Public Instance Methods
create_backtest(project_id, compile_id, backtest_name)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 68 def create_backtest(project_id, compile_id, backtest_name) response = perform_request :post, '/backtests/create', payload: {projectId: project_id, compileId: compile_id, backtestName: backtest_name} validate_response! response create_backtest_from_json_response(response) end
create_compile(project_id)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 56 def create_compile(project_id) response = perform_request :post, '/compile/create', payload: {projectId: project_id} validate_response! response create_compile_from_json_response(response) end
create_project(project_name, language: 'C
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 33 def create_project(project_name, language: 'C#') response = perform_request :post, '/projects/create', payload: {name: project_name, language: language} validate_response! response project = response.projects[0] Qc::Project.new(project['project_id'], project['name']) end
delete_project(project_id)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 27 def delete_project(project_id) response = perform_request :post, '/projects/delete', payload: {projectId: project_id} validate_response! response project_id end
list_projects()
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 19 def list_projects response = perform_request :get, '/projects/read' validate_response! response response.projects.collect do |project_json| Qc::Project.new(project_json['projectId'], project_json['name']) end end
put_file(project_id, file_name, file_content)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 40 def put_file(project_id, file_name, file_content) payload = {projectId: project_id, name: file_name, content: file_content} response = perform_request :post, '/files/update', payload: payload if missing_file_error?(response) response = perform_request :post, '/files/create', payload: payload end validate_response! response create_file_from_json_response(response.files[0]) end
read_backtest(project_id, backtest_id)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 74 def read_backtest(project_id, backtest_id) response = perform_request :get, '/backtests/read', params: {projectId: project_id, backtestId: backtest_id} validate_response! response create_backtest_from_json_response(response) end
read_compile(project_id, compile_id)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 62 def read_compile(project_id, compile_id) response = perform_request :get, '/compile/read', params: {projectId: project_id, compileId: compile_id} validate_response! response create_compile_from_json_response(response) end
read_file(project_id, file_name)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 50 def read_file(project_id, file_name) response = perform_request :post, '/files/read', payload: {projectId: project_id, name: file_name} validate_response! response create_file_from_json_response(response.files[0]) end
valid_login?()
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 14 def valid_login? response = perform_request :get, '/authenticate' response.success end
Private Instance Methods
create_backtest_from_json_response(response)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 82 def create_backtest_from_json_response(response) Qc::Backtest.new(response.backtestId, response.name, response.completed, response.progress.to_f, response.result, response.success) end
create_compile_from_json_response(response)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 86 def create_compile_from_json_response(response) Qc::Compile.new(response.compileId, response.state) end
create_file_from_json_response(file_json)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 94 def create_file_from_json_response(file_json) Qc::File.new(file_json['name'], file_json['content']) end
missing_file_error?(response)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 90 def missing_file_error?(response) !response.success && (response.errors.join("\n") =~ /file not found/i) end
perform_request(method, path, payload: {}, params: {})
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 98 def perform_request(method, path, payload: {}, params: {}) timestamp = Time.now.utc.to_time.to_i password_hash = Digest::SHA256.hexdigest "#{credentials.access_token}:#{timestamp}" headers = {Timestamp: timestamp}.merge(params: params) response = RestClient::Request.execute method: method, url: "#{BASE_URL}#{path}", headers: headers, user: credentials.user_id, content_type: :json, accept: :json, password: password_hash, payload: payload body = response.body.empty? ? '{"success": false}' : response.body OpenStruct.new JSON.parse(body) end
validate_response!(response)
click to toggle source
# File lib/qc/quant_connect_proxy.rb, line 114 def validate_response!(response) unless response.success raise RequestError, response.inspect end end