hylafax 0.1.0 → 0.4.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 +5 -5
- data/Dockerfile +6 -0
- data/LICENSE.txt +1 -1
- data/README.md +20 -5
- data/Rakefile +3 -3
- data/docker-compose.yml +8 -0
- data/hylafax.gemspec +1 -1
- data/lib/hylafax.rb +6 -0
- data/lib/hylafax/command.rb +30 -0
- data/lib/hylafax/fax_stat.rb +45 -0
- data/lib/hylafax/send_fax.rb +35 -23
- data/lib/hylafax/version.rb +1 -1
- metadata +21 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fa7d134cb036f06376a5d87efab2b5eee5e737ba4b41c22efff4cc92784430f7
|
4
|
+
data.tar.gz: 43ee998f84f20b5e81ecf07174ef65407c8337500a0ef7428d6b482014f80e39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86cddd5561ed193cf4bb324ed28893e6c4676a50f6a234ba7af4d86bf0fb53b5d09293efc0f296e12dbfc82015e00614dc21f575fdefabb55a0d193b12cf7ecd
|
7
|
+
data.tar.gz: 3b2a60a934dba704dc9b749f7bc9ffdb59b242284deb253b4e236cec94b6a0b27727a2078cbdd2c9dae6d1a396956c5af6f6546e0377a0e5c02499751728bf6f
|
data/Dockerfile
ADDED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# The Ruby HylaFAX Client
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/hylafax)
|
4
|
+
[](https://travis-ci.org/bjoernalbers/hylafax)
|
5
|
+
|
3
6
|
Send faxes with a
|
4
7
|
[HylaFAX](http://www.hylafax.org/)
|
5
8
|
server via Ruby.
|
@@ -29,19 +32,31 @@ Sending a fax:
|
|
29
32
|
```ruby
|
30
33
|
require 'hylafax'
|
31
34
|
|
35
|
+
# Send fax and return the job id.
|
32
36
|
HylaFAX.sendfax(host: '10.2.2.1', dialstring: '0123456', document: 'foo.pdf')
|
37
|
+
# => 29
|
33
38
|
|
34
|
-
|
39
|
+
```
|
40
|
+
|
41
|
+
Checking fax statuses:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
# Query status by job id for completed faxes.
|
45
|
+
HylaFAX.faxstat(host: '10.2.2.1')
|
46
|
+
# => {29=>:done, 28=>:done, 27=>:failed}
|
35
47
|
```
|
36
48
|
|
37
49
|
|
38
50
|
## Development
|
39
51
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
52
|
+
You need to have Docker installed.
|
53
|
+
After checking out the repo, run the tests with:
|
54
|
+
|
55
|
+
$ docker-compose run --rm lib bin/rspec
|
56
|
+
|
57
|
+
For an interactive prompt run:
|
44
58
|
|
59
|
+
$ docker-compose run --rm lib bin/console
|
45
60
|
|
46
61
|
## Contributing
|
47
62
|
|
data/Rakefile
CHANGED
data/docker-compose.yml
ADDED
data/hylafax.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ['lib']
|
23
23
|
|
24
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
25
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
26
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
27
|
end
|
data/lib/hylafax.rb
CHANGED
@@ -2,10 +2,16 @@ require 'net/ftp'
|
|
2
2
|
require 'digest/md5'
|
3
3
|
|
4
4
|
require 'hylafax/version'
|
5
|
+
require 'hylafax/command'
|
5
6
|
require 'hylafax/send_fax'
|
7
|
+
require 'hylafax/fax_stat'
|
6
8
|
|
7
9
|
module HylaFAX
|
8
10
|
def self.sendfax(*opts)
|
9
11
|
SendFax.new(*opts).run
|
10
12
|
end
|
13
|
+
|
14
|
+
def self.faxstat(*opts)
|
15
|
+
FaxStat.new(*opts).run
|
16
|
+
end
|
11
17
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module HylaFAX
|
2
|
+
class Command
|
3
|
+
DEFAULT_HOST = '127.0.0.1'
|
4
|
+
DEFAULT_PORT = 4559
|
5
|
+
DEFAULT_USER = 'anonymous'
|
6
|
+
DEFAULT_PASSWORD = 'anonymous'
|
7
|
+
|
8
|
+
attr_reader :ftp, :host, :port, :user, :password
|
9
|
+
|
10
|
+
def initialize(opts = {})
|
11
|
+
@ftp = opts.fetch(:ftp) { Net::FTP.new }
|
12
|
+
@host = opts.fetch(:host) { DEFAULT_HOST }
|
13
|
+
@port = opts.fetch(:port) { DEFAULT_PORT }
|
14
|
+
@user = opts.fetch(:user) { DEFAULT_USER }
|
15
|
+
@password = opts.fetch(:password) { DEFAULT_PASSWORD }
|
16
|
+
|
17
|
+
@ftp.passive = true if opts[:passive]
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def connect
|
23
|
+
ftp.connect(host, port)
|
24
|
+
end
|
25
|
+
|
26
|
+
def login
|
27
|
+
ftp.login(user, password)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module HylaFAX
|
2
|
+
class FaxStat < Command
|
3
|
+
DEFAULT_QUEUE = 'doneq'
|
4
|
+
JOB_FORMAT = '%j %a'
|
5
|
+
STATES = {
|
6
|
+
'?' => :undefined,
|
7
|
+
'T' => :suspended,
|
8
|
+
'P' => :pending,
|
9
|
+
'S' => :sleeping,
|
10
|
+
'B' => :blocked,
|
11
|
+
'W' => :waiting,
|
12
|
+
'R' => :running,
|
13
|
+
'D' => :done,
|
14
|
+
'F' => :failed,
|
15
|
+
}
|
16
|
+
|
17
|
+
attr_reader :queue
|
18
|
+
|
19
|
+
def initialize(opts = {})
|
20
|
+
super
|
21
|
+
@queue = opts.fetch(:queue) { DEFAULT_QUEUE }
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
connect
|
26
|
+
login
|
27
|
+
set_jobformat
|
28
|
+
list
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def set_jobformat
|
34
|
+
ftp.sendcmd(%Q{JOBFMT "#{JOB_FORMAT}"})
|
35
|
+
end
|
36
|
+
|
37
|
+
def list
|
38
|
+
ftp.list(queue).inject({ }) do |jobs, line|
|
39
|
+
job_id, status = line.split(' ')
|
40
|
+
jobs[job_id.to_i] = STATES[status]
|
41
|
+
jobs
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/hylafax/send_fax.rb
CHANGED
@@ -1,23 +1,22 @@
|
|
1
1
|
module HylaFAX
|
2
|
-
class SendFax
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
class SendFax < Command
|
3
|
+
DEFAULT_TMP_DIR = 'tmp'
|
4
|
+
DEFAULT_PAGEWIDTH = 209
|
5
|
+
DEFAULT_PAGELENGTH = 296
|
6
|
+
DEFAULT_PAGECHOP = 'NONE'
|
7
|
+
DEFAULT_CHOPTHRESHOLD = 0
|
8
|
+
DOCUMENT_PREFIX = 'doc.'
|
8
9
|
|
9
|
-
attr_reader :
|
10
|
-
:
|
10
|
+
attr_reader :dialstring, :document, :tmp_dir, :job_id, :pagewidth,
|
11
|
+
:pagelength
|
11
12
|
|
12
13
|
def initialize(opts = {})
|
13
|
-
|
14
|
-
@
|
15
|
-
@port = opts.fetch(:port) { DEFAULT_PORT }
|
16
|
-
@user = opts.fetch(:user) { DEFAULT_USER }
|
17
|
-
@password = opts.fetch(:password) { DEFAULT_PASSWORD }
|
18
|
-
@tmp_dir = opts.fetch(:tmp_dir) { DEFAULT_TMP_DIR }
|
14
|
+
super
|
15
|
+
@tmp_dir = opts.fetch(:tmp_dir) { DEFAULT_TMP_DIR }
|
19
16
|
@dialstring = opts.fetch(:dialstring)
|
20
17
|
@document = opts.fetch(:document)
|
18
|
+
@pagewidth = opts.fetch(:pagewidth) { DEFAULT_PAGEWIDTH }
|
19
|
+
@pagelength = opts.fetch(:pagelength) { DEFAULT_PAGELENGTH }
|
21
20
|
@job_id = nil
|
22
21
|
end
|
23
22
|
|
@@ -28,6 +27,10 @@ module HylaFAX
|
|
28
27
|
create_new_job
|
29
28
|
set_lasttime
|
30
29
|
set_dialstring
|
30
|
+
set_pagewidth
|
31
|
+
set_pagelength
|
32
|
+
set_pagechop
|
33
|
+
set_chopthreshold
|
31
34
|
set_document
|
32
35
|
submit_job
|
33
36
|
job_id
|
@@ -35,14 +38,6 @@ module HylaFAX
|
|
35
38
|
|
36
39
|
private
|
37
40
|
|
38
|
-
def connect
|
39
|
-
ftp.connect(host, port)
|
40
|
-
end
|
41
|
-
|
42
|
-
def login
|
43
|
-
ftp.login(user, password)
|
44
|
-
end
|
45
|
-
|
46
41
|
def upload_document
|
47
42
|
ftp.put(document, remote_document) unless document_uploaded?
|
48
43
|
end
|
@@ -52,7 +47,8 @@ module HylaFAX
|
|
52
47
|
end
|
53
48
|
|
54
49
|
def document_filename
|
55
|
-
@document_filename ||=
|
50
|
+
@document_filename ||= DOCUMENT_PREFIX +
|
51
|
+
Digest::MD5.file(document).hexdigest
|
56
52
|
end
|
57
53
|
|
58
54
|
def document_uploaded?
|
@@ -72,6 +68,22 @@ module HylaFAX
|
|
72
68
|
ftp.sendcmd("JPARM DIALSTRING \"#{dialstring}\"")
|
73
69
|
end
|
74
70
|
|
71
|
+
def set_pagewidth
|
72
|
+
ftp.sendcmd(%Q{JPARM PAGEWIDTH #{pagewidth}})
|
73
|
+
end
|
74
|
+
|
75
|
+
def set_pagelength
|
76
|
+
ftp.sendcmd(%Q{JPARM PAGELENGTH #{pagelength}})
|
77
|
+
end
|
78
|
+
|
79
|
+
def set_pagechop
|
80
|
+
ftp.sendcmd(%Q{JPARM PAGECHOP "#{DEFAULT_PAGECHOP}"})
|
81
|
+
end
|
82
|
+
|
83
|
+
def set_chopthreshold
|
84
|
+
ftp.sendcmd(%Q{JPARM CHOPTHRESHOLD #{DEFAULT_CHOPTHRESHOLD}})
|
85
|
+
end
|
86
|
+
|
75
87
|
def set_document
|
76
88
|
ftp.sendcmd("JPARM DOCUMENT \"#{remote_document}\"")
|
77
89
|
end
|
data/lib/hylafax/version.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hylafax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Björn Albers
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.11'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.11'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
55
|
description: The Ruby HylaFAX Client
|
@@ -59,18 +59,22 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .rspec
|
64
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
65
|
- CODE_OF_CONDUCT.md
|
66
|
+
- Dockerfile
|
66
67
|
- Gemfile
|
67
68
|
- LICENSE.txt
|
68
69
|
- README.md
|
69
70
|
- Rakefile
|
70
71
|
- bin/console
|
71
72
|
- bin/setup
|
73
|
+
- docker-compose.yml
|
72
74
|
- hylafax.gemspec
|
73
75
|
- lib/hylafax.rb
|
76
|
+
- lib/hylafax/command.rb
|
77
|
+
- lib/hylafax/fax_stat.rb
|
74
78
|
- lib/hylafax/send_fax.rb
|
75
79
|
- lib/hylafax/version.rb
|
76
80
|
homepage: https://github.com/bjoernalbers/hylafax
|
@@ -83,18 +87,17 @@ require_paths:
|
|
83
87
|
- lib
|
84
88
|
required_ruby_version: !ruby/object:Gem::Requirement
|
85
89
|
requirements:
|
86
|
-
- -
|
90
|
+
- - ">="
|
87
91
|
- !ruby/object:Gem::Version
|
88
92
|
version: '0'
|
89
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
94
|
requirements:
|
91
|
-
- -
|
95
|
+
- - ">="
|
92
96
|
- !ruby/object:Gem::Version
|
93
97
|
version: '0'
|
94
98
|
requirements: []
|
95
|
-
|
96
|
-
rubygems_version: 2.6.10
|
99
|
+
rubygems_version: 3.0.3
|
97
100
|
signing_key:
|
98
101
|
specification_version: 4
|
99
|
-
summary: hylafax-0.
|
102
|
+
summary: hylafax-0.4.0
|
100
103
|
test_files: []
|