smsforall 0.0.4 → 0.1.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.
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+ gem 'logger-colors'
5
+
data/bin/smsforall CHANGED
@@ -2,90 +2,128 @@
2
2
 
3
3
  require 'smsforall'
4
4
  require 'optparse'
5
+ require 'logger/colors'
5
6
 
6
- # Parameters parsing
7
- options = {}
8
-
9
- optparse = OptionParser.new do|opts|
10
- opts.banner = "Usage: smsforall (-l login -p password|--test) COMMAND [options] ..."
11
-
12
- opts.separator ""
13
- opts.separator "Commands"
14
- opts.separator " balance : get balance"
15
- opts.separator " send SENDER NUMBER TEXT : send SMS with TEXT to NUMBER"
16
- opts.separator " status TRANSACTION : get status of transaction"
17
- opts.separator ""
18
- opts.separator "Options"
19
-
20
- # Define the options, and what they do
21
- options[:login] = nil
22
- opts.on( '-l', '--login LOGIN', 'Login' ) do|login|
23
- options[:login] = login
24
- end
25
-
26
- options[:password] = nil
27
- opts.on( '-p', '--password PASSWORD', 'Password' ) do|password|
28
- options[:password] = password
29
- end
30
-
31
- options[:test] = :production
32
- opts.on( '-t', '--test', 'Enable test mode' ) do
33
- options[:test] = :test
34
- end
35
-
36
- opts.on( '-h', '--help', 'Display this screen' ) do
37
- puts opts
38
- exit
7
+ class SmsforallScript
8
+
9
+ def initialize
10
+ @log = Logger.new(STDOUT)
11
+ @log.formatter = proc{ |level, datetime, progname, msg| "[#{level}]: #{msg}\n" }
12
+ @log.level = Logger::ERROR
13
+ parse_parameters
14
+ @sms = Smsforall::Sms.new(@options[:login],@options[:password], @options[:test])
15
+ route
39
16
  end
40
- end
41
-
42
- optparse.parse!
43
17
 
44
- if options[:test] == :test
45
- puts "[WARNING]: test mode enabled!"
46
- options[:login] = "test"
47
- options[:password] = "test"
48
- end
18
+ private
49
19
 
50
- if not (options[:login] && options[:password])
51
- puts "[ERROR]: you must provide login and password!"
52
- exit
53
- end
20
+ def parse_parameters
21
+ # Parameters parsing
22
+ @options = {}
23
+
24
+ optparse = OptionParser.new do|opts|
25
+ opts.banner = "Usage: smsforall (-l login -p password|--test) [-v|V] [-q] COMMAND [options] ..."
54
26
 
55
- if not %w[balance send status].include?(ARGV[0])
56
- puts "[ERROR]: command not defined!"
57
- exit
58
- end
27
+ opts.separator ""
28
+ opts.separator "Commands"
29
+ opts.separator " balance : get balance"
30
+ opts.separator " send SENDER NUMBER TEXT : send SMS with TEXT to NUMBER"
31
+ opts.separator " status TRANSACTION : get status of transaction"
32
+ opts.separator ""
33
+ opts.separator "Options"
34
+
35
+ # Define the options, and what they do
36
+ @options[:login] = nil
37
+ opts.on( '-l', '--login LOGIN', 'Login' ) do|login|
38
+ @options[:login] = login
39
+ end
40
+
41
+ @options[:password] = nil
42
+ opts.on( '-p', '--password PASSWORD', 'Password' ) do|password|
43
+ @options[:password] = password
44
+ end
45
+
46
+ @options[:test] = :production
47
+ opts.on( '-t', '--test', 'Enable test mode' ) do
48
+ @options[:test] = :test
49
+ end
59
50
 
60
- # actions
61
- def get_balance(login, password, test)
62
- sms = Smsforall::Sms.new(login,password, test)
63
- puts "[INFO]: getting balance for #{login}"
64
- balance = sms.get_balance()
65
- puts "#{balance}"
66
- end
51
+ @options[:verbose] = false
52
+ opts.on( '-v', '--verbose', 'Verbose output' ) do
53
+ @options[:verbose] = true
54
+ end
55
+
56
+ @options[:more_verbose] = false
57
+ opts.on( '-V', '--more_verbose', 'More verbose output' ) do
58
+ @options[:more_verbose] = true
59
+ end
60
+
61
+ @options[:quiet] = false
62
+ opts.on( '-q', '--quiet', 'Quiet mode' ) do
63
+ @options[:quiet] = true
64
+ end
65
+
66
+ opts.on( '-h', '--help', 'Display this screen' ) do
67
+ puts opts
68
+ exit
69
+ end
70
+ end
71
+
72
+ optparse.parse!
73
+
74
+ if @options[:verbose] then @log.level = Logger::WARN end
75
+ if @options[:more_verbose] then @log.level = Logger::DEBUG end
76
+ if @options[:quiet] then @log.level = Logger::FATAL end
67
77
 
68
- def send_sms(login, password, test, sender, number, text)
69
- if not (sender && number && text)
70
- puts "[ERROR]: wrong number of parameters!"
71
- exit
78
+ if @options[:test] == :test
79
+ @log.warn "test mode enabled!"
80
+ @options[:login] = "test"
81
+ @options[:password] = "test"
82
+ end
83
+
84
+ if not (@options[:login] && @options[:password])
85
+ @log.error "you must provide login and password!"
86
+ exit
87
+ end
88
+
89
+ if not %w[balance send status].include?(ARGV[0])
90
+ @log.error "command not defined!"
91
+ exit
92
+ end
72
93
  end
73
- puts "[INFO]: sending SMS to #{number}"
74
- sms = Smsforall::Sms.new(login,password, test)
75
- transaction = sms.send_message(sender, text, number)
76
- puts "#{transaction}"
77
- end
78
94
 
79
- def get_status(login, password, test, transaction)
80
- puts "[INFO]: getting status"
81
- sms = Smsforall::Sms.new(login,password, test)
82
- status = sms.get_status(transaction)["status"]
83
- puts "#{status}"
84
- end
95
+ # route command
96
+ def route
97
+ case ARGV[0]
98
+ when "balance" then get_balance
99
+ when "send" then send_sms(ARGV[1], ARGV[2], ARGV[3])
100
+ when "status" then get_status(ARGV[1])
101
+ end
102
+ end
85
103
 
86
- # route command
87
- action = case ARGV[0]
88
- when "balance" then get_balance(options[:login], options[:password], options[:test])
89
- when "send" then send_sms(options[:login], options[:password], options[:test], ARGV[1], ARGV[2], ARGV[3])
90
- when "status" then get_status(options[:login], options[:password], options[:test], ARGV[1])
104
+ # actions
105
+ def get_balance()
106
+ @log.info "getting balance for #{@options[:login]}"
107
+ balance = @sms.get_balance()
108
+ puts "#{balance}"
109
+ end
110
+
111
+ def send_sms(sender, number, text)
112
+ if not (sender && number && text)
113
+ @log.error "wrong number of parameters!"
114
+ exit
115
+ end
116
+ @log.info "sending SMS to #{number}"
117
+ transaction = @sms.send_message(sender, text, number)
118
+ puts "#{transaction}"
119
+ end
120
+
121
+ def get_status(transaction)
122
+ @log.info "getting status"
123
+ status = @sms.get_status(transaction)["status"]
124
+ puts "#{status}"
125
+ end
126
+
91
127
  end
128
+
129
+ sms = SmsforallScript.new
@@ -1,4 +1,4 @@
1
1
  module Smsforall
2
2
  # GEM version
3
- VERSION = "0.0.4"
3
+ VERSION = "0.1.0"
4
4
  end
data/smsforall.gemspec CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.version = Smsforall::VERSION
17
17
 
18
18
  gem.add_dependency 'json_pure'
19
+ gem.add_dependency 'logger-colors'
19
20
 
20
21
  gem.add_development_dependency 'rspec'
21
22
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: smsforall
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - drakmail
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-09-02 00:00:00 Z
13
+ date: 2012-09-03 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json_pure
@@ -24,7 +24,7 @@ dependencies:
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
27
- name: rspec
27
+ name: logger-colors
28
28
  prerelease: false
29
29
  requirement: &id002 !ruby/object:Gem::Requirement
30
30
  none: false
@@ -32,8 +32,19 @@ dependencies:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: "0"
35
- type: :development
35
+ type: :runtime
36
36
  version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :development
47
+ version_requirements: *id003
37
48
  description: Interaction with smsforall.ru API
38
49
  email:
39
50
  - drakmail@delta.pm