require 'base64'

class JupytersController < ApplicationController
    include JupyterService
  
    before_action :shixun, only: [:open, :open1, :test, :save]


    def import_with_tpm
        shixun = Shixun.find_by(identifier: params[:identifier])

        upload_file = params["file"] || params["#{params[:file_param_name]}"] # 这里的file_param_name是为了方便其他插件名称
        uid_logger("#########################file_params####{params["#{params[:file]}"]}")
        raise "未上传文件" unless upload_file

        content = Base64.encode64(upload_file.tempfile.read)

        # upload to server
        shixun_tomcat = edu_setting('cloud_bridge')
        uri = "#{shixun_tomcat}/bridge/jupyter/update"
        tpiID = "tpm#{shixun.id}"
        params = {tpiID: tpiID, content: content}

        logger.info "test_juypter: uri->#{uri}, params->#{params}"
        res = uri_post uri, params
        if res && res['code'].to_i != 0
            raise("实训云平台繁忙(繁忙等级:100)")
        end

        render json: {status: 0}
    end

    def save_with_tpi
        myshixun = Myshixun.find_by(identifier: params[:identifier])
        jupyter_save_with_game(myshixun, params[:jupyter_port])
        render json: {status: 0}
    end

    def save_with_tpm
        shixun = Shixun.find_by(identifier: params[:identifier])
        jupyter_save_with_shixun(shixun, params[:jupyter_port])
        render json: {status: 0}
    end

    def get_info_with_tpi
        myshixun = Myshixun.find_by(identifier: params[:identifier])
        url = jupyter_url_with_game(myshixun)
        port = jupyter_port_with_game(myshixun)
        render json: {status: 0, url: url, port: port}
    end

    def get_info_with_tpm
        shixun = Shixun.find_by(identifier: params[:identifier])
        url = jupyter_url_with_shixun(shixun)
        port = jupyter_port_with_shixun(shixun)
        render json: {status: 0, url: url, port: port}
    end

    def reset_with_tpi
        myshixun = Myshixun.find_by(identifier: params[:identifier])
        info = jupyter_tpi_reset(myshixun)
        render json: {status: 0, url: info[:url], port: info[:port]}
    end

    def reset_with_tpm
        shixun = Shixun.find_by(identifier: params[:identifier])
        info = jupyter_tpm_reset(shixun)
        render json: {status: 0, url: info[:url], port: info[:port]}
    end

    def active_with_tpm
        shixun = Shixun.find_by(identifier: params[:identifier])
        jupyter_active_tpm(shixun)
        render json: {status: 0}
    end

    def active_with_tpi
        myshixun = Myshixun.find_by(identifier: params[:identifier])
        jupyter_active_tpi(myshixun)
        render json: {status: 0}
    end

    def timeinfo_with_tpm
        shixun = Shixun.find_by(identifier: params[:identifier])
        info = jupyter_timeinfo_tpm(shixun)
        render json: {status: 0}.merge(info)
    end

    def timeinfo_with_tpi
        myshixun = Myshixun.find_by(identifier: params[:identifier])
        info = jupyter_timeinfo_tpi(myshixun)
        render json: {status: 0}.merge(info)
    end
    

end