rest-ftp-daemon 0.2.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -5,8 +5,6 @@ gem "json"
5
5
 
6
6
  group :development do
7
7
  gem "shoulda", ">= 0"
8
- gem "rdoc", "~> 3.12"
9
8
  gem "bundler", "~> 1.0"
10
9
  gem "jeweler", "~> 2.0.1"
11
- gem "simplecov", ">= 0"
12
10
  end
data/Gemfile.lock CHANGED
@@ -11,7 +11,6 @@ GEM
11
11
  builder (3.2.2)
12
12
  descendants_tracker (0.0.4)
13
13
  thread_safe (~> 0.3, >= 0.3.1)
14
- docile (1.1.5)
15
14
  faraday (0.9.0)
16
15
  multipart-post (>= 1.2, < 3)
17
16
  git (1.2.7)
@@ -62,11 +61,6 @@ GEM
62
61
  shoulda-context (1.2.1)
63
62
  shoulda-matchers (2.6.2)
64
63
  activesupport (>= 3.0.0)
65
- simplecov (0.9.0)
66
- docile (~> 1.1.0)
67
- multi_json
68
- simplecov-html (~> 0.8.0)
69
- simplecov-html (0.8.0)
70
64
  sinatra (1.4.5)
71
65
  rack (~> 1.4)
72
66
  rack-protection (~> 1.4)
@@ -83,7 +77,5 @@ DEPENDENCIES
83
77
  bundler (~> 1.0)
84
78
  jeweler (~> 2.0.1)
85
79
  json
86
- rdoc (~> 3.12)
87
80
  shoulda
88
- simplecov
89
81
  sinatra
data/README.md CHANGED
@@ -14,13 +14,15 @@ As of today, its main features are :
14
14
 
15
15
  This project requires ruby >= 1.9 and rubygems installed.
16
16
 
17
- Furthermore, gems are required to run it:
17
+ Quickly install the gem from rubygems.org:
18
18
 
19
- ``` gem install sinatra ```
19
+ ``` gem install rest-ftp-daemon ```
20
20
 
21
- Starting the daemon:
21
+ Start the daemon:
22
22
 
23
- ``` thin start ```
23
+ ``` rest-ftp-daemon start ```
24
+
25
+ For now, daemon logs to APP_LOGTO defined in lib/config.rb
24
26
 
25
27
 
26
28
  ## Basic usage ##
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.5.0
data/bin/rest-ftp-daemon CHANGED
@@ -2,14 +2,18 @@
2
2
 
3
3
  # Libs and init
4
4
  require 'thin'
5
+
6
+ # Initialize some local constants
5
7
  APP_ROOT = File.dirname(__FILE__) + '/../'
6
- DEFAULT_PORT = 3000
8
+ APP_VER = File.read "#{APP_ROOT}/VERSION"
9
+ APP_STARTED = Time.now
10
+ APP_DEFAULT_PORT = 3000
7
11
 
8
12
  # Prepare thin
9
- rackup_file = File.expand_path "#{APP_ROOT}/lib/rest-ftp-daemon/config.ru"
13
+ rackup_file = File.expand_path "#{APP_ROOT}/lib/config.ru"
10
14
  argv = ARGV
11
15
  argv << ["-R", rackup_file] unless ARGV.include?("-R")
12
- argv << ["-p", DEFAULT_PORT.to_s] unless ARGV.include?("-p")
16
+ argv << ["-p", APP_DEFAULT_PORT.to_s] unless ARGV.include?("-p")
13
17
  argv << ["-e", "production"] unless ARGV.include?("-e")
14
18
 
15
19
  # Start thin
data/lib/config.rb CHANGED
@@ -1,2 +1,7 @@
1
+ # App configuration
2
+ APP_NAME = 'rest-ftp-daemon'
3
+ APP_LOGTO = "/tmp/#{APP_NAME}.log"
4
+
5
+ # Transfer configuration
1
6
  TRANSFER_CHUNK_SIZE = 100000
2
7
  THREAD_SLEEP_BEFORE_DIE = 120
@@ -1,8 +1,6 @@
1
1
  # Main libs
2
2
  require 'sinatra'
3
3
  require 'sinatra/base'
4
- require "sinatra/json"
5
- require "sinatra/config_file"
6
4
  require 'net/ftp'
7
5
  require 'json'
8
6
 
@@ -1,21 +1,20 @@
1
1
  class RestFtpDaemon < Sinatra::Base
2
- helpers Sinatra::JSON
3
2
 
4
3
  # General config
5
4
  configure :development, :production do
6
5
 
7
6
  # Create new thread group
8
7
  @@threads = ThreadGroup.new
9
- #set :dummy, true
10
- # set :sessions, false
8
+
9
+ # Some other configuration
10
+ set :sessions, false
11
11
  # set :logging, true
12
- # set :root, APP_ROOT + '/lib/'
13
12
  end
14
13
 
15
14
  # Server initialization
16
15
  def initialize
17
16
  # Setup logger
18
- @logger = Logger.new(APP_ROOT + '/main.log','daily')
17
+ @logger = Logger.new(APP_LOGTO, 'daily')
19
18
  @logger.level = Logger::INFO
20
19
 
21
20
  # Other stuff
@@ -27,20 +26,30 @@ class RestFtpDaemon < Sinatra::Base
27
26
 
28
27
  # Server global status
29
28
  get "/" do
29
+ # Debug query
30
+ info "GET /"
31
+
32
+ # Build response
30
33
  content_type :json
31
- json get_status
34
+ JSON.pretty_generate get_status
32
35
  end
33
36
 
34
37
  # List jobs
35
38
  get "/jobs" do
39
+ # Debug query
40
+ info "GET /jobs"
41
+
36
42
  # Build response
37
43
  content_type :json
38
- json get_jobs
44
+ JSON.pretty_generate get_jobs
39
45
  #@@threads.count
40
46
  end
41
47
 
42
48
  # List jobs
43
49
  delete "/jobs/:name" do
50
+ # Debug query
51
+ info "DELETE /jobs/#{params[:name]}"
52
+
44
53
  # Kill this job
45
54
  ret = delete_job params[:name]
46
55
 
@@ -49,22 +58,24 @@ class RestFtpDaemon < Sinatra::Base
49
58
 
50
59
  # Build response
51
60
  content_type :json
52
- json nil
61
+ JSON.pretty_generate nil
53
62
  end
54
63
 
55
64
  # Spawn a new thread for this new job
56
65
  post '/jobs' do
66
+ # Extract payload
57
67
  request.body.rewind
58
68
  payload = JSON.parse request.body.read
59
- info "POST / with #{payload.to_json}"
60
69
 
61
- # Spawn a thread
62
- #config = {}
70
+ # Debug query
71
+ info "POST /jobs: #{payload.to_json}"
72
+
73
+ # Spawn a thread for this job
63
74
  result = new_job payload
64
75
 
65
76
  # Build response
66
77
  content_type :json
67
- json result
78
+ JSON.pretty_generate result
68
79
  end
69
80
 
70
81
  protected
@@ -139,13 +150,21 @@ class RestFtpDaemon < Sinatra::Base
139
150
  end
140
151
 
141
152
  def get_status
153
+ info "> get_status"
154
+
142
155
  {
143
- greeting: "REST FTP daemon: up and running",
156
+ app_name: APP_NAME,
157
+ hostname: @@hostname,
158
+ version: APP_VER,
159
+ started: APP_STARTED,
160
+ uptime: (Time.now - APP_STARTED).round(1),
144
161
  jobs_count: @@threads.list.count,
145
162
  }
146
163
  end
147
164
 
148
165
  def get_jobs
166
+ info "> get_jobs"
167
+
149
168
  output = []
150
169
  @@threads.list.each do |thread|
151
170
  output << {
@@ -160,6 +179,8 @@ class RestFtpDaemon < Sinatra::Base
160
179
 
161
180
 
162
181
  def delete_job name
182
+ info "> delete_job(#{name})"
183
+
163
184
  count = 0
164
185
  @@threads.list.collect do |thread|
165
186
  next unless thread[:name] == name
@@ -170,7 +191,7 @@ class RestFtpDaemon < Sinatra::Base
170
191
  end
171
192
 
172
193
  def new_job context = {}
173
- info "new_job: creating thread"
194
+ info "new_job"
174
195
 
175
196
  # Generate name
176
197
  @@last_worker_id +=1
@@ -219,12 +240,8 @@ class RestFtpDaemon < Sinatra::Base
219
240
  return { code: 0, errmsg: 'success', name: name, context: context }
220
241
  end
221
242
 
222
- def log level, msg=""
223
- @logger.send(level.to_s, msg)
224
- end
225
-
226
243
  def info msg=""
227
- log :info, msg
244
+ @logger.send :info, msg
228
245
  end
229
246
 
230
247
  def job_status code, errmsg
@@ -0,0 +1,66 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "rest-ftp-daemon"
8
+ s.version = "0.5.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Bruno"]
12
+ s.date = "2014-07-31"
13
+ s.description = "A fairly basic FTP client daemon, driven by RESTful webservice calls"
14
+ s.email = "rest-ftp-daemon@bmconseil.com"
15
+ s.executables = ["rest-ftp-daemon"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.md"
19
+ ]
20
+ s.files = [
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.md",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/rest-ftp-daemon",
28
+ "lib/config.rb",
29
+ "lib/config.ru",
30
+ "lib/errors.rb",
31
+ "lib/rest-ftp-daemon.rb",
32
+ "rest-ftp-daemon.gemspec",
33
+ "test/helper.rb",
34
+ "test/test_rest-ftp-daemon.rb"
35
+ ]
36
+ s.homepage = "http://github.com/bmedici/rest-ftp-daemon"
37
+ s.licenses = ["MIT"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = "1.8.23"
40
+ s.summary = "RESTful FTP client daemon"
41
+
42
+ if s.respond_to? :specification_version then
43
+ s.specification_version = 3
44
+
45
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
+ s.add_runtime_dependency(%q<sinatra>, [">= 0"])
47
+ s.add_runtime_dependency(%q<json>, [">= 0"])
48
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
49
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
50
+ s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
51
+ else
52
+ s.add_dependency(%q<sinatra>, [">= 0"])
53
+ s.add_dependency(%q<json>, [">= 0"])
54
+ s.add_dependency(%q<shoulda>, [">= 0"])
55
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
56
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
57
+ end
58
+ else
59
+ s.add_dependency(%q<sinatra>, [">= 0"])
60
+ s.add_dependency(%q<json>, [">= 0"])
61
+ s.add_dependency(%q<shoulda>, [">= 0"])
62
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
63
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
64
+ end
65
+ end
66
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-ftp-daemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -59,22 +59,6 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: rdoc
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '3.12'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '3.12'
78
62
  - !ruby/object:Gem::Dependency
79
63
  name: bundler
80
64
  requirement: !ruby/object:Gem::Requirement
@@ -107,22 +91,6 @@ dependencies:
107
91
  - - ~>
108
92
  - !ruby/object:Gem::Version
109
93
  version: 2.0.1
110
- - !ruby/object:Gem::Dependency
111
- name: simplecov
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
94
  description: A fairly basic FTP client daemon, driven by RESTful webservice calls
127
95
  email: rest-ftp-daemon@bmconseil.com
128
96
  executables:
@@ -140,9 +108,10 @@ files:
140
108
  - VERSION
141
109
  - bin/rest-ftp-daemon
142
110
  - lib/config.rb
111
+ - lib/config.ru
143
112
  - lib/errors.rb
144
113
  - lib/rest-ftp-daemon.rb
145
- - lib/rest-ftp-daemon/config.ru
114
+ - rest-ftp-daemon.gemspec
146
115
  - test/helper.rb
147
116
  - test/test_rest-ftp-daemon.rb
148
117
  homepage: http://github.com/bmedici/rest-ftp-daemon
@@ -160,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
129
  version: '0'
161
130
  segments:
162
131
  - 0
163
- hash: 3830976928581563014
132
+ hash: 613480688316128454
164
133
  required_rubygems_version: !ruby/object:Gem::Requirement
165
134
  none: false
166
135
  requirements: