flydata 0.0.2.3 → 0.0.3.rc1

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2.3
1
+ 0.0.3.rc1
data/flydata.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "flydata"
8
- s.version = "0.0.2.3"
8
+ s.version = "0.0.3.rc1"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Koichi Fujikawa"]
12
- s.date = "2012-10-31"
12
+ s.date = "2012-11-14"
13
13
  s.description = "FlyData Command Line Interface"
14
14
  s.email = "sysadmin@flydata.co"
15
15
  s.executables = ["flydata"]
@@ -52,7 +52,7 @@ Gem::Specification.new do |s|
52
52
  s.homepage = "http://flydata.co/"
53
53
  s.licenses = ["All right reserved."]
54
54
  s.require_paths = ["lib"]
55
- s.rubygems_version = "1.8.23"
55
+ s.rubygems_version = "1.8.24"
56
56
  s.summary = "FlyData CLI"
57
57
 
58
58
  if s.respond_to? :specification_version then
@@ -9,7 +9,7 @@ module Flydata
9
9
  end
10
10
  def create(params={})
11
11
  params.each {|k, v| @url_path.gsub!(/:#{k}/, v.to_s)}
12
- @client.post(@url_path, @model_name => params)
12
+ @client.post(@url_path, nil, @model_name => params)
13
13
  end
14
14
  end
15
15
  end
@@ -14,20 +14,20 @@ module Flydata
14
14
  end
15
15
 
16
16
  # row level api
17
- def post(path, params=nil)
18
- uri = "#{FLYDATA_API_HOST}#{path}"
19
- resource = RestClient::Resource.new(uri, resource_opts)
17
+ def post(path, headers = nil, params=nil)
18
+ uri = generate_auth_url(path)
19
+ resource = RestClient::Resource.new(uri, resource_opts(headers))
20
20
  @response = resource.post(params, :accept => :json)
21
21
  handle_response response
22
22
  end
23
23
  def put(path, params=nil)
24
- uri = "#{FLYDATA_API_HOST}#{path}"
24
+ uri = generate_auth_url(path)
25
25
  resource = RestClient::Resource.new(uri, resource_opts)
26
26
  @response = resource.put(params, :accept => :json)
27
27
  handle_response response
28
28
  end
29
29
  def get(path)
30
- uri = "#{FLYDATA_API_HOST}#{path}"
30
+ uri = generate_auth_url(path)
31
31
  resource = RestClient::Resource.new(uri, resource_opts)
32
32
  @response = resource.get(:accept => :json)
33
33
  handle_response response
@@ -47,11 +47,20 @@ module Flydata
47
47
  if json_response.class == Hash and json_response["success"] == false
48
48
  err_msg = json_response['errors'] ? json_response['errors'].to_s : "Unkown error."
49
49
  raise err_msg
50
+ elsif json_response.class == Hash and json_response["auth_token"]
51
+ @credentials.write_credentials(json_response["auth_token"])
50
52
  end
51
53
  json_response
52
54
  end
53
- def resource_opts
54
- {:user => @credentials.user, :password => @credentials.password}
55
+ def resource_opts(headers=nil)
56
+ # merge headers and default parameter
57
+ parameters = {}
58
+ parameters.merge(headers) if headers
59
+ end
60
+ def generate_auth_url(path)
61
+ token = @credentials.token
62
+ token = '' unless token
63
+ "#{FLYDATA_API_HOST}#{path}?auth_token=#{token}"
55
64
  end
56
65
  end
57
66
  end
@@ -20,19 +20,11 @@ module Flydata
20
20
  false
21
21
  end
22
22
  def login_once
23
- # Ask login info
24
23
  email = ask("FlyData Email: ")
25
24
  password = ask("FlyData password: ") {|q| q.echo = false}
26
- flydata.credentials = Flydata::Credentials.new(email, password)
27
- # Auth request
28
- flydata.post('/users/sign_in')
29
- if flydata.response.code == 201 # 201: Created
30
- say("Login succeeded!")
31
- flydata.credentials.authenticate!
32
- return true
33
- end
34
- say("Login failed!")
35
- false
25
+ flydata.post('/users/sign_in', {:user => email, :password =>password})
26
+ puts 'Thank you for logging in'
27
+ true
36
28
  end
37
29
  end
38
30
  end
@@ -15,26 +15,41 @@ module Flydata
15
15
  end
16
16
 
17
17
  def run
18
- # login
19
- Flydata::Command::Login.new.run unless flydata.credentials.authenticated?
18
+ # Check authentication token
19
+ begin
20
+ flydata.get('/data_entries')
21
+ rescue => e
22
+ if e.respond_to?('response') and e.response.code == 401
23
+ puts("Error logging in, Please enter login information")
24
+ Flydata::Command::Login.new.run #Check credentials for every run in case corruption
25
+ else
26
+ raise e
27
+ end
28
+ end
20
29
 
21
30
  # choose entries
22
- unless shown = show_registered_entries and not more_entry?
31
+ unless (shown = show_registered_entries)
32
+ list = build_recommended_entries
33
+ print_recommended(list)
34
+ register_all(list) if ask_yes_no("Register all of these common entries?")
35
+ end
36
+ unless (shown ||= show_registered_entries) and not more_entry?
23
37
  begin
24
38
  show_registered_entries unless shown
25
39
  shown = false
40
+ <<<<<<< HEAD
26
41
  path = choose_log_path_from_examples
27
42
  case path
28
43
  when OTHER; ask_log_path
29
- else; create_log_entry(path, ask_log_deletion(path))
44
+ else; create_log_entry(path)
30
45
  end
46
+ =======
47
+ choose_log_selection(list)
48
+ >>>>>>> feature/auto_scan_logs
31
49
  newline
32
50
  end while more_entry?
33
51
  end
34
52
 
35
- # register cron if registered log deletion
36
- register_crontab
37
-
38
53
  # start client process
39
54
  Flydata::Command::Sender.new.restart
40
55
  end
@@ -87,7 +102,62 @@ module Flydata
87
102
  end
88
103
  newline
89
104
  end
90
- create_log_entry(path, ask_log_deletion(path))
105
+ create_log_entry(path)
106
+ <<<<<<< HEAD
107
+ =======
108
+ end
109
+ def build_recommended_entries
110
+ path_options=[]
111
+ Dir['/var/log*/**/*log'].each{|f| if (FileTest.file?(f) and
112
+ FileTest.readable?(f) and
113
+ ( f =~ /apache2|httpd|syslog|mail|auth/)) and
114
+ !(@last_fetched_entries and @last_fetched_entries.any?{|e| e['log_path'] == f})
115
+ then path_options << f end}
116
+ path_options
117
+ end
118
+ def print_recommended(list, options=false)
119
+ newline
120
+ puts " Recommended list:"
121
+ list.each_with_index { |value, index|
122
+ puts " #{index+1}) #{value} "
123
+ }
124
+ if options
125
+ puts(" #{list.length+1}) Enter your own path")
126
+ end
127
+ newline
128
+ end
129
+ def register_all(list)
130
+ list.each{ |item|
131
+ create_log_entry(item)
132
+ }
133
+ list.reject!{|x| x}
134
+ end
135
+ def choose_log_selection(list)
136
+ path = nil
137
+ list = build_recommended_entries unless list
138
+ path_options = list
139
+
140
+ loop do
141
+ if path_options.empty?
142
+ ask_log_path
143
+ return
144
+ end
145
+ print_recommended(path_options, true)
146
+ choice = Readline.readline("Here are some common logs, enter the number next to the logs to add the log. Input nothing to cancel.")
147
+ return if choice.empty?
148
+ if choice.to_i==path_options.length+1
149
+ ask_log_path
150
+ return
151
+ elsif (path_options[choice.to_i-1] != nil )
152
+ path = path_options[choice.to_i-1]
153
+ path_options.delete_at(choice.to_i-1)
154
+ break
155
+ else
156
+ puts("Not a valid entry, please try again");
157
+ end
158
+ end
159
+ create_log_entry(path)
160
+ >>>>>>> feature/auto_scan_logs
91
161
  end
92
162
  def ask_log_deletion(path)
93
163
  unless File.writable?(path)
@@ -103,13 +173,13 @@ module Flydata
103
173
  say("For more details - http://docs.hapyrus.com/faq/how-log-deletion-works/")
104
174
  ask_yes_no("Set auto log deletion mode?")
105
175
  end
106
- def create_log_entry(path, log_deletion)
176
+ def create_log_entry(path, log_deletion=false)
107
177
  data_port = flydata.data_port.get
108
178
  flydata.data_entry.create(data_port_id: data_port['id'], log_path: path, log_deletion: log_deletion)
109
- say("Process successfuly!") if flydata.response.code == 200
179
+ say("Process added successfuly!") if flydata.response.code == 200
110
180
  end
111
181
  def more_entry?
112
- ask_yes_no("Do you want to add more log path?")
182
+ ask_yes_no("Do you want to add another log path?")
113
183
  end
114
184
  end
115
185
  end
@@ -1,41 +1,34 @@
1
1
  module Flydata
2
2
  class Credentials
3
3
  include Helpers
4
- attr_reader :user, :password
5
- def initialize(user=nil, password=nil)
4
+ attr_reader :token
5
+ def initialize
6
6
  read_credentials
7
- if user && password
8
- @user = user
9
- @password = password
10
- elsif !(@authenticated)
11
- @user = ENV['FLYDATA_LOGIN']
12
- @password = ENV['FLYDATA_PASSWORD']
13
- end
14
7
  end
15
8
  def authenticate!
16
9
  @authenticated = true
17
- write_credentials
18
10
  end
19
11
  def authenticated?
20
12
  @authenticated
21
13
  end
22
- def write_credentials
14
+ def write_credentials(token)
23
15
  dir = File.dirname(credentials_file)
24
16
  FileUtils.mkdir_p(dir)
25
17
  File.delete(credentials_file) if FileTest.exists?(credentials_file)
26
18
  File.open(credentials_file, 'w', 0400) do |out|
27
- out.puts @user
28
- out.puts encode(@password)
19
+ out.puts token
29
20
  end
30
21
  FileUtils.chmod(0700, dir)
22
+ @token = token
31
23
  end
32
24
  def read_credentials
33
25
  if FileTest.exist?(credentials_file)
34
26
  File.open(credentials_file, 'r') do |f|
35
- @user = f.gets.chomp
36
- @password = decode(f.gets.chomp)
37
- @authenticated = true if @user and @password
27
+ @token = f.gets.chomp
28
+ @authenticated = true if @token
38
29
  end
30
+ else
31
+ @token = nil
39
32
  end
40
33
  end
41
34
  private
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flydata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.3
5
- prerelease:
4
+ version: 0.0.3.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Koichi Fujikawa
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-31 00:00:00.000000000 Z
12
+ date: 2012-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -275,16 +275,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
275
275
  version: '0'
276
276
  segments:
277
277
  - 0
278
- hash: 3501060614600902036
278
+ hash: 1831603908793813549
279
279
  required_rubygems_version: !ruby/object:Gem::Requirement
280
280
  none: false
281
281
  requirements:
282
- - - ! '>='
282
+ - - ! '>'
283
283
  - !ruby/object:Gem::Version
284
- version: '0'
284
+ version: 1.3.1
285
285
  requirements: []
286
286
  rubyforge_project:
287
- rubygems_version: 1.8.23
287
+ rubygems_version: 1.8.24
288
288
  signing_key:
289
289
  specification_version: 3
290
290
  summary: FlyData CLI