<?xml version="1.0" encoding="utf-8"?>
<AutoMateTask>
  <TaskInfo>
    <Version TaskVersion="11.6.0.70" MinVersion="0.0.0.0" AMLVersion="3.0" />
  </TaskInfo>
  <ManagedTask>
    <TaskProperties Id="{5cd16c45-2ba3-4205-b86a-a1855562a2a3}" Name="HubSpot Bot - Generate Connection Token" Path="" />
  </ManagedTask>
  <TaskVariables>
    <TaskVariable Name="TaskVar_MainPath" Default="C:\Automate\Tasks\%GetTaskName()%" />
    <TaskVariable Name="TaskVar_ElapsedTime" />
    <TaskVariable Name="TaskVar_Log" Description="%TaskVar_MainPath%\Logs\%GetTaskName()%_%format(Now(), &quot;yyyy-MM-dd hhmmss&quot;)%.log" Default="%TaskVar_MainPath%\Logs\%GetTaskName()%_%format(Now(), &quot;yyyy-MM-dd&quot;)%.log" />
    <TaskVariable Name="TaskVar_errorTitle" Default="We found an error on the task %GetTaskName()%" />
    <TaskVariable Name="TaskVar_errorDesc" />
    <TaskVariable Name="TaskVar_help" Default="%GetAutoMateDirectory()%\Help\Default.htm" />
    <TaskVariable Name="TaskVar_Error" />
    <TaskVariable Name="var_HubSpotTokenURL" />
    <TaskVariable Name="var_HubSpotAuthCode" />
    <TaskVariable Name="var_HubSpotClient_Id" />
    <TaskVariable Name="var_HubSpotClientSecret" />
    <TaskVariable Name="var_HubSpotFileTokenOutput" />
    <TaskVariable Name="var_HubSpotRedirectUri" />
    <TaskVariable Name="var_HubSpotToken" />
    <TaskVariable Name="var_HubSpotRefreshToken" />
    <TaskVariable Name="var_TokenFileString" />
  </TaskVariables>
  <TaskFunctions>
    <TaskFunction Name="OnStepStart" Access="private">
      <Parameters>
        <Parameter Name="FunctionName" Description="The function that is starting the step" />
        <Parameter Name="StepNumber" Description="The step number that is about to execute" />
      </Parameters>
    </TaskFunction>
    <TaskFunction Name="OnStepEnd" Access="private">
      <Parameters>
        <Parameter Name="FunctionName" Description="The function that is ending the step" />
        <Parameter Name="StepNumber" Description="The step number that is about to end" />
      </Parameters>
    </TaskFunction>
    <TaskFunction Name="OnStepError" Access="private">
      <Parameters>
        <Parameter Name="FunctionName" Description="The function with the error" />
        <Parameter Name="StepNumber" Description="The step number of the error" />
        <Parameter Name="ErrorText" Description="The text of the error" />
        <Parameter Name="ErrorCode" Description="The code of the error" />
      </Parameters>
    </TaskFunction>
    <TaskFunction Name="OnTaskFailure" Access="private">
      <Parameters>
        <Parameter Name="FunctionName" Description="The function causing the task failure" />
        <Parameter Name="StepNumber" Description="The step number causing the task failure" />
        <Parameter Name="ErrorText" Description="The text of the error" />
        <Parameter Name="ErrorCode" Description="The code of the error" />
      </Parameters>
      <Steps>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskVar_error"><![CDATA[<strong>%AMError.FunctionName%</strong> in the Step <strong>%AMError.StepNumber%</strong>. Error Description: <span style="color: #ff0000;"><strong>"%AMError.ErrorDesc%"</strong></span>]]></AMVARIABLE>
<AMTIMER ACTIVITY="stop" RESULTVARIABLE="TaskVar_ElapsedTime" SESSION="TimerSession1" />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskVar_Log%">%NOW()% - ERROR - Error found on the Function %Replace(Replace(Replace(Replace(Replace(Replace(TaskVar_Error, "&lt;span style=""color: #ff0000;""&gt;", "", 1, -1), "&lt;p&gt;&amp;lt;", "", 1, -1), "&lt;/strong&gt;", "", 1, -1), "&lt;strong&gt;", "", 1, -1), "&lt;p&gt;&amp;lt;&lt;strong&gt;", "", 1, -1), "&lt;/span&gt;", "", 1, -1)%. 
%NOW()% - INFO - Aborting task. Total elapsed time: %Round(TaskVar_ElapsedTime, 2)% seconds.</AMFILESYSTEM>
<AMTASK ACTIVITY="stop" STATUSTYPE="ERROR" ERRORNUMBER="12345" ERRORTEXT="Task Execution Error" />
	</Steps>
    </TaskFunction>
    <TaskFunction Name="OnTaskStart" Access="private">
      <Parameters>
        <Parameter Name="Reason" Description="The reason the task is starting" />
      </Parameters>
      <Steps>
<!--Initiating our log-->
<AMTIMER SESSION="TimerSession1" />
<!--Writing the task start-->
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskVar_Log%">---------------------------------------------------------------------------------------
%Now()% - INFO - Starting the task "%GetTaskName()%"</AMFILESYSTEM>
<!--Lets create our main path in case does not exist-->
<AMIF ACTIVITY="folder_exist" ACCESSIBILITYENGINE="active" FOLDER="%TaskVar_MainPath%" MODE="not_exist" />
<AMFILESYSTEM ACTIVITY="create_folder" FOLDER="%TaskVar_MainPath%" />
<AMIF ACTIVITY="end" ACCESSIBILITYENGINE="active" />
	</Steps>
    </TaskFunction>
    <TaskFunction Name="OnTaskEnd" Access="private">
      <Parameters>
        <Parameter Name="Reason" Description="The reason the task is ending" />
      </Parameters>
      <Steps>
<!--Ending the log-->
<AMTIMER ACTIVITY="stop" RESULTVARIABLE="TaskVar_ElapsedTime" SESSION="TimerSession1" />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskVar_Log%">%now()% - INFO - Ending our task
%now()% - INFO - The Task %GetTaskName()% has finished without errors
%now()% - INFO - Elapsed time: %Round(TaskVar_ElapsedTime, 2)% seconds</AMFILESYSTEM>
	</Steps>
    </TaskFunction>
    <TaskFunction Name="Main" Access="private">
      <Steps>
<!--HubSpot Bot &#45; 接続トークンの生成
HubSpot Tokenを生成し、TXTファイルに保存するためのAutoMateタスクです。
By HelpSystems-->
<AMREGION NAME="設定" />
<!--HubSpotで事前にConnected Appと必要なアクセス権を設定することを忘れないでください。-->
<!--HubSpot Oauth2アクセストークンの生成には、「authorization_code」グラントタイプを使用します。-->
<!--デフォルトではapi.hubapi.com/oauth/v1/tokenのURLを使用しますが、必要に応じて変更することが可能です。-->
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotTokenURL" VALUE="https://api.hubapi.com/oauth/v1/token" />
<!--認証コードを設定します。この値は、HubSpotがユーザーに同意を求める際に提供されます。詳細については、ユーザーガイドを参照してください。-->
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotAuthCode" VALUE="" />
<!--リダイレクトURI、クライアントID、クライアントシークレット、生成されるtxtファイルの完全パスを設定します。-->
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotRedirectUri" VALUE="http://localhost" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotClient_Id" VALUE="" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotClientSecret" VALUE="" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotFileTokenOutput" VALUE="C:\Automate\HubSpotToken.txt" />
<AMENDREGION />
<AMREGION NAME="インシデントをリストアップし、CSV出力ファイルを取得する" />
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="CreateConnectionToken()" />
<AMENDREGION />
	</Steps>
    </TaskFunction>
    <TaskFunction Name="CreateConnectionToken">
      <Steps>
<AMREGION NAME="リフレッシュトークンが既に存在する場合、それを取得する" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotToken" VALUE="" />
<AMIF ACTIVITY="file_exist" FILE="%var_HubSpotFileTokenOutput%" />
<AMFILESYSTEM ACTIVITY="read_file" FILE="%var_HubSpotFileTokenOutput%" RESULTVARIABLE="var_TokenFileString" />
<AMTEXT TEXT="%var_TokenFileString%" FIND="refresh_token:.*" USERE="YES" FOUNDTEXTVARIABLE="var_TokenFileString" />
<AMTEXT ACTIVITY="replace" TEXT="%var_TokenFileString%" FIND="refresh_token:" REPLACE="" RESULTVARIABLE="var_HubSpotRefreshToken" USERE="YES" />
<AMELSE />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotRefreshToken" VALUE="" />
<AMIF ACTIVITY="end" />
<AMENDREGION />
<AMREGION NAME="コネクショントークンの作成" />
<AMIF EXPRESSION="%var_HubSpotRefreshToken% = ''" />
<!--新しいトークンを取得する...-->
<AMHTTP ACTIVITY="post" AM_RETRY="2" AM_RETRYDELAY="500" URL="%var_HubSpotTokenURL%" TYPE="field" RESULTDATASET="GetResult"><FIELD NAME="grant_type" VALUE="authorization_code" /><FIELD NAME="client_id" VALUE="%var_HubSpotClient_Id%" /><FIELD NAME="client_secret" VALUE="%var_HubSpotClientSecret%" /><FIELD NAME="code" VALUE="%var_HubSpotAuthCode%" /><FIELD NAME="redirect_uri" VALUE="%var_HubSpotRedirectUri%" /></AMHTTP>
<AMELSE />
<!--トークンをリフレッシュする...-->
<AMHTTP ACTIVITY="post" AM_RETRY="2" AM_RETRYDELAY="500" URL="%var_HubSpotTokenURL%" TYPE="field" RESULTDATASET="GetResult"><FIELD NAME="grant_type" VALUE="refresh_token" /><FIELD NAME="client_id" VALUE="%var_HubSpotClient_Id%" /><FIELD NAME="client_secret" VALUE="%var_HubSpotClientSecret%" /><FIELD NAME="refresh_token" VALUE="%var_HubSpotRefreshToken%" /><FIELD NAME="redirect_uri" VALUE="%var_HubSpotRedirectUri%" /></AMHTTP>
<AMIF ACTIVITY="end" />
<AMIF ACTIVITY="contains_text" TEXT="%GetResult(1).ResponseHeader%" SUBSTRING="HTTP/1.1 200 OK" />
<AMJSON JSONSTRING="%GetResult(1).Data%" RESULTSTRUCTURE="DatasetResults" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotToken"><![CDATA[%DatasetResults.access_token%]]></AMVARIABLE>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_HubSpotRefreshToken"><![CDATA[%DatasetResults.refresh_token%]]></AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%var_HubSpotFileTokenOutput%" APPEND="no">access_token:%var_HubSpotToken%
refresh_token:%var_HubSpotRefreshToken%</AMFILESYSTEM>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskVar_Log%">%Now()% - INFO - HubSpot Token retrieved from with Sucess and saved in %var_HubSpotFileTokenOutput%.</AMFILESYSTEM>
<AMELSE />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskVar_Log%">%Now()% - ERROR - No Token retrieved from HubSpot.</AMFILESYSTEM>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskVar_Log%">%Now()% - ERROR - Details: %GetResult(1).Data%</AMFILESYSTEM>
<AMIF ACTIVITY="end" />
<AMENDREGION />
	</Steps>
    </TaskFunction>
  </TaskFunctions>
</AutoMateTask>