CINXE.COM

RubyGems - tcat - Versions diffs - 0.1.4 → 0.1.6 - Mend - Supply Chain Defender

<!DOCTYPE html> <html> <head> <title> RubyGems - tcat - Versions diffs - 0.1.4 → 0.1.6 - Mend - Supply Chain Defender </title> <link rel="icon" type="image/png" href="/packs/media/images/production/favicons/favicon-32x32-fa0286238d4d512e71dba3881cbbcc42.png" /> <link rel="mask-icon" type="image/x-icon" href="/packs/media/images/production/favicons/favicon-786db6a85c0dea068c1a7047338024d2.svg" /> <link rel="apple-touch-icon" type="image/png" href="/packs/media/images/production/favicons/apple-touch-icon-11491aa2351c88b3b48534d1576a2ff9.png" /> <link rel="shortcut icon" type="image/x-icon" href="/packs/media/images/production/favicons/favicon-81c62e5500c39bd10e99844e94455995.ico" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="BAjtMM1kZta5h4PM_PSMnf_Dt5OqwMO4cdxsvZJUPVqso_Oia8Aj_8qorj-WZWvC0N_BZWiegvewzaf0c2WviQ" /> <meta content='no-cache' name='turbolinks-cache-control'> <meta content='width=device-width, initial-scale=1' name='viewport'> <link rel="stylesheet" href="/packs/css/application-b44eb75784afb1e9f8ce.css" media="all" /> <script src="/packs/js/application-9f130b109122a7b55e22.js" data-turbolinks-track="reload"></script> <link href='https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i' rel='stylesheet'> </head> <body class='registries ruby_gems diffs' id='page-top'> <div id='wrapper'> <div class='d-flex flex-column' id='content-wrapper'> <div id='content'> <nav class='navbar navbar-expand navbar-light bg-white topbar mb-4 shadow'> <a class='sidebar-brand d-flex align-items-center justify-content-center' href='/'> <div class='sidebar-brand-text mx-3 d-none d-xxl-block d-xl-block'> <img alt="Diffend" src="/packs/media/images/production/logos/vertical-dark-5363ad390f9fcfd11bfecf89a3fb60f1.svg" /> </div> </a> <div class='container'> <ul class='navbar-nav'> <li class='nav-item'> <a class='nav-link' href='/gems'> <span class='mr-2 d-none d-lg-inline text-gray-600'> RubyGems </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/npm'> <span class='mr-2 d-none d-lg-inline text-gray-600'> npm </span> </a> </li> <div class='topbar-divider d-sm-block'></div> <li class='nav-item'> <a class='nav-link' href='/organizations'> <span class='mr-2 d-none d-lg-inline text-gray-600'> Organizations </span> </a> </li> </ul> <ul class='navbar-nav'> <div class='topbar-divider d-none d-sm-block'></div> <li class='nav-item'> <a class='nav-link' href='/users/sign_in'> <span class='mr-2 d-none d-lg-inline text-gray-600'> <i class='fas fa-key fa-fw mr-2'></i> Log in </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/users/sign_up'> <span class='mr-2 d-none d-lg-inline text-gray-600'> <i class='fas fa-user-plus fa-fw mr-2'></i> Sign up </span> </a> </li> </ul> </div> </nav> <div class='container'> <div class='row'> <div class='col mb-1'> <nav> <ol class='breadcrumb'> <li class='breadcrumb-item'> <a href="/gems">RubyGems</a> </li> <li class='breadcrumb-item'> <a href="/gems/tcat">tcat</a> </li> <li class='breadcrumb-item'> <a href="/gems/tcat">Versions diffs</a> </li> <li class='breadcrumb-item'> <a href="/gems/tcat/0.1.4/0.1.6">0.1.4 → 0.1.6</a> </li> </ol> </nav> </div> </div> <div class='row'> <div class='col'> <div class='text-right mb-4'> </div> </div> </div> <div class='row'> <div class='col align-items-center mb-4'> <div class='text-center'> <h2 class='text-gray-800'> tcat 0.1.4 → 0.1.6 </h2> </div> </div> </div> <div data-diff-id='daebe1fa-b814-4fff-8b6e-9c598a82b003' data-diff-state='finished' id='diff-id'> <div class='row'> <div class='col pt-2 text-black'> <div class='row'> <div class='col-lg-12 mb-4 mt-2'> <div class='card bg-info text-white shadow'> <div class='card-body'> <span class='icon text-white-100 mr-2'> <i class='fas fa-info-circle'></i> </span> Sign up to get <strong>free</strong> protection for your applications and to get access to all the features. </div> </div> </div> </div> <div id='diff'> <div class='mb-3'> <div class="d2h-file-list-wrapper"> <div class="d2h-file-list-header"> <span class="d2h-file-list-title">Files changed (12)</span> <a class="d2h-file-switch d2h-hide">hide</a> <a class="d2h-file-switch d2h-show">show</a> </div> <ol class="d2h-file-list"> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-683205" class="d2h-file-name">checksums.yaml</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+4</span> <span class="d2h-lines-deleted">-4</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-962357" class="d2h-file-name">data/.rubocop.yml</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+13</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-636665" class="d2h-file-name">data/.tool-versions</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-027470" class="d2h-file-name">data/README.md</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+89</span> <span class="d2h-lines-deleted">-12</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-485802" class="d2h-file-name">data/Rakefile</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+3</span> <span class="d2h-lines-deleted">-3</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-107462" class="d2h-file-name">data/lib/tcat/configuration.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-853529" class="d2h-file-name">data/lib/tcat/encryption_service.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+47</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-978790" class="d2h-file-name">data/lib/tcat/http_client.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+60</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-062220" class="d2h-file-name">data/lib/tcat/query.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+52</span> <span class="d2h-lines-deleted">-47</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-487196" class="d2h-file-name">data/lib/tcat/version.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-653939" class="d2h-file-name">data/lib/tcat.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/tcat/0.1.4/0.1.6/page/1#d2h-004177" class="d2h-file-name">metadata</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+5</span> <span class="d2h-lines-deleted">-3</span> </span> </span> </li> </ol> </div> </div> <div id="d2h-683205" class="d2h-file-wrapper" data-lang="yaml"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-683205">checksums.yaml</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,7 +1,7 @@</div> </td> </tr><tr> <td id="d2h-683205-23" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-23"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">---</span> </div> </td> </tr><tr> <td id="d2h-683205-34" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-34"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">SHA256:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">3</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> metadata.gz: <del>649a0ce80d0bd52cde6c0cd171b869ab557d7b085467d2e0e950a652456a29a9</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">4</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> data.tar.gz: <del>2519e582fd44fc108a05b1c69a0bbcc80dba5620f6acb5f8baf21a96c8289b38</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> metadata.gz: <ins>ac88c04a17a00b5b457a86bcf3bad081ac0fb48886351c1033fd1b89e2ebe399</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> data.tar.gz: <ins>4adfbb15946f3f42b2b655911f2501824e401aa08d22635aafb01cb73f9adb85</ins></span> </div> </td> </tr><tr> <td id="d2h-683205-89" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-89"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">SHA512:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">6</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> metadata.gz: <del>5040e5ed15e2bef7e946a7b237f50464ecf52fbe0dd50fec8aba99c9ee78e9d1c43de2d78840a84921876c713b1af46cfbe90d2d2a75183619a5d8839466620b</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">7</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> data.tar.gz: <del>fdcacbc2c3bdd76754cf73083bd59dd8791501f22404966992bc827a78d90ddb2e3f8f8819b2bc1611175f451eb9c9e8ec8b55a6136826e8ddc7026f1461648a</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> metadata.gz: <ins>34d8e04435756d743116aa0da37132d5c7f695a6f835690d4f616cba78aaacf15c1661c8e6802524c903b0dcaaf0f89ee9803d654b702865c2cdd438b90426d4</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> data.tar.gz: <ins>fb274000955f0ba2f3f68d2d6564fbd930656f792993b7be394861afb1c6df2d76f0ccffb7ef6b68dd3b4d646da9a8a8c7b58250db85bfe420c5ea0643c77828</ins></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-962357" class="d2h-file-wrapper" data-lang="yml"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-962357">data/.rubocop.yml</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,5 +1,7 @@</div> </td> </tr><tr> <td id="d2h-962357-171" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-171"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">AllCops:</span> </div> </td> </tr><tr> <td id="d2h-962357-182" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-182"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> TargetRubyVersion: 2.7</span> </div> </td> </tr><tr> <td id="d2h-962357-193" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-193"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> Exclude:</span> </div> </td> </tr><tr> <td id="d2h-962357-204" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-204"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> - &#x27;bin&#x2F;*&#x27;</span> </div> </td> </tr><tr> <td id="d2h-962357-215" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-215"> <div class="line-num1">3</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-962357-226" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-226"> <div class="line-num1">4</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># Style&#x2F;StringLiterals:</span> </div> </td> </tr><tr> <td id="d2h-962357-237" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-237"> <div class="line-num1">5</div> <div class="line-num2">7</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># Enabled: true</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -9,5 +11,15 @@ AllCops:</div> </td> </tr><tr> <td id="d2h-962357-254" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-254"> <div class="line-num1">9</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># Enabled: true</span> </div> </td> </tr><tr> <td id="d2h-962357-265" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-265"> <div class="line-num1">10</div> <div class="line-num2">12</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># EnforcedStyle: double_quotes</span> </div> </td> </tr><tr> <td id="d2h-962357-276" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-276"> <div class="line-num1">11</div> <div class="line-num2">13</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-962357-287" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-287"> <div class="line-num1"></div> <div class="line-num2">14</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Metrics&#x2F;AbcSize:</span> </div> </td> </tr><tr> <td id="d2h-962357-298" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-298"> <div class="line-num1"></div> <div class="line-num2">15</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> Exclude:</span> </div> </td> </tr><tr> <td id="d2h-962357-309" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-309"> <div class="line-num1"></div> <div class="line-num2">16</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> - &#x27;lib&#x2F;tcat&#x2F;query.rb&#x27;</span> </div> </td> </tr><tr> <td id="d2h-962357-320" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-320"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-962357-331" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-331"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Metrics&#x2F;MethodLength:</span> </div> </td> </tr><tr> <td id="d2h-962357-342" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-342"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> Exclude:</span> </div> </td> </tr><tr> <td id="d2h-962357-353" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-353"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> - &#x27;lib&#x2F;tcat&#x2F;query.rb&#x27;</span> </div> </td> </tr><tr> <td id="d2h-962357-364" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-364"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-962357-375" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-962357-375"> <div class="line-num1">12</div> <div class="line-num2">22</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">Layout&#x2F;LineLength:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">13</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>Max</del>:<del> 120</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>Exclude</ins>:</span> </div> </td> </tr><tr> <td id="d2h-962357-408" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-408"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> - &#x27;lib&#x2F;tcat&#x2F;query.rb&#x27;</span> </div> </td> </tr><tr> <td id="d2h-962357-419" class="d2h-code-linenumber d2h-ins"><a href="#d2h-962357-419"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> - tcat.gemspec</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-636665" class="d2h-file-wrapper" data-lang="tool-versions"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-636665">data/.tool-versions</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1 +1 @@</div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">1</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">ruby 3.3.<del>3</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">1</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">ruby 3.3.<ins>6</ins></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-027470" class="d2h-file-wrapper" data-lang="md"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-027470">data/README.md</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,35 +1,112 @@</div> </td> </tr><tr> <td id="d2h-027470-506" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-506"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># Tcat</span> </div> </td> </tr><tr> <td id="d2h-027470-517" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-517"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">3</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>TODO:</del> <del>Delete</del> <del>this</del> <del>and</del> <del>the</del> <del>text</del> <del>below,</del> and <del>describe</del> <del>your</del> <del>gem</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>A</ins> <ins>Ruby</ins> <ins>gem</ins> <ins>for</ins> <ins>tracking</ins> <ins>T-Cat</ins> <ins>(Taiwan</ins> <ins>Pelican Express) shipment status. Provides a simple </ins>and <ins>easy-to-use</ins> <ins>API</ins> <ins>interface.</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-550" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-550"> <div class="line-num1">4</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">5</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>Welcome</del> <del>to your new gem! In this directory, you&#x27;ll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib&#x2F;tcat`. To experiment with that code, run `bin&#x2F;console` for an interactive prompt.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">5</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>##</ins> <ins>Features</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-583" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-583"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-594" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-594"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Track shipment status</span> </div> </td> </tr><tr> <td id="d2h-027470-605" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-605"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Secure encrypted requests</span> </div> </td> </tr><tr> <td id="d2h-027470-616" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-616"> <div class="line-num1"></div> <div class="line-num2">9</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Simple API interface</span> </div> </td> </tr><tr> <td id="d2h-027470-627" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-627"> <div class="line-num1"></div> <div class="line-num2">10</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Non-blocking HTTP requests</span> </div> </td> </tr><tr> <td id="d2h-027470-638" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-638"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Comprehensive error handling</span> </div> </td> </tr><tr> <td id="d2h-027470-649" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-649"> <div class="line-num1">6</div> <div class="line-num2">12</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-660" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-660"> <div class="line-num1">7</div> <div class="line-num2">13</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">## Installation</span> </div> </td> </tr><tr> <td id="d2h-027470-671" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-671"> <div class="line-num1">8</div> <div class="line-num2">14</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">9</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>TODO:</del> <del>Replace `UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace </del>this <del>section</del> <del>with instructions </del>to <del>install </del>your <del>gem from git if you don</del>&#x27;<del>t</del> <del>plan to release to RubyGems.org.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">15</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>Add</ins> this <ins>line</ins> to your <ins>application</ins>&#x27;<ins>s</ins> <ins>Gemfile:</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-704" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-704"> <div class="line-num1"></div> <div class="line-num2">16</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-715" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-715"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-726" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-726"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">gem &#x27;tcat&#x27;</span> </div> </td> </tr><tr> <td id="d2h-027470-737" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-737"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-748" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-748"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-759" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-759"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">And then execute:</span> </div> </td> </tr><tr> <td id="d2h-027470-770" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-770"> <div class="line-num1">10</div> <div class="line-num2">22</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">11</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>Install the gem and add to the application&#x27;s Gemfile by executing:</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>```bash</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-803" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-803"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">$ bundle install</span> </div> </td> </tr><tr> <td id="d2h-027470-814" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-814"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-825" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-825"> <div class="line-num1">12</div> <div class="line-num2">26</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">13</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> $</del> <del>bundle</del> <del>add</del> <del>UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">27</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>Or</ins> <ins>install</ins> <ins>it</ins> <ins>yourself as:</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-858" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-858"> <div class="line-num1">14</div> <div class="line-num2">28</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">15</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>If bundler is not being used to manage dependencies, install the gem by executing:</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">29</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>```bash</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-891" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-891"> <div class="line-num1"></div> <div class="line-num2">30</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">$ gem install tcat</span> </div> </td> </tr><tr> <td id="d2h-027470-902" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-902"> <div class="line-num1"></div> <div class="line-num2">31</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-913" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-913"> <div class="line-num1">16</div> <div class="line-num2">32</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">17</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> $</del> <del>gem install UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">33</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>##</ins> <ins>Configuration</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-946" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-946"> <div class="line-num1"></div> <div class="line-num2">34</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-957" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-957"> <div class="line-num1"></div> <div class="line-num2">35</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Configure the gem before use:</span> </div> </td> </tr><tr> <td id="d2h-027470-968" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-968"> <div class="line-num1"></div> <div class="line-num2">36</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-979" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-979"> <div class="line-num1"></div> <div class="line-num2">37</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-990" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-990"> <div class="line-num1"></div> <div class="line-num2">38</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Tcat.configure do |config|</span> </div> </td> </tr><tr> <td id="d2h-027470-1001" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1001"> <div class="line-num1"></div> <div class="line-num2">39</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> config.secret_string = &#x27;your_secret_string&#x27;</span> </div> </td> </tr><tr> <td id="d2h-027470-1012" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1012"> <div class="line-num1"></div> <div class="line-num2">40</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> config.secret_key = &#x27;your_secret_key&#x27;</span> </div> </td> </tr><tr> <td id="d2h-027470-1023" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1023"> <div class="line-num1"></div> <div class="line-num2">41</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-1034" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1034"> <div class="line-num1"></div> <div class="line-num2">42</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1045" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1045"> <div class="line-num1">18</div> <div class="line-num2">43</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1056" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1056"> <div class="line-num1">19</div> <div class="line-num2">44</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">## Usage</span> </div> </td> </tr><tr> <td id="d2h-027470-1067" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1067"> <div class="line-num1">20</div> <div class="line-num2">45</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">21</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>TODO:</del> <del>Write</del> <del>usage instructions here</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">46</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>###</ins> <ins>Basic</ins> <ins>Usage</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-1100" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1100"> <div class="line-num1"></div> <div class="line-num2">47</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1111" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1111"> <div class="line-num1"></div> <div class="line-num2">48</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1122" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1122"> <div class="line-num1"></div> <div class="line-num2">49</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># Create a query instance</span> </div> </td> </tr><tr> <td id="d2h-027470-1133" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1133"> <div class="line-num1"></div> <div class="line-num2">50</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">query = Tcat::Query.new(&#x27;your_tracking_number&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-027470-1144" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1144"> <div class="line-num1"></div> <div class="line-num2">51</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1155" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1155"> <div class="line-num1"></div> <div class="line-num2">52</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># Get shipment status</span> </div> </td> </tr><tr> <td id="d2h-027470-1166" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1166"> <div class="line-num1"></div> <div class="line-num2">53</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">status = query.perform</span> </div> </td> </tr><tr> <td id="d2h-027470-1177" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1177"> <div class="line-num1"></div> <div class="line-num2">54</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1188" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1188"> <div class="line-num1"></div> <div class="line-num2">55</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># Status will be one of the following:</span> </div> </td> </tr><tr> <td id="d2h-027470-1199" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1199"> <div class="line-num1"></div> <div class="line-num2">56</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># :done - Successfully delivered</span> </div> </td> </tr><tr> <td id="d2h-027470-1210" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1210"> <div class="line-num1"></div> <div class="line-num2">57</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># :delivering - Out for delivery</span> </div> </td> </tr><tr> <td id="d2h-027470-1221" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1221"> <div class="line-num1"></div> <div class="line-num2">58</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># :collected - Package collected</span> </div> </td> </tr><tr> <td id="d2h-027470-1232" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1232"> <div class="line-num1"></div> <div class="line-num2">59</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># :in_transit - In transit</span> </div> </td> </tr><tr> <td id="d2h-027470-1243" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1243"> <div class="line-num1"></div> <div class="line-num2">60</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># :unknown - Unknown status</span> </div> </td> </tr><tr> <td id="d2h-027470-1254" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1254"> <div class="line-num1"></div> <div class="line-num2">61</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1265" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1265"> <div class="line-num1"></div> <div class="line-num2">62</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1276" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1276"> <div class="line-num1"></div> <div class="line-num2">63</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Error Handling</span> </div> </td> </tr><tr> <td id="d2h-027470-1287" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1287"> <div class="line-num1"></div> <div class="line-num2">64</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1298" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1298"> <div class="line-num1"></div> <div class="line-num2">65</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1309" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1309"> <div class="line-num1"></div> <div class="line-num2">66</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">begin</span> </div> </td> </tr><tr> <td id="d2h-027470-1320" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1320"> <div class="line-num1"></div> <div class="line-num2">67</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> status = query.perform</span> </div> </td> </tr><tr> <td id="d2h-027470-1331" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1331"> <div class="line-num1"></div> <div class="line-num2">68</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">rescue Tcat::HttpClient::RequestError =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-027470-1342" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1342"> <div class="line-num1"></div> <div class="line-num2">69</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> puts &quot;Network request error: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-027470-1353" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1353"> <div class="line-num1"></div> <div class="line-num2">70</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">rescue Tcat::EncryptionService::EncryptionError =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-027470-1364" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1364"> <div class="line-num1"></div> <div class="line-num2">71</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> puts &quot;Encryption error: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-027470-1375" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1375"> <div class="line-num1"></div> <div class="line-num2">72</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">rescue StandardError =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-027470-1386" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1386"> <div class="line-num1"></div> <div class="line-num2">73</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> puts &quot;Other error: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-027470-1397" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1397"> <div class="line-num1"></div> <div class="line-num2">74</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-1408" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1408"> <div class="line-num1"></div> <div class="line-num2">75</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1419" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1419"> <div class="line-num1">22</div> <div class="line-num2">76</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1430" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1430"> <div class="line-num1">23</div> <div class="line-num2">77</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">## Development</span> </div> </td> </tr><tr> <td id="d2h-027470-1441" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1441"> <div class="line-num1">24</div> <div class="line-num2">78</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">25</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>After checking out the repo, run `bin&#x2F;setup` to install dependencies</del>. <del>Then,</del> <del>run `rake spec` to run </del>the <del>tests. You can also run `bin&#x2F;console` for an interactive prompt that will allow you to experiment.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">79</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>1</ins>. <ins>Fork</ins> the <ins>project</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-1474" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1474"> <div class="line-num1"></div> <div class="line-num2">80</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">2. Create your feature branch (`git checkout -b feature&#x2F;amazing-feature`)</span> </div> </td> </tr><tr> <td id="d2h-027470-1485" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1485"> <div class="line-num1"></div> <div class="line-num2">81</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">3. Commit your changes (`git commit -am &#x27;Add some amazing feature&#x27;`)</span> </div> </td> </tr><tr> <td id="d2h-027470-1496" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1496"> <div class="line-num1"></div> <div class="line-num2">82</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">4. Push to the branch (`git push origin feature&#x2F;amazing-feature`)</span> </div> </td> </tr><tr> <td id="d2h-027470-1507" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1507"> <div class="line-num1"></div> <div class="line-num2">83</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">5. Create a Pull Request</span> </div> </td> </tr><tr> <td id="d2h-027470-1518" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1518"> <div class="line-num1"></div> <div class="line-num2">84</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1529" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1529"> <div class="line-num1"></div> <div class="line-num2">85</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Running Tests</span> </div> </td> </tr><tr> <td id="d2h-027470-1540" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1540"> <div class="line-num1">26</div> <div class="line-num2">86</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">27</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https:&#x2F;&#x2F;rubygems.org).</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">87</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>```bash</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-1573" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1573"> <div class="line-num1"></div> <div class="line-num2">88</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">$ bundle exec rake spec</span> </div> </td> </tr><tr> <td id="d2h-027470-1584" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1584"> <div class="line-num1"></div> <div class="line-num2">89</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1595" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1595"> <div class="line-num1"></div> <div class="line-num2">90</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1606" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1606"> <div class="line-num1"></div> <div class="line-num2">91</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Local Installation</span> </div> </td> </tr><tr> <td id="d2h-027470-1617" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1617"> <div class="line-num1"></div> <div class="line-num2">92</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1628" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1628"> <div class="line-num1"></div> <div class="line-num2">93</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```bash</span> </div> </td> </tr><tr> <td id="d2h-027470-1639" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1639"> <div class="line-num1"></div> <div class="line-num2">94</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">$ bundle exec rake install</span> </div> </td> </tr><tr> <td id="d2h-027470-1650" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1650"> <div class="line-num1"></div> <div class="line-num2">95</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1661" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1661"> <div class="line-num1">28</div> <div class="line-num2">96</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1672" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1672"> <div class="line-num1">29</div> <div class="line-num2">97</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">## Contributing</span> </div> </td> </tr><tr> <td id="d2h-027470-1683" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1683"> <div class="line-num1">30</div> <div class="line-num2">98</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">31</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">Bug reports and pull requests are welcome<del> on GitHub at https:&#x2F;&#x2F;github</del>.<del>com&#x2F;[USERNAME]&#x2F;tcat.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">99</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Bug reports and pull requests are welcome.</span> </div> </td> </tr><tr> <td id="d2h-027470-1716" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1716"> <div class="line-num1">32</div> <div class="line-num2">100</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1727" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1727"> <div class="line-num1">33</div> <div class="line-num2">101</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">## License</span> </div> </td> </tr><tr> <td id="d2h-027470-1738" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1738"> <div class="line-num1">34</div> <div class="line-num2">102</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">35</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>The</del> gem is available as open source under the terms of the [MIT License](https:&#x2F;&#x2F;opensource.org&#x2F;licenses&#x2F;MIT).</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">103</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>This</ins> gem is available as open source under the terms of the [MIT License](https:&#x2F;&#x2F;opensource.org&#x2F;licenses&#x2F;MIT).</span> </div> </td> </tr><tr> <td id="d2h-027470-1771" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1771"> <div class="line-num1"></div> <div class="line-num2">104</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1782" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1782"> <div class="line-num1"></div> <div class="line-num2">105</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## Changelog</span> </div> </td> </tr><tr> <td id="d2h-027470-1793" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1793"> <div class="line-num1"></div> <div class="line-num2">106</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1804" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1804"> <div class="line-num1"></div> <div class="line-num2">107</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### 0.1.5 (2024-01-11)</span> </div> </td> </tr><tr> <td id="d2h-027470-1815" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1815"> <div class="line-num1"></div> <div class="line-num2">108</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1826" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1826"> <div class="line-num1"></div> <div class="line-num2">109</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Refactored HTTP request handling with new HttpClient class</span> </div> </td> </tr><tr> <td id="d2h-027470-1837" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1837"> <div class="line-num1"></div> <div class="line-num2">110</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Refactored encryption logic with new EncryptionService class</span> </div> </td> </tr><tr> <td id="d2h-027470-1848" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1848"> <div class="line-num1"></div> <div class="line-num2">111</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Improved error handling</span> </div> </td> </tr><tr> <td id="d2h-027470-1859" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1859"> <div class="line-num1"></div> <div class="line-num2">112</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Updated documentation</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-485802" class="d2h-file-wrapper" data-lang=""> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-485802">data/Rakefile</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,11 +1,11 @@</div> </td> </tr><tr> <td id="d2h-485802-1897" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-1897"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># frozen_string_literal: true</span> </div> </td> </tr><tr> <td id="d2h-485802-1908" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-1908"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">3</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">require <del>&quot;</del>bundler&#x2F;gem_tasks<del>&quot;</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">4</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">require <del>&quot;</del>rspec&#x2F;core&#x2F;rake_task<del>&quot;</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require <ins>&#x27;</ins>bundler&#x2F;gem_tasks<ins>&#x27;</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require <ins>&#x27;</ins>rspec&#x2F;core&#x2F;rake_task<ins>&#x27;</ins></span> </div> </td> </tr><tr> <td id="d2h-485802-1963" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-1963"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-485802-1974" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-1974"> <div class="line-num1">6</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">RSpec::Core::RakeTask.new(:spec)</span> </div> </td> </tr><tr> <td id="d2h-485802-1985" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-1985"> <div class="line-num1">7</div> <div class="line-num2">7</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">8</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">require <del>&quot;</del>rubocop&#x2F;rake_task<del>&quot;</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require <ins>&#x27;</ins>rubocop&#x2F;rake_task<ins>&#x27;</ins></span> </div> </td> </tr><tr> <td id="d2h-485802-2018" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-2018"> <div class="line-num1">9</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-485802-2029" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-2029"> <div class="line-num1">10</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">RuboCop::RakeTask.new</span> </div> </td> </tr><tr> <td id="d2h-485802-2040" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-485802-2040"> <div class="line-num1">11</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-107462" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-107462">data/lib/tcat/configuration.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,6 +1,7 @@</div> </td> </tr><tr> <td id="d2h-107462-2078" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-107462-2078"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># frozen_string_literal: true</span> </div> </td> </tr><tr> <td id="d2h-107462-2089" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-107462-2089"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-107462-2100" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-107462-2100"> <div class="line-num1">3</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module Tcat</span> </div> </td> </tr><tr> <td id="d2h-107462-2111" class="d2h-code-linenumber d2h-ins"><a href="#d2h-107462-2111"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Configuration class handles settings for Tcat</span> </div> </td> </tr><tr> <td id="d2h-107462-2122" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-107462-2122"> <div class="line-num1">4</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class Configuration</span> </div> </td> </tr><tr> <td id="d2h-107462-2133" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-107462-2133"> <div class="line-num1">5</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> attr_accessor :secret_string, :secret_key</span> </div> </td> </tr><tr> <td id="d2h-107462-2144" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-107462-2144"> <div class="line-num1">6</div> <div class="line-num2">7</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-853529" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-853529">data/lib/tcat/encryption_service.rb</a></span> <span class="d2h-tag d2h-added d2h-added-tag">ADDED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -0,0 +1,47 @@</div> </td> </tr><tr> <td id="d2h-853529-2182" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2182"> <div class="line-num1"></div> <div class="line-num2">1</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># frozen_string_literal: true</span> </div> </td> </tr><tr> <td id="d2h-853529-2193" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2193"> <div class="line-num1"></div> <div class="line-num2">2</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2204" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2204"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require &#x27;openssl&#x27;</span> </div> </td> </tr><tr> <td id="d2h-853529-2215" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2215"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require &#x27;base64&#x27;</span> </div> </td> </tr><tr> <td id="d2h-853529-2226" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2226"> <div class="line-num1"></div> <div class="line-num2">5</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2237" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2237"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">module Tcat</span> </div> </td> </tr><tr> <td id="d2h-853529-2248" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2248"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> class EncryptionService</span> </div> </td> </tr><tr> <td id="d2h-853529-2259" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2259"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> class EncryptionError &lt; StandardError; end</span> </div> </td> </tr><tr> <td id="d2h-853529-2270" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2270"> <div class="line-num1"></div> <div class="line-num2">9</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2281" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2281"> <div class="line-num1"></div> <div class="line-num2">10</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> CIPHER_ALGORITHM = &#x27;AES-128-ECB&#x27;</span> </div> </td> </tr><tr> <td id="d2h-853529-2292" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2292"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2303" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2303"> <div class="line-num1"></div> <div class="line-num2">12</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def initialize(secret_key)</span> </div> </td> </tr><tr> <td id="d2h-853529-2314" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2314"> <div class="line-num1"></div> <div class="line-num2">13</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @secret_key = secret_key</span> </div> </td> </tr><tr> <td id="d2h-853529-2325" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2325"> <div class="line-num1"></div> <div class="line-num2">14</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> validate_key!</span> </div> </td> </tr><tr> <td id="d2h-853529-2336" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2336"> <div class="line-num1"></div> <div class="line-num2">15</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-853529-2347" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2347"> <div class="line-num1"></div> <div class="line-num2">16</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2358" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2358"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def encrypt(message)</span> </div> </td> </tr><tr> <td id="d2h-853529-2369" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2369"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> cipher = setup_cipher</span> </div> </td> </tr><tr> <td id="d2h-853529-2380" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2380"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> padded_message = pad_message(message, cipher.block_size)</span> </div> </td> </tr><tr> <td id="d2h-853529-2391" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2391"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> encrypted = cipher.update(padded_message)</span> </div> </td> </tr><tr> <td id="d2h-853529-2402" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2402"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> Base64.strict_encode64(encrypted)</span> </div> </td> </tr><tr> <td id="d2h-853529-2413" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2413"> <div class="line-num1"></div> <div class="line-num2">22</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> rescue OpenSSL::Cipher::CipherError =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-853529-2424" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2424"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise EncryptionError, &quot;Encryption failed: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-853529-2435" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2435"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> rescue StandardError =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-853529-2446" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2446"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise EncryptionError, &quot;Unexpected error during encryption: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-853529-2457" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2457"> <div class="line-num1"></div> <div class="line-num2">26</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-853529-2468" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2468"> <div class="line-num1"></div> <div class="line-num2">27</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2479" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2479"> <div class="line-num1"></div> <div class="line-num2">28</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> private</span> </div> </td> </tr><tr> <td id="d2h-853529-2490" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2490"> <div class="line-num1"></div> <div class="line-num2">29</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2501" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2501"> <div class="line-num1"></div> <div class="line-num2">30</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def validate_key!</span> </div> </td> </tr><tr> <td id="d2h-853529-2512" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2512"> <div class="line-num1"></div> <div class="line-num2">31</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise EncryptionError, &#x27;Secret key cannot be nil or empty&#x27; if @secret_key.nil? || @secret_key.empty?</span> </div> </td> </tr><tr> <td id="d2h-853529-2523" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2523"> <div class="line-num1"></div> <div class="line-num2">32</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-853529-2534" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2534"> <div class="line-num1"></div> <div class="line-num2">33</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2545" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2545"> <div class="line-num1"></div> <div class="line-num2">34</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def setup_cipher</span> </div> </td> </tr><tr> <td id="d2h-853529-2556" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2556"> <div class="line-num1"></div> <div class="line-num2">35</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> cipher = OpenSSL::Cipher.new(CIPHER_ALGORITHM)</span> </div> </td> </tr><tr> <td id="d2h-853529-2567" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2567"> <div class="line-num1"></div> <div class="line-num2">36</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> cipher.encrypt</span> </div> </td> </tr><tr> <td id="d2h-853529-2578" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2578"> <div class="line-num1"></div> <div class="line-num2">37</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> cipher.key = @secret_key</span> </div> </td> </tr><tr> <td id="d2h-853529-2589" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2589"> <div class="line-num1"></div> <div class="line-num2">38</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> cipher</span> </div> </td> </tr><tr> <td id="d2h-853529-2600" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2600"> <div class="line-num1"></div> <div class="line-num2">39</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-853529-2611" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2611"> <div class="line-num1"></div> <div class="line-num2">40</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-853529-2622" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2622"> <div class="line-num1"></div> <div class="line-num2">41</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def pad_message(message, block_size)</span> </div> </td> </tr><tr> <td id="d2h-853529-2633" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2633"> <div class="line-num1"></div> <div class="line-num2">42</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> padding_size = block_size - (message.length % block_size)</span> </div> </td> </tr><tr> <td id="d2h-853529-2644" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2644"> <div class="line-num1"></div> <div class="line-num2">43</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> padding = padding_size.chr * padding_size</span> </div> </td> </tr><tr> <td id="d2h-853529-2655" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2655"> <div class="line-num1"></div> <div class="line-num2">44</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> message + padding</span> </div> </td> </tr><tr> <td id="d2h-853529-2666" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2666"> <div class="line-num1"></div> <div class="line-num2">45</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-853529-2677" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2677"> <div class="line-num1"></div> <div class="line-num2">46</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-853529-2688" class="d2h-code-linenumber d2h-ins"><a href="#d2h-853529-2688"> <div class="line-num1"></div> <div class="line-num2">47</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-978790" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-978790">data/lib/tcat/http_client.rb</a></span> <span class="d2h-tag d2h-added d2h-added-tag">ADDED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -0,0 +1,60 @@</div> </td> </tr><tr> <td id="d2h-978790-2726" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2726"> <div class="line-num1"></div> <div class="line-num2">1</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># frozen_string_literal: true</span> </div> </td> </tr><tr> <td id="d2h-978790-2737" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2737"> <div class="line-num1"></div> <div class="line-num2">2</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-2748" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2748"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require &#x27;net&#x2F;http&#x27;</span> </div> </td> </tr><tr> <td id="d2h-978790-2759" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2759"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-2770" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2770"> <div class="line-num1"></div> <div class="line-num2">5</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">module Tcat</span> </div> </td> </tr><tr> <td id="d2h-978790-2781" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2781"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> class HttpClient</span> </div> </td> </tr><tr> <td id="d2h-978790-2792" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2792"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> DEFAULT_HEADERS = {</span> </div> </td> </tr><tr> <td id="d2h-978790-2803" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2803"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> &#x27;User-Agent&#x27; =&gt; &#x27;BlackCat&#x2F;2.49 (iPhone; iOS 17.6.1; Scale&#x2F;3.00)&#x27;,</span> </div> </td> </tr><tr> <td id="d2h-978790-2814" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2814"> <div class="line-num1"></div> <div class="line-num2">9</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> &#x27;Accept-Language&#x27; =&gt; &#x27;zh-Hant-TW;q=1, en-TW;q=0.9&#x27;,</span> </div> </td> </tr><tr> <td id="d2h-978790-2825" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2825"> <div class="line-num1"></div> <div class="line-num2">10</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> &#x27;Cookie&#x27; =&gt; &#x27;citrix_ns_id=AAE7go4rZDusCRcEAAAAADuVBLGLdqo1FolMO02r_jOEnjNmr4u9sIYwtllmmfsOOw==KJArZA==AQJLxyeLYOXPo3Uzfh_rWrr_NcU=; ASP.NET_SessionId=p4v1z4nijrynbortgf4iqml4&#x27;</span> </div> </td> </tr><tr> <td id="d2h-978790-2836" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2836"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> }.freeze</span> </div> </td> </tr><tr> <td id="d2h-978790-2847" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2847"> <div class="line-num1"></div> <div class="line-num2">12</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-2858" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2858"> <div class="line-num1"></div> <div class="line-num2">13</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> API_ENDPOINT = &#x27;https:&#x2F;&#x2F;www.t-cat.com.tw&#x2F;iPhone&#x2F;TCatApp.aspx&#x27;</span> </div> </td> </tr><tr> <td id="d2h-978790-2869" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2869"> <div class="line-num1"></div> <div class="line-num2">14</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> API_VERSION = &#x27;24.26&#x27;</span> </div> </td> </tr><tr> <td id="d2h-978790-2880" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2880"> <div class="line-num1"></div> <div class="line-num2">15</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-2891" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2891"> <div class="line-num1"></div> <div class="line-num2">16</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> class RequestError &lt; StandardError; end</span> </div> </td> </tr><tr> <td id="d2h-978790-2902" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2902"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-2913" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2913"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def initialize(timeout: 30)</span> </div> </td> </tr><tr> <td id="d2h-978790-2924" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2924"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @timeout = timeout</span> </div> </td> </tr><tr> <td id="d2h-978790-2935" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2935"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-978790-2946" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2946"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-2957" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2957"> <div class="line-num1"></div> <div class="line-num2">22</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def post(params)</span> </div> </td> </tr><tr> <td id="d2h-978790-2968" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2968"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> uri = URI(&quot;#{API_ENDPOINT}?ver=#{API_VERSION}&quot;)</span> </div> </td> </tr><tr> <td id="d2h-978790-2979" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2979"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> http = setup_http_client(uri)</span> </div> </td> </tr><tr> <td id="d2h-978790-2990" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-2990"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> </span> </div> </td> </tr><tr> <td id="d2h-978790-3001" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3001"> <div class="line-num1"></div> <div class="line-num2">26</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> request = Net::HTTP::Post.new(uri)</span> </div> </td> </tr><tr> <td id="d2h-978790-3012" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3012"> <div class="line-num1"></div> <div class="line-num2">27</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> DEFAULT_HEADERS.each { |key, value| request[key] = value }</span> </div> </td> </tr><tr> <td id="d2h-978790-3023" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3023"> <div class="line-num1"></div> <div class="line-num2">28</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> request.body = URI.encode_www_form(params)</span> </div> </td> </tr><tr> <td id="d2h-978790-3034" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3034"> <div class="line-num1"></div> <div class="line-num2">29</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-3045" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3045"> <div class="line-num1"></div> <div class="line-num2">30</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> handle_response(http.request(request))</span> </div> </td> </tr><tr> <td id="d2h-978790-3056" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3056"> <div class="line-num1"></div> <div class="line-num2">31</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> rescue Net::ReadTimeout, Net::OpenTimeout =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-978790-3067" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3067"> <div class="line-num1"></div> <div class="line-num2">32</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise RequestError, &quot;Request timeout: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-978790-3078" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3078"> <div class="line-num1"></div> <div class="line-num2">33</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> rescue SocketError, Net::HTTPError =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-978790-3089" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3089"> <div class="line-num1"></div> <div class="line-num2">34</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise RequestError, &quot;Network error: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-978790-3100" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3100"> <div class="line-num1"></div> <div class="line-num2">35</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> rescue StandardError =&gt; e</span> </div> </td> </tr><tr> <td id="d2h-978790-3111" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3111"> <div class="line-num1"></div> <div class="line-num2">36</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise RequestError, &quot;Unexpected error: #{e.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-978790-3122" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3122"> <div class="line-num1"></div> <div class="line-num2">37</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-978790-3133" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3133"> <div class="line-num1"></div> <div class="line-num2">38</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-3144" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3144"> <div class="line-num1"></div> <div class="line-num2">39</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> private</span> </div> </td> </tr><tr> <td id="d2h-978790-3155" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3155"> <div class="line-num1"></div> <div class="line-num2">40</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-3166" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3166"> <div class="line-num1"></div> <div class="line-num2">41</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def setup_http_client(uri)</span> </div> </td> </tr><tr> <td id="d2h-978790-3177" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3177"> <div class="line-num1"></div> <div class="line-num2">42</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> http = Net::HTTP.new(uri.host, uri.port)</span> </div> </td> </tr><tr> <td id="d2h-978790-3188" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3188"> <div class="line-num1"></div> <div class="line-num2">43</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> http.use_ssl = true</span> </div> </td> </tr><tr> <td id="d2h-978790-3199" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3199"> <div class="line-num1"></div> <div class="line-num2">44</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> http.read_timeout = @timeout</span> </div> </td> </tr><tr> <td id="d2h-978790-3210" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3210"> <div class="line-num1"></div> <div class="line-num2">45</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> http.open_timeout = @timeout</span> </div> </td> </tr><tr> <td id="d2h-978790-3221" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3221"> <div class="line-num1"></div> <div class="line-num2">46</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> http</span> </div> </td> </tr><tr> <td id="d2h-978790-3232" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3232"> <div class="line-num1"></div> <div class="line-num2">47</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-978790-3243" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3243"> <div class="line-num1"></div> <div class="line-num2">48</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-978790-3254" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3254"> <div class="line-num1"></div> <div class="line-num2">49</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def handle_response(response)</span> </div> </td> </tr><tr> <td id="d2h-978790-3265" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3265"> <div class="line-num1"></div> <div class="line-num2">50</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> case response</span> </div> </td> </tr><tr> <td id="d2h-978790-3276" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3276"> <div class="line-num1"></div> <div class="line-num2">51</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> when Net::HTTPSuccess</span> </div> </td> </tr><tr> <td id="d2h-978790-3287" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3287"> <div class="line-num1"></div> <div class="line-num2">52</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> response.body</span> </div> </td> </tr><tr> <td id="d2h-978790-3298" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3298"> <div class="line-num1"></div> <div class="line-num2">53</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> when Net::HTTPRedirection</span> </div> </td> </tr><tr> <td id="d2h-978790-3309" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3309"> <div class="line-num1"></div> <div class="line-num2">54</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise RequestError, &quot;Unexpected redirect to #{response[&#x27;location&#x27;]}&quot;</span> </div> </td> </tr><tr> <td id="d2h-978790-3320" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3320"> <div class="line-num1"></div> <div class="line-num2">55</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-978790-3331" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3331"> <div class="line-num1"></div> <div class="line-num2">56</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise RequestError, &quot;HTTP #{response.code}: #{response.message}&quot;</span> </div> </td> </tr><tr> <td id="d2h-978790-3342" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3342"> <div class="line-num1"></div> <div class="line-num2">57</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-978790-3353" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3353"> <div class="line-num1"></div> <div class="line-num2">58</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-978790-3364" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3364"> <div class="line-num1"></div> <div class="line-num2">59</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-978790-3375" class="d2h-code-linenumber d2h-ins"><a href="#d2h-978790-3375"> <div class="line-num1"></div> <div class="line-num2">60</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-062220" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-062220">data/lib/tcat/query.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -3,8 +3,11 @@</div> </td> </tr><tr> <td id="d2h-062220-3413" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3413"> <div class="line-num1">3</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">require &#x27;net&#x2F;http&#x27;</span> </div> </td> </tr><tr> <td id="d2h-062220-3424" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3424"> <div class="line-num1">4</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">require &#x27;base64&#x27;</span> </div> </td> </tr><tr> <td id="d2h-062220-3435" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3435"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">require &#x27;ox&#x27;</span> </div> </td> </tr><tr> <td id="d2h-062220-3446" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-3446"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require_relative &#x27;http_client&#x27;</span> </div> </td> </tr><tr> <td id="d2h-062220-3457" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-3457"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require_relative &#x27;encryption_service&#x27;</span> </div> </td> </tr><tr> <td id="d2h-062220-3468" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3468"> <div class="line-num1">6</div> <div class="line-num2">8</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3479" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3479"> <div class="line-num1">7</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module Tcat</span> </div> </td> </tr><tr> <td id="d2h-062220-3490" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-3490"> <div class="line-num1"></div> <div class="line-num2">10</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Query class handles making requests to the Tcat system</span> </div> </td> </tr><tr> <td id="d2h-062220-3501" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3501"> <div class="line-num1">8</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class Query</span> </div> </td> </tr><tr> <td id="d2h-062220-3512" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3512"> <div class="line-num1">9</div> <div class="line-num2">12</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def initialize(tracking_number)</span> </div> </td> </tr><tr> <td id="d2h-062220-3523" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3523"> <div class="line-num1">10</div> <div class="line-num2">13</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @secret_string = Tcat.configuration.secret_string</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -12,27 +15,23 @@ module Tcat</div> </td> </tr><tr> <td id="d2h-062220-3540" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3540"> <div class="line-num1">12</div> <div class="line-num2">15</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> validate_secrets!</span> </div> </td> </tr><tr> <td id="d2h-062220-3551" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3551"> <div class="line-num1">13</div> <div class="line-num2">16</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3562" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3562"> <div class="line-num1">14</div> <div class="line-num2">17</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @tracking_number = tracking_number</span> </div> </td> </tr><tr> <td id="d2h-062220-3573" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-3573"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @http_client = HttpClient.new</span> </div> </td> </tr><tr> <td id="d2h-062220-3584" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-3584"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @encryption_service = EncryptionService.new(@secret_key)</span> </div> </td> </tr><tr> <td id="d2h-062220-3595" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3595"> <div class="line-num1">15</div> <div class="line-num2">20</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-3606" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3606"> <div class="line-num1">16</div> <div class="line-num2">21</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3617" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3617"> <div class="line-num1">17</div> <div class="line-num2">22</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def perform</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">18</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>cookies</del> = <del>&#x27;citrix_ns_id=AAE7go4rZDusCRcEAAAAADuVBLGLdqo1FolMO02r_jOEnjNmr4u9sIYwtllmmfsOOw==KJArZA==AQJLxyeLYOXPo3Uzfh_rWrr_NcU=; ASP</del>.<del>NET_SessionId=p4v1z4nijrynbortgf4iqml4&#x27;</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">19</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>ua = &#x27;BlackCat&#x2F;2.49 </del>(<del>iPhone;</del> <del>iOS</del> <del>17.6.1; Scale&#x2F;3.00)&#x27;</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">20</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> headers</del> <del>=</del> <del>{</del> <del>&#x27;User-Agent&#x27;: ua, &#x27;Accept-Language&#x27;: &#x27;zh-Hant-TW;q=1, en-TW;q=0.9&#x27;, Cookie: cookies }</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">21</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>uri</del> <del>=</del> <del>URI(&#x27;https:&#x2F;&#x2F;www.t-cat.com.tw&#x2F;iPhone&#x2F;TCatApp.aspx?ver=24.26&#x27;)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">22</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3683" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-3683"> <div class="line-num1">23</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> http = Net::HTTP.new(uri.host, uri.port)</span> </div> </td> </tr><tr> <td id="d2h-062220-3694" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-3694"> <div class="line-num1">24</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> http.use_ssl = true</span> </div> </td> </tr><tr> <td id="d2h-062220-3705" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-3705"> <div class="line-num1">25</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> body = URI.encode_www_form(data)</span> </div> </td> </tr><tr> <td id="d2h-062220-3716" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-3716"> <div class="line-num1">26</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> response = Net::HTTP.post(uri, body, headers)</span> </div> </td> </tr><tr> <td id="d2h-062220-3727" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-3727"> <div class="line-num1">27</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3738" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-3738"> <div class="line-num1">28</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> parse_response(response.body) if response.code == &#x27;200&#x27;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>response_body</ins> = <ins>@http_client</ins>.<ins>post(data)</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>parse_response</ins>(<ins>response_body)</ins> <ins>if</ins> <ins>response_body</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> rescue</ins> <ins>HttpClient::RequestError</ins> <ins>=&gt;</ins> <ins>e</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">26</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>#</ins> <ins>Log</ins> <ins>error or handle it appropriately</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">27</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> nil</ins></span> </div> </td> </tr><tr> <td id="d2h-062220-3804" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3804"> <div class="line-num1">29</div> <div class="line-num2">28</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-3815" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3815"> <div class="line-num1">30</div> <div class="line-num2">29</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3826" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3826"> <div class="line-num1">31</div> <div class="line-num2">30</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> private</span> </div> </td> </tr><tr> <td id="d2h-062220-3837" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3837"> <div class="line-num1">32</div> <div class="line-num2">31</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3848" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3848"> <div class="line-num1">33</div> <div class="line-num2">32</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def validate_secrets!</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">34</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> raise ArgumentError, <del>&quot;</del>SECRET_STRING must be configured<del>&quot;</del> if @secret_string.nil? || @secret_string.empty?</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">35</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> raise ArgumentError, <del>&quot;</del>SECRET_KEY must be configured<del>&quot;</del> if @secret_key.nil? || @secret_key.empty?</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">33</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise ArgumentError, <ins>&#x27;</ins>SECRET_STRING must be configured<ins>&#x27;</ins> if @secret_string.nil? || @secret_string.empty?</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">34</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise ArgumentError, <ins>&#x27;</ins>SECRET_KEY must be configured<ins>&#x27;</ins> if @secret_key.nil? || @secret_key.empty?</span> </div> </td> </tr><tr> <td id="d2h-062220-3903" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3903"> <div class="line-num1">36</div> <div class="line-num2">35</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-3914" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3914"> <div class="line-num1">37</div> <div class="line-num2">36</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-3925" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3925"> <div class="line-num1">38</div> <div class="line-num2">37</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def data</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -40,14 +39,13 @@ module Tcat</div> </td> </tr><tr> <td id="d2h-062220-3942" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3942"> <div class="line-num1">40</div> <div class="line-num2">39</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> ConsignmentNo: @tracking_number,</span> </div> </td> </tr><tr> <td id="d2h-062220-3953" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3953"> <div class="line-num1">41</div> <div class="line-num2">40</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> f: 5,</span> </div> </td> </tr><tr> <td id="d2h-062220-3964" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3964"> <div class="line-num1">42</div> <div class="line-num2">41</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> isForeign: &#x27;N&#x27;,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">43</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> secret: <del>secret</del>,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">42</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> secret: <ins>generate_secret</ins>,</span> </div> </td> </tr><tr> <td id="d2h-062220-3997" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-3997"> <div class="line-num1">44</div> <div class="line-num2">43</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> SVC: &#x27;TCATAPP&#x27;</span> </div> </td> </tr><tr> <td id="d2h-062220-4008" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4008"> <div class="line-num1">45</div> <div class="line-num2">44</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> }</span> </div> </td> </tr><tr> <td id="d2h-062220-4019" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4019"> <div class="line-num1">46</div> <div class="line-num2">45</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4030" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4030"> <div class="line-num1">47</div> <div class="line-num2">46</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4041" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4041"> <div class="line-num1">48</div> <div class="line-num2">47</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def date_string</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">49</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>date = </del>Time.now.utc</span> </div> </td> </tr><tr> <td id="d2h-062220-4063" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4063"> <div class="line-num1">50</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> date.strftime(&#x27;%Y%m%d%H%M%S&#x27;)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">48</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> Time.now.utc<ins>.strftime(&#x27;%Y%m%d%H%M%S&#x27;)</ins></span> </div> </td> </tr><tr> <td id="d2h-062220-4085" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4085"> <div class="line-num1">51</div> <div class="line-num2">49</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4096" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4096"> <div class="line-num1">52</div> <div class="line-num2">50</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4107" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4107"> <div class="line-num1">53</div> <div class="line-num2">51</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def random</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -58,44 +56,51 @@ module Tcat</div> </td> </tr><tr> <td id="d2h-062220-4124" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4124"> <div class="line-num1">58</div> <div class="line-num2">56</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> random + @secret_string + date_string</span> </div> </td> </tr><tr> <td id="d2h-062220-4135" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4135"> <div class="line-num1">59</div> <div class="line-num2">57</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4146" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4146"> <div class="line-num1">60</div> <div class="line-num2">58</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">61</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def <del>secret</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">62</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>cipher = OpenSSL::Cipher</del>.<del>new</del>(<del>&#x27;AES-128-ECB&#x27;</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">63</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> cipher.encrypt</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">64</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>cipher.key</del> <del>=</del> <del>@secret_key</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">65</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4212" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4212"> <div class="line-num1">66</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> block_size = cipher.block_size</span> </div> </td> </tr><tr> <td id="d2h-062220-4223" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4223"> <div class="line-num1">67</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> padding_size = block_size - (source_string.length % block_size)</span> </div> </td> </tr><tr> <td id="d2h-062220-4234" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4234"> <div class="line-num1">68</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> padding = padding_size.chr * padding_size</span> </div> </td> </tr><tr> <td id="d2h-062220-4245" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4245"> <div class="line-num1">69</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> padded_message = source_string + padding</span> </div> </td> </tr><tr> <td id="d2h-062220-4256" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4256"> <div class="line-num1">70</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4267" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4267"> <div class="line-num1">71</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> encrypted = cipher.update(padded_message)</span> </div> </td> </tr><tr> <td id="d2h-062220-4278" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4278"> <div class="line-num1">72</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> Base64.strict_encode64(encrypted)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">59</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def <ins>generate_secret</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">60</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>@encryption_service</ins>.<ins>encrypt</ins>(<ins>source_string</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">61</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> rescue EncryptionService::EncryptionError =&gt; e</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">62</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>#</ins> <ins>Log</ins> <ins>error or handle it appropriately</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">63</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> raise &quot;Failed to generate secret: #{e.message}&quot;</ins></span> </div> </td> </tr><tr> <td id="d2h-062220-4344" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4344"> <div class="line-num1">73</div> <div class="line-num2">64</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4355" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4355"> <div class="line-num1">74</div> <div class="line-num2">65</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4366" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4366"> <div class="line-num1">75</div> <div class="line-num2">66</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def parse_response(xml)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">76</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>result = Ox.load(xml, mode: :hash, with_cdata: true)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">77</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">78</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> </del>return <del>if</del> result<del>[</del>:Result<del>][</del>:Status<del>]</del> <del>!=</del> &#x27;0&#x27;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">79</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">80</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> statuses</del> =</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">81</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>if</del> <del>result[:Result][:Content][:Item].is_a?</del>(<del>Hash</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">82</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> [result[:Result][:Content][:Item][:Status].force_encoding(&#x27;UTF-8&#x27;)]</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">83</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>elsif result[:Result][:Content][:Item]</del>.<del>is_a?(Array</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">84</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> result[:Result][:Content][:Item].map</del> <del>do</del> <del>|item|</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">85</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> item[:Status]</del>.<del>force_encoding</del>(<del>&#x27;UTF</del>-<del>8&#x27;</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">86</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> end</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">87</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> </del>end</span> </div> </td> </tr><tr> <td id="d2h-062220-4509" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4509"> <div class="line-num1">88</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> parse_status_message(statuses.uniq)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">67</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>begin</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">68</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> result = Ox.load(xml, mode: :hash, with_cdata: true)</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">69</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> </ins>return <ins>:error</ins> <ins>unless </ins>result<ins>.dig(</ins>:Result<ins>, </ins>:Status<ins>)</ins> <ins>==</ins> &#x27;0&#x27;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">70</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">71</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> delivery_items</ins> =<ins> result.dig(:Result, :Content, :Item)</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">72</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>delivery_statuses</ins> <ins>= extract_delivery_statuses</ins>(<ins>delivery_items</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">73</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> </ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">74</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>parse_status_message(delivery_statuses</ins>.<ins>uniq</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">75</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> rescue</ins> <ins>StandardError</ins> <ins>=&gt; e</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">76</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> Rails</ins>.<ins>logger.error</ins>(<ins>&quot;Error parsing T</ins>-<ins>Cat response: #{e.message}&quot;</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">77</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> :error</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">78</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> </ins>end</span> </div> </td> </tr><tr> <td id="d2h-062220-4652" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4652"> <div class="line-num1">89</div> <div class="line-num2">79</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4663" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4663"> <div class="line-num1">90</div> <div class="line-num2">80</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4674" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4674"> <div class="line-num1"></div> <div class="line-num2">81</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def extract_delivery_statuses(items)</span> </div> </td> </tr><tr> <td id="d2h-062220-4685" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4685"> <div class="line-num1"></div> <div class="line-num2">82</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> case items</span> </div> </td> </tr><tr> <td id="d2h-062220-4696" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4696"> <div class="line-num1"></div> <div class="line-num2">83</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> when Hash</span> </div> </td> </tr><tr> <td id="d2h-062220-4707" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4707"> <div class="line-num1"></div> <div class="line-num2">84</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> [items[:Status].force_encoding(&#x27;UTF-8&#x27;)]</span> </div> </td> </tr><tr> <td id="d2h-062220-4718" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4718"> <div class="line-num1"></div> <div class="line-num2">85</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> when Array</span> </div> </td> </tr><tr> <td id="d2h-062220-4729" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4729"> <div class="line-num1"></div> <div class="line-num2">86</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> items.map { |item| item[:Status].force_encoding(&#x27;UTF-8&#x27;) }</span> </div> </td> </tr><tr> <td id="d2h-062220-4740" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4740"> <div class="line-num1"></div> <div class="line-num2">87</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-062220-4751" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4751"> <div class="line-num1"></div> <div class="line-num2">88</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> []</span> </div> </td> </tr><tr> <td id="d2h-062220-4762" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4762"> <div class="line-num1"></div> <div class="line-num2">89</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4773" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4773"> <div class="line-num1"></div> <div class="line-num2">90</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4784" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4784"> <div class="line-num1"></div> <div class="line-num2">91</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4795" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4795"> <div class="line-num1"></div> <div class="line-num2">92</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> STATUS_MAPPINGS = {</span> </div> </td> </tr><tr> <td id="d2h-062220-4806" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4806"> <div class="line-num1"></div> <div class="line-num2">93</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> &#x27;順利送達&#x27; =&gt; :done,</span> </div> </td> </tr><tr> <td id="d2h-062220-4817" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4817"> <div class="line-num1"></div> <div class="line-num2">94</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> &#x27;配送中&#x27; =&gt; :delivering,</span> </div> </td> </tr><tr> <td id="d2h-062220-4828" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4828"> <div class="line-num1"></div> <div class="line-num2">95</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> &#x27;已集貨&#x27; =&gt; :collected,</span> </div> </td> </tr><tr> <td id="d2h-062220-4839" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4839"> <div class="line-num1"></div> <div class="line-num2">96</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> &#x27;轉運中&#x27; =&gt; :in_transit</span> </div> </td> </tr><tr> <td id="d2h-062220-4850" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4850"> <div class="line-num1"></div> <div class="line-num2">97</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> }.freeze</span> </div> </td> </tr><tr> <td id="d2h-062220-4861" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4861"> <div class="line-num1"></div> <div class="line-num2">98</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-062220-4872" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4872"> <div class="line-num1">91</div> <div class="line-num2">99</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def parse_status_message(statuses)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">92</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>if</del> <del>&#x27;順利送達&#x27;.in?(statuses)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">93</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>:done</del></span> </div> </td> </tr><tr> <td id="d2h-062220-4905" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4905"> <div class="line-num1">94</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> elsif &#x27;配送中&#x27;.in?(statuses)</span> </div> </td> </tr><tr> <td id="d2h-062220-4916" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4916"> <div class="line-num1">95</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> :delivering</span> </div> </td> </tr><tr> <td id="d2h-062220-4927" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4927"> <div class="line-num1">96</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> elsif &#x27;已集貨&#x27;.in?(statuses)</span> </div> </td> </tr><tr> <td id="d2h-062220-4938" class="d2h-code-linenumber d2h-del"><a href="#d2h-062220-4938"> <div class="line-num1">97</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> :collected</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">100</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>STATUS_MAPPINGS.each</ins> <ins>do |status_text, status_symbol|</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">101</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>return status_symbol if statuses.include?(status_text)</ins></span> </div> </td> </tr><tr> <td id="d2h-062220-4971" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4971"> <div class="line-num1">98</div> <div class="line-num2">102</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-4982" class="d2h-code-linenumber d2h-ins"><a href="#d2h-062220-4982"> <div class="line-num1"></div> <div class="line-num2">103</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> :unknown</span> </div> </td> </tr><tr> <td id="d2h-062220-4993" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-4993"> <div class="line-num1">99</div> <div class="line-num2">104</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-5004" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-5004"> <div class="line-num1">100</div> <div class="line-num2">105</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-062220-5015" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-062220-5015"> <div class="line-num1">101</div> <div class="line-num2">106</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-487196" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-487196">data/lib/tcat/version.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,5 +1,5 @@</div> </td> </tr><tr> <td id="d2h-487196-5053" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-487196-5053"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># frozen_string_literal: true</span> </div> </td> </tr><tr> <td id="d2h-487196-5064" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-487196-5064"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-487196-5075" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-487196-5075"> <div class="line-num1">3</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module Tcat</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">4</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> VERSION = &#x27;0.1.<del>4</del>&#x27;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> VERSION = &#x27;0.1.<ins>6</ins>&#x27;</span> </div> </td> </tr><tr> <td id="d2h-487196-5108" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-487196-5108"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-653939" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-653939">data/lib/tcat.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -4,6 +4,7 @@ require &#x27;tcat&#x2F;configuration&#x27;</div> </td> </tr><tr> <td id="d2h-653939-5146" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-653939-5146"> <div class="line-num1">4</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">require_relative &#x27;tcat&#x2F;version&#x27;</span> </div> </td> </tr><tr> <td id="d2h-653939-5157" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-653939-5157"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">require_relative &#x27;tcat&#x2F;query&#x27;</span> </div> </td> </tr><tr> <td id="d2h-653939-5168" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-653939-5168"> <div class="line-num1">6</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-653939-5179" class="d2h-code-linenumber d2h-ins"><a href="#d2h-653939-5179"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># Tcat module provides functionality for tracking packages</span> </div> </td> </tr><tr> <td id="d2h-653939-5190" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-653939-5190"> <div class="line-num1">7</div> <div class="line-num2">8</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module Tcat</span> </div> </td> </tr><tr> <td id="d2h-653939-5201" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-653939-5201"> <div class="line-num1">8</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class &lt;&lt; self</span> </div> </td> </tr><tr> <td id="d2h-653939-5212" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-653939-5212"> <div class="line-num1">9</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> attr_writer :configuration</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-004177" class="d2h-file-wrapper" data-lang=""> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-004177">metadata</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,14 +1,14 @@</div> </td> </tr><tr> <td id="d2h-004177-5250" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5250"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">--- !ruby&#x2F;object:Gem::Specification</span> </div> </td> </tr><tr> <td id="d2h-004177-5261" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5261"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">name: tcat</span> </div> </td> </tr><tr> <td id="d2h-004177-5272" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5272"> <div class="line-num1">3</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">version: !ruby&#x2F;object:Gem::Version</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">4</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> version: 0.1.<del>4</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> version: 0.1.<ins>6</ins></span> </div> </td> </tr><tr> <td id="d2h-004177-5305" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5305"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">platform: ruby</span> </div> </td> </tr><tr> <td id="d2h-004177-5316" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5316"> <div class="line-num1">6</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">authors:</span> </div> </td> </tr><tr> <td id="d2h-004177-5327" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5327"> <div class="line-num1">7</div> <div class="line-num2">7</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- Zac</span> </div> </td> </tr><tr> <td id="d2h-004177-5338" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5338"> <div class="line-num1">8</div> <div class="line-num2">8</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">autorequire: </span> </div> </td> </tr><tr> <td id="d2h-004177-5349" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5349"> <div class="line-num1">9</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">bindir: exe</span> </div> </td> </tr><tr> <td id="d2h-004177-5360" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5360"> <div class="line-num1">10</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">cert_chain: []</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">11</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">date: 2024-<del>09</del>-<del>02</del> 00:00:00.000000000 Z</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">date: 2024-<ins>11</ins>-<ins>19</ins> 00:00:00.000000000 Z</span> </div> </td> </tr><tr> <td id="d2h-004177-5393" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5393"> <div class="line-num1">12</div> <div class="line-num2">12</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">dependencies:</span> </div> </td> </tr><tr> <td id="d2h-004177-5404" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5404"> <div class="line-num1">13</div> <div class="line-num2">13</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- !ruby&#x2F;object:Gem::Dependency</span> </div> </td> </tr><tr> <td id="d2h-004177-5415" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5415"> <div class="line-num1">14</div> <div class="line-num2">14</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> name: ox</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -55,6 +55,8 @@ files:</div> </td> </tr><tr> <td id="d2h-004177-5432" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5432"> <div class="line-num1">55</div> <div class="line-num2">55</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- Rakefile</span> </div> </td> </tr><tr> <td id="d2h-004177-5443" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5443"> <div class="line-num1">56</div> <div class="line-num2">56</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- lib&#x2F;tcat.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-5454" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5454"> <div class="line-num1">57</div> <div class="line-num2">57</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- lib&#x2F;tcat&#x2F;configuration.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-5465" class="d2h-code-linenumber d2h-ins"><a href="#d2h-004177-5465"> <div class="line-num1"></div> <div class="line-num2">58</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- lib&#x2F;tcat&#x2F;encryption_service.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-5476" class="d2h-code-linenumber d2h-ins"><a href="#d2h-004177-5476"> <div class="line-num1"></div> <div class="line-num2">59</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- lib&#x2F;tcat&#x2F;http_client.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-5487" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5487"> <div class="line-num1">58</div> <div class="line-num2">60</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- lib&#x2F;tcat&#x2F;query.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-5498" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5498"> <div class="line-num1">59</div> <div class="line-num2">61</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- lib&#x2F;tcat&#x2F;version.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-5509" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5509"> <div class="line-num1">60</div> <div class="line-num2">62</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">- sig&#x2F;tcat.rbs</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -78,7 +80,7 @@ required_rubygems_version: !ruby&#x2F;object:Gem::Requirement</div> </td> </tr><tr> <td id="d2h-004177-5526" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5526"> <div class="line-num1">78</div> <div class="line-num2">80</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> - !ruby&#x2F;object:Gem::Version</span> </div> </td> </tr><tr> <td id="d2h-004177-5537" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5537"> <div class="line-num1">79</div> <div class="line-num2">81</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> version: &#x27;0&#x27;</span> </div> </td> </tr><tr> <td id="d2h-004177-5548" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5548"> <div class="line-num1">80</div> <div class="line-num2">82</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">requirements: []</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">81</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">rubygems_version: 3.5.<del>11</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">83</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">rubygems_version: 3.5.<ins>22</ins></span> </div> </td> </tr><tr> <td id="d2h-004177-5581" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5581"> <div class="line-num1">82</div> <div class="line-num2">84</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">signing_key: </span> </div> </td> </tr><tr> <td id="d2h-004177-5592" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5592"> <div class="line-num1">83</div> <div class="line-num2">85</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">specification_version: 4</span> </div> </td> </tr><tr> <td id="d2h-004177-5603" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-5603"> <div class="line-num1">84</div> <div class="line-num2">86</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">summary: A Ruby gem for tracking packages using the Tcat system.</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> </div> </div> <footer class='sticky-footer mt-3'> <div class='container text-center mb-3 copyright'> <a class='mr-4 text-gray-600' href='mailto:diffend@whitesourcesoftware.com'> Contact Us </a> <a class='mr-4 text-gray-600' href='https://www.whitesourcesoftware.com/terms-of-service/'> Terms of Service </a> <a class='mr-4 text-gray-600' href='https://www.whitesourcesoftware.com/privacy-policy/'> Privacy Policy </a> <a class='mr-4 text-gray-600' href='https://diffend.io/docs'> Docs </a> </div> <div class='container mt-4'> <div class='copyright text-center'> Copyright © 2024 Mend Software </div> </div> </footer> </div> </div> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10