turksatkablo_cli 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/README.md +9 -4
- data/bin/turksatkablo +6 -8
- data/lib/init/poltergeist.rb +0 -4
- data/lib/turksatkablo_cli.rb +0 -2
- data/lib/turksatkablo_cli/online_operations/agent.rb +1 -1
- data/lib/turksatkablo_cli/online_operations/auth.rb +0 -1
- data/lib/turksatkablo_cli/online_operations/cli.rb +1 -1
- data/lib/turksatkablo_cli/online_operations/enums.rb +2 -0
- data/lib/turksatkablo_cli/online_operations/helpers.rb +26 -6
- data/lib/turksatkablo_cli/online_operations/version.rb +1 -1
- data/spec/helper_spec.rb +23 -0
- data/spec/spec_helper.rb +24 -0
- data/turksatkablo_cli.gemspec +2 -2
- metadata +20 -17
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b19ab32c3aae669255dfdf8167dfd170b2c615f0
         | 
| 4 | 
            +
              data.tar.gz: 7b6fa7332994494a2a18dfa0516d66dcd93e7e55
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 706d9059ccddc262168fae94f222897c680112daefde5d868a00e7ad37dd3c14b2fca65491e957f4d602c1b38b67dfbe6e2e4cd4a74900073fe17d769b8c9f75
         | 
| 7 | 
            +
              data.tar.gz: c7bfac791558500ea4f8039949ee0e2554e4ef131d5d38066d806da93aaf12c80f0a119192342db31a85c912f48edb454d87407a0d0af638a2605c1fcaaf213c
         | 
    
        data/.rspec
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            --require spec_helper
         | 
    
        data/README.md
    CHANGED
    
    | @@ -11,7 +11,7 @@ A command-line interface for the Turksat Kablo Online Islemler - https://online. | |
| 11 11 |  | 
| 12 12 | 
             
            ## Setup
         | 
| 13 13 |  | 
| 14 | 
            -
            turksatkablo_cli is built with Ruby, so you'll need a working Ruby 2. | 
| 14 | 
            +
            turksatkablo_cli is built with Ruby, so you'll need a working Ruby 2.2.0>= environment to use it. You can find Ruby installation instructions [here](https://www.ruby-lang.org/en/installation/).
         | 
| 15 15 |  | 
| 16 16 |  | 
| 17 17 | 
             
            1. Install via rubygems
         | 
| @@ -41,14 +41,19 @@ turksatkablo musterino       # Müşteri no - kısa kodu mn | |
| 41 41 | 
             
            turksatkablo ozet            # Hizmetler genel durum - kısa kodu o
         | 
| 42 42 | 
             
            ```
         | 
| 43 43 |  | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
            + 0.1.4 – Fix retry_authenticate and authenticated? methods | 
| 44 | 
            +
            ## Changelog
         | 
| 45 | 
            +
            + 0.2.0 – Add `RSpec` and `environment` tests, required `ruby` version updated (2.2.0 >=), `nokogiri` version updated (has a known critical severity security vulnerability in version range < 1.8.1)
         | 
| 46 | 
            +
            + 0.1.4 – Fix retry_authenticate and authenticated? methods (login details could not be saved after the retry_authenticate method)
         | 
| 47 47 | 
             
            + 0.1.3 – Modernize multiple classes, add `ozet`, `hizmetler`, `musterino`, `kampanya`, `anlikborc` commands
         | 
| 48 48 | 
             
            + 0.1.2 – Modernize Agent and Auth classes, ability to save user's encrypted login details, add `kota` command.
         | 
| 49 49 | 
             
            + 0.1.1 – Build app skeleton, implement basic authentication
         | 
| 50 50 | 
             
            + 0.1.0 - Initial version.
         | 
| 51 51 |  | 
| 52 | 
            +
            ### Development
         | 
| 53 | 
            +
            ```bash
         | 
| 54 | 
            +
            bundle exec rspec -fd spec
         | 
| 55 | 
            +
            ```
         | 
| 56 | 
            +
             | 
| 52 57 | 
             
            ### Contributing
         | 
| 53 58 |  | 
| 54 59 | 
             
            turksatkablo_cli is open source, and contributions are very welcome!
         | 
    
        data/bin/turksatkablo
    CHANGED
    
    | @@ -1,13 +1,15 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 | 
             
            ## encoding: utf-8
         | 
| 3 3 |  | 
| 4 | 
            -
            if RUBY_VERSION < '2.1.0'
         | 
| 5 | 
            -
              abort "turksatkablo_cli requires Ruby 2.1.0 or higher"
         | 
| 6 | 
            -
            end
         | 
| 7 | 
            -
             | 
| 8 4 | 
             
            lib_dir = File.expand_path("../../lib", __FILE__)
         | 
| 9 5 | 
             
            $LOAD_PATH.unshift lib_dir if File.directory?(lib_dir)
         | 
| 10 6 |  | 
| 7 | 
            +
            require 'turksatkablo_cli/online_operations/helpers'
         | 
| 8 | 
            +
            require 'turksatkablo_cli/online_operations/enums'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            TurksatkabloCli::OnlineOperations::Helpers.check_ruby_version
         | 
| 11 | 
            +
            TurksatkabloCli::OnlineOperations::Helpers.check_is_installed?("phantomjs", TurksatkabloCli::OnlineOperations::Enums::PHANTOM_JS_REQUIRED)
         | 
| 12 | 
            +
             | 
| 11 13 | 
             
            require 'turksatkablo_cli'
         | 
| 12 14 |  | 
| 13 15 | 
             
            # catch control-c and exit
         | 
| @@ -20,11 +22,7 @@ end | |
| 20 22 | 
             
            at_exit{
         | 
| 21 23 | 
             
              # cleanup temp files
         | 
| 22 24 | 
             
              # close open connections
         | 
| 23 | 
            -
              begin
         | 
| 24 25 | 
             
                Capybara.current_session.driver.quit
         | 
| 25 | 
            -
              rescue Exception => e
         | 
| 26 | 
            -
                abort "turksatkablo_cli requires phantomjs https://github.com/rokumatsumoto/turksatkablo_cli#setup"
         | 
| 27 | 
            -
              end
         | 
| 28 26 | 
             
            }
         | 
| 29 27 |  | 
| 30 28 | 
             
            TurksatkabloCli.main
         | 
    
        data/lib/init/poltergeist.rb
    CHANGED
    
    | @@ -5,11 +5,7 @@ require 'capybara/poltergeist' | |
| 5 5 | 
             
            # See more options at https://github.com/teampoltergeist/poltergeist#customization
         | 
| 6 6 | 
             
            options = { js_errors: false, phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes'] }
         | 
| 7 7 | 
             
            Capybara.register_driver :poltergeist do |app|
         | 
| 8 | 
            -
              begin
         | 
| 9 8 | 
             
                Capybara::Poltergeist::Driver.new(app, options)
         | 
| 10 | 
            -
              rescue Exception => e
         | 
| 11 | 
            -
                abort "turksatkablo_cli requires phantomjs https://github.com/rokumatsumoto/turksatkablo_cli#setup"
         | 
| 12 | 
            -
              end
         | 
| 13 9 | 
             
            end
         | 
| 14 10 |  | 
| 15 11 | 
             
            # Configure Capybara to use Poltergeist as the driver
         | 
    
        data/lib/turksatkablo_cli.rb
    CHANGED
    
    
| @@ -5,7 +5,7 @@ module TurksatkabloCli | |
| 5 5 | 
             
                class Agent
         | 
| 6 6 | 
             
                  include Helpers
         | 
| 7 7 | 
             
                  attr_accessor :login_choose, :username, :password, :radio_btn_value,
         | 
| 8 | 
            -
                  :fail_login_attempt, :session, :has_logged_in | 
| 8 | 
            +
                  :fail_login_attempt, :session, :has_logged_in
         | 
| 9 9 |  | 
| 10 10 | 
             
                  def initialize
         | 
| 11 11 | 
             
                    @session =  Capybara::Session.new(:poltergeist)
         | 
| @@ -28,7 +28,7 @@ module TurksatkabloCli | |
| 28 28 | 
             
                  desc "kota", "Kalan kota - kısa kodu k"
         | 
| 29 29 | 
             
                  def kota
         | 
| 30 30 | 
             
                    if agent.authenticated?
         | 
| 31 | 
            -
                       | 
| 31 | 
            +
                      @session.find(:css, "div.circle-container div.toplam p").all("span, sub").map(&:text).each { |val| puts val }
         | 
| 32 32 | 
             
                    end
         | 
| 33 33 | 
             
                  end
         | 
| 34 34 | 
             
                  map "k" => "kota"
         | 
| @@ -22,6 +22,8 @@ module TurksatkabloCli | |
| 22 22 | 
             
                  define :KAMPANYA_ADI, "KAMPANYA ADI"
         | 
| 23 23 | 
             
                  define :TAAHHUT_BAS_TRH, "TAAHHÜT BAŞLANGIÇ TARİHİ"
         | 
| 24 24 | 
             
                  define :TAAHHUT_BIT_TRH, "TAAHHÜT BİTİŞ TARİHİ"
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  define :PHANTOM_JS_REQUIRED, "turksatkablo_cli requires phantomjs https://github.com/rokumatsumoto/turksatkablo_cli#setup"
         | 
| 25 27 | 
             
                end
         | 
| 26 28 | 
             
              end
         | 
| 27 29 | 
             
            end
         | 
| @@ -1,16 +1,10 @@ | |
| 1 1 | 
             
            require 'open3'
         | 
| 2 2 | 
             
            require 'net/ping'
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 5 4 | 
             
            module TurksatkabloCli
         | 
| 6 5 | 
             
              module OnlineOperations
         | 
| 7 6 | 
             
                module Helpers
         | 
| 8 7 |  | 
| 9 | 
            -
                  def run(*commands)
         | 
| 10 | 
            -
                    stdin, stdout, stderr, w = Open3.popen3(*commands)
         | 
| 11 | 
            -
                    [stdout.gets(nil), stderr.gets(nil), w.value]
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
             | 
| 14 8 | 
             
                  def internet_connection?
         | 
| 15 9 | 
             
                    begin
         | 
| 16 10 | 
             
                      Net::Ping::External.new("8.8.8.8").ping?
         | 
| @@ -41,6 +35,32 @@ module TurksatkabloCli | |
| 41 35 | 
             
                    puts "\n"
         | 
| 42 36 | 
             
                  end
         | 
| 43 37 |  | 
| 38 | 
            +
                  def self.check_ruby_version(ruby_version = RUBY_VERSION)
         | 
| 39 | 
            +
                    if ruby_version < '2.2.0'
         | 
| 40 | 
            +
                      abort "turksatkablo_cli requires Ruby 2.2.0 or higher"
         | 
| 41 | 
            +
                    else
         | 
| 42 | 
            +
                      ruby_version
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  def self.check_is_installed?(command, err_msg)
         | 
| 47 | 
            +
                    if which(command)
         | 
| 48 | 
            +
                      true
         | 
| 49 | 
            +
                    else
         | 
| 50 | 
            +
                      abort(err_msg)
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  def self.which(command)
         | 
| 55 | 
            +
                    exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
         | 
| 56 | 
            +
                    ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
         | 
| 57 | 
            +
                      exts.each { |ext|
         | 
| 58 | 
            +
                        exe = File.join(path, "#{command}#{ext}")
         | 
| 59 | 
            +
                        return exe if File.executable?(exe) && !File.directory?(exe)
         | 
| 60 | 
            +
                      }
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
                    return nil
         | 
| 63 | 
            +
                  end
         | 
| 44 64 |  | 
| 45 65 | 
             
                end
         | 
| 46 66 | 
             
              end
         | 
    
        data/spec/helper_spec.rb
    ADDED
    
    | @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            RSpec.describe "environment" do
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              it "ruby version is >= 2.2.0" do
         | 
| 4 | 
            +
                expect(TurksatkabloCli::OnlineOperations::Helpers.check_ruby_version("2.4.2")).to be >= "2.1.0"
         | 
| 5 | 
            +
              end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              it "ruby version is < 2.2.0" do
         | 
| 8 | 
            +
                expect { TurksatkabloCli::OnlineOperations::Helpers.check_ruby_version("2.1.0") }.to raise_error(SystemExit)
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              it "phantomjs needs to be in path" do
         | 
| 12 | 
            +
                expect(TurksatkabloCli::OnlineOperations::Helpers.check_is_installed?("phantomjs", TurksatkabloCli::OnlineOperations::Enums::PHANTOM_JS_REQUIRED)).to be_truthy
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              it "ruby is in path" do
         | 
| 16 | 
            +
                expect(TurksatkabloCli::OnlineOperations::Helpers.which("ruby")).to be_instance_of(String)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              it "phantom_jsx is not in path" do
         | 
| 20 | 
            +
                expect { TurksatkabloCli::OnlineOperations::Helpers.check_is_installed?("phantom_jsx", "phantom_jsx is not in path") }.to raise_error(SystemExit)
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | @@ -0,0 +1,24 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
             | 
| 3 | 
            +
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
         | 
| 4 | 
            +
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            require 'rspec'
         | 
| 7 | 
            +
            require 'turksatkablo_cli/online_operations/helpers'
         | 
| 8 | 
            +
            require 'turksatkablo_cli/online_operations/enums'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            module SpecHelper
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            RSpec.configure do |config|
         | 
| 14 | 
            +
              config.expect_with :rspec do |expectations|
         | 
| 15 | 
            +
                expectations.include_chain_clauses_in_custom_matcher_descriptions = true
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              config.mock_with :rspec do |mocks|
         | 
| 19 | 
            +
                mocks.verify_partial_doubles = true
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              config.shared_context_metadata_behavior = :apply_to_host_groups
         | 
| 23 | 
            +
              config.include(SpecHelper)
         | 
| 24 | 
            +
            end
         | 
    
        data/turksatkablo_cli.gemspec
    CHANGED
    
    | @@ -27,16 +27,16 @@ Gem::Specification.new do |spec| | |
| 27 27 | 
             
              #   f.match(%r{^(test|spec|features)/})
         | 
| 28 28 | 
             
              # end
         | 
| 29 29 |  | 
| 30 | 
            -
              spec.required_ruby_version = '>= 2. | 
| 30 | 
            +
              spec.required_ruby_version = '>= 2.2.0'
         | 
| 31 31 | 
             
              spec.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 32 32 | 
             
              spec.files         = `git ls-files`.split("\n")
         | 
| 33 33 | 
             
              spec.require_paths = ["lib"]
         | 
| 34 34 | 
             
              spec.add_development_dependency "bundler", "~> 1.16"
         | 
| 35 35 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 36 | 
            +
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 36 37 |  | 
| 37 38 | 
             
              spec.add_runtime_dependency "thor", '~> 0.20.0'
         | 
| 38 39 | 
             
              spec.add_runtime_dependency 'highline', '~> 1.7', '>= 1.7.8'
         | 
| 39 | 
            -
              spec.add_runtime_dependency 'nokogiri', '1.7.1'
         | 
| 40 40 | 
             
              spec.add_runtime_dependency 'rack', '1.6.8'
         | 
| 41 41 | 
             
              spec.add_runtime_dependency 'rack-test', '0.7.0'
         | 
| 42 42 | 
             
              spec.add_runtime_dependency 'net-ping', '~> 2.0', '>= 2.0.2'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: turksatkablo_cli
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Samet Gunaydin
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-12- | 
| 11 | 
            +
            date: 2017-12-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -38,6 +38,20 @@ dependencies: | |
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '10.0'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: rspec
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '3.0'
         | 
| 48 | 
            +
              type: :development
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '3.0'
         | 
| 41 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 56 | 
             
              name: thor
         | 
| 43 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -72,20 +86,6 @@ dependencies: | |
| 72 86 | 
             
                - - ">="
         | 
| 73 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 74 88 | 
             
                    version: 1.7.8
         | 
| 75 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 76 | 
            -
              name: nokogiri
         | 
| 77 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 78 | 
            -
                requirements:
         | 
| 79 | 
            -
                - - '='
         | 
| 80 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 81 | 
            -
                    version: 1.7.1
         | 
| 82 | 
            -
              type: :runtime
         | 
| 83 | 
            -
              prerelease: false
         | 
| 84 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 85 | 
            -
                requirements:
         | 
| 86 | 
            -
                - - '='
         | 
| 87 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 88 | 
            -
                    version: 1.7.1
         | 
| 89 89 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 90 90 | 
             
              name: rack
         | 
| 91 91 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -219,6 +219,7 @@ extensions: [] | |
| 219 219 | 
             
            extra_rdoc_files: []
         | 
| 220 220 | 
             
            files:
         | 
| 221 221 | 
             
            - ".gitignore"
         | 
| 222 | 
            +
            - ".rspec"
         | 
| 222 223 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 223 224 | 
             
            - Gemfile
         | 
| 224 225 | 
             
            - LICENSE.txt
         | 
| @@ -237,6 +238,8 @@ files: | |
| 237 238 | 
             
            - lib/turksatkablo_cli/online_operations/enums.rb
         | 
| 238 239 | 
             
            - lib/turksatkablo_cli/online_operations/helpers.rb
         | 
| 239 240 | 
             
            - lib/turksatkablo_cli/online_operations/version.rb
         | 
| 241 | 
            +
            - spec/helper_spec.rb
         | 
| 242 | 
            +
            - spec/spec_helper.rb
         | 
| 240 243 | 
             
            - turksatkablo_cli.gemspec
         | 
| 241 244 | 
             
            homepage: https://github.com/rokumatsumoto/turksatkablo_cli
         | 
| 242 245 | 
             
            licenses:
         | 
| @@ -251,7 +254,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 251 254 | 
             
              requirements:
         | 
| 252 255 | 
             
              - - ">="
         | 
| 253 256 | 
             
                - !ruby/object:Gem::Version
         | 
| 254 | 
            -
                  version: 2. | 
| 257 | 
            +
                  version: 2.2.0
         | 
| 255 258 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 256 259 | 
             
              requirements:
         | 
| 257 260 | 
             
              - - ">="
         |