require "net/http" require "uri" require 'json' class ClientsController < ApplicationController before_action :set_client, only: [:show, :edit, :update, :destroy] before_filter :authenticate_user!, except: [:confirm_client, :post_confirmation, :resend_confirmation, :reconfirm_client] # GET /clients # GET /clients.json def index @clients = Client.all end # GET /clients/1 # GET /clients/1.json def show end # GET /clients/new def new @client = Client.new end # GET /clients/1/edit def edit end def confirm_client client = Client.confirm_email(params[:token]) if client[:success].eql?("true") pass = confirm_client_site(client[:id]) if !pass client[:success] = "false" end end redirect_to post_confirmation_clients_path if client[:success].eql?("true") flash[:notice] = "You have confirmed successfully" else flash[:notice] = "Error in confirmation please try again." end # render :json => client.to_json end def resend_confirmation end def reconfirm_client client = Client.send_reconformation_email(params[:email]) redirect_to post_confirmation_clients_path end def post_confirmation end # POST /clients # POST /clients.json def create @client = Client.new(client_params) respond_to do |format| if @client.save format.html { redirect_to @client, notice: 'Client was successfully created.' } format.json { render action: 'show', status: :created, location: @client } else format.html { render action: 'new' } format.json { render json: @client.errors, status: :unprocessable_entity } end end end # PATCH/PUT /clients/1 # PATCH/PUT /clients/1.json def update respond_to do |format| if @client.update(client_params) format.html { redirect_to @client, notice: 'Client was successfully updated.' } format.json { head :no_content } else format.html { render action: 'edit' } format.json { render json: @client.errors, status: :unprocessable_entity } end end end # DELETE /clients/1 # DELETE /clients/1.json def destroy @client.destroy respond_to do |format| format.html { redirect_to clients_url } format.json { head :no_content } end end def confirm_client_site(client_id = nil) if client_id client = Client.find(client_id) url = client.url + "/store_confirmation/confirm?site_token=#{client.site_token}" uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Post.new(uri.request_uri) request.set_form_data({:site_token => client.site_token}) response = http.request(request) success = response.body success = JSON.parse(success) if success["success"] == "true" return true else return false end else return false end end private # Use callbacks to share common setup or constraints between actions. def set_client @client = Client.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def client_params params.require(:client).permit(:site_name, :site_token, :site_id) end end