tinnef 0.1.0 → 0.1.1
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/.gitignore +4 -21
- data/.travis.yml +6 -0
- data/Gemfile +4 -0
- data/{LICENSE → MIT-LICENSE} +2 -1
- data/README.md +96 -0
- data/Rakefile +10 -47
- data/lib/tinnef.rb +43 -15
- data/lib/tinnef/version.rb +3 -0
- data/test/fixtures/quick-winmail.dat +0 -0
- data/test/test_helper.rb +5 -0
- data/test/tinnef_test.rb +43 -0
- data/tinnef.gemspec +17 -46
- metadata +55 -26
- data/README.rdoc +0 -108
- data/VERSION +0 -1
- data/test/helper.rb +0 -9
- data/test/test_tinnef.rb +0 -7
data/.gitignore
CHANGED
@@ -1,21 +1,4 @@
|
|
1
|
-
|
2
|
-
.
|
3
|
-
|
4
|
-
|
5
|
-
*.tmproj
|
6
|
-
tmtags
|
7
|
-
|
8
|
-
## EMACS
|
9
|
-
*~
|
10
|
-
\#*
|
11
|
-
.\#*
|
12
|
-
|
13
|
-
## VIM
|
14
|
-
*.swp
|
15
|
-
|
16
|
-
## PROJECT::GENERAL
|
17
|
-
coverage
|
18
|
-
rdoc
|
19
|
-
pkg
|
20
|
-
|
21
|
-
## PROJECT::SPECIFIC
|
1
|
+
*.gem
|
2
|
+
.bundle
|
3
|
+
Gemfile.lock
|
4
|
+
pkg/*
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/{LICENSE → MIT-LICENSE}
RENAMED
data/README.md
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
# tinnef
|
2
|
+
|
3
|
+
[](http://travis-ci.org/ledermann/tinnef)
|
4
|
+
|
5
|
+
This gem handles e-mail attachments packaged in the Microsoft "application/ms-tnef" MIME type. It's a Ruby wrapper for the [tnef converter](http://tnef.sourceforge.net).
|
6
|
+
|
7
|
+
From [Wikipedia](http://en.wikipedia.org/wiki/Transport_Neutral_Encapsulation_Format): "Transport Neutral Encapsulation Format or TNEF is, despite the name, a proprietary E-mail attachment format used by Microsoft Outlook and Microsoft Exchange Server. An attached file with TNEF encoding is most often named winmail.dat or win.dat, and has a MIME type of Application/MS-TNEF."
|
8
|
+
|
9
|
+
|
10
|
+
## Requirements
|
11
|
+
|
12
|
+
### Ruby
|
13
|
+
|
14
|
+
Tested with Ruby 1.8.6, 1.8.7 and 1.9.2.
|
15
|
+
|
16
|
+
### tnef
|
17
|
+
|
18
|
+
The binary of tnef is required in a current version, 1.4.6 is ok. Check if this tool already exists on your machine:
|
19
|
+
|
20
|
+
tnef --version
|
21
|
+
|
22
|
+
It doesn't exist? You can install it:
|
23
|
+
|
24
|
+
#### Mac OS X
|
25
|
+
|
26
|
+
Using Homebrew, just do:
|
27
|
+
|
28
|
+
brew install tnef
|
29
|
+
|
30
|
+
Using MacPorts, just do:
|
31
|
+
|
32
|
+
sudo ports install tnef
|
33
|
+
|
34
|
+
#### Linux
|
35
|
+
|
36
|
+
There are chances that this will work:
|
37
|
+
|
38
|
+
apt-get install tnef
|
39
|
+
|
40
|
+
Beware: On older Linux distribution, you will get a too old version of tnef, which does not work (e.g. 1.4.3 in Ubuntu Hardy), so you have to compile it by yourself. It's easy:
|
41
|
+
|
42
|
+
wget http://sourceforge.net/projects/tnef/files/tnef/v1.4.7/tnef-1.4.7.tar.gz/download
|
43
|
+
tar -xzvf tnef-1.4.7.tar.gz
|
44
|
+
cd tnef-1.4.7
|
45
|
+
./configure
|
46
|
+
make
|
47
|
+
make check
|
48
|
+
make install
|
49
|
+
|
50
|
+
#### Windows
|
51
|
+
|
52
|
+
What? I don't think this gem will work on Windows.
|
53
|
+
|
54
|
+
|
55
|
+
## Installation
|
56
|
+
|
57
|
+
gem install tinnef
|
58
|
+
|
59
|
+
## Usage
|
60
|
+
|
61
|
+
The gem defines the class TNEF with a class method to convert a given winmail.dat file. Use it with a block like in the following example:
|
62
|
+
|
63
|
+
require 'rubygems'
|
64
|
+
require 'tinnef'
|
65
|
+
|
66
|
+
content = File.new('winmail.dat').read
|
67
|
+
TNEF.convert(content, :command => '/opt/local/bin/tnef') do |temp_file|
|
68
|
+
unpacked_content = temp_file.read
|
69
|
+
unpacked_filename = File.basename(temp_file.path)
|
70
|
+
|
71
|
+
File.open("/some/path/#{unpacked_filename}", 'w') do |new_file|
|
72
|
+
new_file.write(unpacked_content)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
## About the naming of this gem
|
78
|
+
|
79
|
+
"Tinnef" is a german slang word for "rubbish" or "trash". TNEF => TiNnEF => Tinnef - you know?
|
80
|
+
|
81
|
+
## Note on Patches/Pull Requests
|
82
|
+
|
83
|
+
* Fork the project.
|
84
|
+
* Make your feature addition or bug fix.
|
85
|
+
* Add tests for it. This is important so I don't break it in a
|
86
|
+
future version unintentionally.
|
87
|
+
* Commit, do not mess with rakefile, version, or history.
|
88
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
89
|
+
* Send me a pull request. Bonus points for topic branches.
|
90
|
+
|
91
|
+
## Copyright
|
92
|
+
|
93
|
+
This code is based on the work by Peter Collingbourne, published as part of the [alaveteli](https://github.com/sebbacon/alaveteli/blob/master/lib/tnef.rb) project.
|
94
|
+
Thank you for sharing!
|
95
|
+
|
96
|
+
Copyright (c) 2010-2011 Georg Ledermann. See MIT-LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,52 +1,15 @@
|
|
1
|
-
require '
|
2
|
-
require 'rake'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "tinnef"
|
8
|
-
gem.summary = %Q{Ruby wrapper for tnef, a tool for unpacking 'winmail.dat' files}
|
9
|
-
gem.description = %Q{Handling e-mail attachments coming with MIME type 'application/ms-tnef' }
|
10
|
-
gem.email = "ledermann@dipl-wirt-inf.de"
|
11
|
-
gem.homepage = "http://github.com/ledermann/tinnef"
|
12
|
-
gem.authors = ["Georg Ledermann"]
|
13
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
14
|
-
end
|
15
|
-
Jeweler::GemcutterTasks.new
|
16
|
-
rescue LoadError
|
17
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
18
|
-
end
|
1
|
+
require 'bundler/gem_tasks'
|
19
2
|
|
3
|
+
require 'rake'
|
20
4
|
require 'rake/testtask'
|
21
|
-
Rake::TestTask.new(:test) do |test|
|
22
|
-
test.libs << 'lib' << 'test'
|
23
|
-
test.pattern = 'test/**/test_*.rb'
|
24
|
-
test.verbose = true
|
25
|
-
end
|
26
|
-
|
27
|
-
begin
|
28
|
-
require 'rcov/rcovtask'
|
29
|
-
Rcov::RcovTask.new do |test|
|
30
|
-
test.libs << 'test'
|
31
|
-
test.pattern = 'test/**/test_*.rb'
|
32
|
-
test.verbose = true
|
33
|
-
end
|
34
|
-
rescue LoadError
|
35
|
-
task :rcov do
|
36
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
task :test => :check_dependencies
|
41
5
|
|
6
|
+
desc 'Default: run unit tests.'
|
42
7
|
task :default => :test
|
43
8
|
|
44
|
-
|
45
|
-
Rake::
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
52
|
-
end
|
9
|
+
desc 'Test the tinnef gem.'
|
10
|
+
Rake::TestTask.new(:test) do |t|
|
11
|
+
t.libs << 'lib'
|
12
|
+
t.libs << 'test'
|
13
|
+
t.pattern = 'test/**/*_test.rb'
|
14
|
+
t.verbose = true
|
15
|
+
end
|
data/lib/tinnef.rb
CHANGED
@@ -1,26 +1,54 @@
|
|
1
1
|
require 'tinnef/dir_patch'
|
2
2
|
|
3
3
|
class TNEF
|
4
|
+
# = convert
|
5
|
+
#
|
6
|
+
# Extract the content of a winmail.dat file and
|
7
|
+
# executes the given block for every single file in it
|
8
|
+
#
|
9
|
+
# Parameters:
|
10
|
+
# content => Content of the winmail.dat file
|
11
|
+
#
|
12
|
+
# Options hash with this keys:
|
13
|
+
# :command
|
14
|
+
# Full path of the tnf binary to execute (defaults to 'tnf', so it has to be in the path)
|
15
|
+
#
|
16
|
+
# Example:
|
17
|
+
# content = File.new('winmail.dat').read
|
18
|
+
# TNEF.convert(content, :command => '/opt/local/bin/tnef') do |temp_file|
|
19
|
+
# unpacked_content = temp_file.read
|
20
|
+
# unpacked_filename = File.basename(temp_file.path)
|
21
|
+
#
|
22
|
+
# File.open("/some/path/#{unpacked_filename}", 'w') do |new_file|
|
23
|
+
# new_file.write(unpacked_content)
|
24
|
+
# end
|
25
|
+
# end
|
4
26
|
def self.convert(content, options={}, &block)
|
5
|
-
command = options[:command] || 'tnef'
|
6
|
-
|
7
27
|
Dir.mktmpdir do |dir|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
raise IOError, "tnef exited with signal #{$?.termsig}"
|
13
|
-
end
|
14
|
-
if $?.exited? && $?.exitstatus != 0
|
15
|
-
raise IOError, "tnef exited with status #{$?.exitstatus}"
|
28
|
+
file_names = extract(content, options.merge(:dir => dir))
|
29
|
+
file_names.each do |file_name|
|
30
|
+
File.open("#{dir}/#{file_name}", "r") do |file|
|
31
|
+
yield(file)
|
16
32
|
end
|
17
33
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.extract(content, options={})
|
38
|
+
command = options[:command] || 'tnef'
|
39
|
+
dir = options[:dir]
|
40
|
+
|
41
|
+
IO.popen("#{command} -K -C #{dir}", "w") do |f|
|
42
|
+
f.write(content)
|
43
|
+
f.close
|
44
|
+
if $?.signaled?
|
45
|
+
raise IOError, "tnef exited with signal #{$?.termsig}"
|
46
|
+
end
|
47
|
+
if $?.exited? && $?.exitstatus != 0
|
48
|
+
raise IOError, "tnef exited with status #{$?.exitstatus}"
|
23
49
|
end
|
24
50
|
end
|
51
|
+
|
52
|
+
Dir.new(dir).sort.delete_if { |file_name| File.directory?(file_name) }
|
25
53
|
end
|
26
54
|
end
|
Binary file
|
data/test/test_helper.rb
ADDED
data/test/tinnef_test.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestDir < Test::Unit::TestCase
|
4
|
+
def test_mktmpdir_path
|
5
|
+
dir = Dir.mktmpdir
|
6
|
+
|
7
|
+
assert File.directory?(dir)
|
8
|
+
assert_equal true, File.directory?(dir)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_mktmpdir_block
|
12
|
+
directory = ''
|
13
|
+
Dir.mktmpdir do |dir|
|
14
|
+
directory = dir
|
15
|
+
end
|
16
|
+
|
17
|
+
assert !File.directory?(directory)
|
18
|
+
assert_equal false, File.directory?(directory)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class TestTinnef < Test::Unit::TestCase
|
23
|
+
def setup
|
24
|
+
@content = File.new(File.dirname(__FILE__) + '/fixtures/quick-winmail.dat').read
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_file_names
|
28
|
+
files = []
|
29
|
+
TNEF.convert(@content) do |temp_file|
|
30
|
+
files << File.basename(temp_file.path)
|
31
|
+
end
|
32
|
+
|
33
|
+
assert_equal %w(quick.doc quick.html quick.pdf quick.txt quick.xml), files
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_content
|
37
|
+
TNEF.convert(@content) do |temp_file|
|
38
|
+
if File.basename(temp_file.path) == 'quick.txt'
|
39
|
+
assert_match /The quick brown fox jumps over the lazy dog/, temp_file.read
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/tinnef.gemspec
CHANGED
@@ -1,52 +1,23 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "tinnef/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
6
|
+
s.name = 'tinnef'
|
7
|
+
s.version = Tinnef::VERSION
|
8
|
+
s.authors = ["Georg Ledermann"]
|
9
|
+
s.email = ["mail@georg-ledermann.de"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Ruby wrapper for tnef, a tool for unpacking 'winmail.dat' files}
|
12
|
+
s.description = %q{Handling e-mail attachments with MIME type 'application/ms-tnef'}
|
9
13
|
|
10
|
-
s.
|
11
|
-
s.authors = ["Georg Ledermann"]
|
12
|
-
s.date = %q{2010-05-18}
|
13
|
-
s.description = %q{Handling e-mail attachments coming with MIME type 'application/ms-tnef' }
|
14
|
-
s.email = %q{ledermann@dipl-wirt-inf.de}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.rdoc",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"lib/tinnef.rb",
|
27
|
-
"lib/tinnef/dir_patch.rb",
|
28
|
-
"test/helper.rb",
|
29
|
-
"test/test_tinnef.rb",
|
30
|
-
"tinnef.gemspec"
|
31
|
-
]
|
32
|
-
s.homepage = %q{http://github.com/ledermann/tinnef}
|
33
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
34
|
-
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = %q{1.3.7}
|
36
|
-
s.summary = %q{Ruby wrapper for tnef, a tool for unpacking 'winmail.dat' files}
|
37
|
-
s.test_files = [
|
38
|
-
"test/helper.rb",
|
39
|
-
"test/test_tinnef.rb"
|
40
|
-
]
|
41
|
-
|
42
|
-
if s.respond_to? :specification_version then
|
43
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
|
-
s.specification_version = 3
|
14
|
+
s.rubyforge_project = "."
|
45
15
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency 'rake'
|
22
|
+
s.add_development_dependency 'mocha'
|
51
23
|
end
|
52
|
-
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tinnef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Georg Ledermann
|
@@ -15,38 +15,66 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
date: 2011-08-25 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rake
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: mocha
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
description: Handling e-mail attachments with MIME type 'application/ms-tnef'
|
49
|
+
email:
|
50
|
+
- mail@georg-ledermann.de
|
24
51
|
executables: []
|
25
52
|
|
26
53
|
extensions: []
|
27
54
|
|
28
|
-
extra_rdoc_files:
|
29
|
-
|
30
|
-
- README.rdoc
|
55
|
+
extra_rdoc_files: []
|
56
|
+
|
31
57
|
files:
|
32
58
|
- .document
|
33
59
|
- .gitignore
|
34
|
-
-
|
35
|
-
-
|
60
|
+
- .travis.yml
|
61
|
+
- Gemfile
|
62
|
+
- MIT-LICENSE
|
63
|
+
- README.md
|
36
64
|
- Rakefile
|
37
|
-
- VERSION
|
38
65
|
- lib/tinnef.rb
|
39
66
|
- lib/tinnef/dir_patch.rb
|
40
|
-
-
|
41
|
-
- test/
|
67
|
+
- lib/tinnef/version.rb
|
68
|
+
- test/fixtures/quick-winmail.dat
|
69
|
+
- test/test_helper.rb
|
70
|
+
- test/tinnef_test.rb
|
42
71
|
- tinnef.gemspec
|
43
|
-
|
44
|
-
homepage: http://github.com/ledermann/tinnef
|
72
|
+
homepage: ""
|
45
73
|
licenses: []
|
46
74
|
|
47
75
|
post_install_message:
|
48
|
-
rdoc_options:
|
49
|
-
|
76
|
+
rdoc_options: []
|
77
|
+
|
50
78
|
require_paths:
|
51
79
|
- lib
|
52
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -69,11 +97,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
97
|
version: "0"
|
70
98
|
requirements: []
|
71
99
|
|
72
|
-
rubyforge_project:
|
73
|
-
rubygems_version: 1.
|
100
|
+
rubyforge_project: .
|
101
|
+
rubygems_version: 1.8.6
|
74
102
|
signing_key:
|
75
103
|
specification_version: 3
|
76
104
|
summary: Ruby wrapper for tnef, a tool for unpacking 'winmail.dat' files
|
77
105
|
test_files:
|
78
|
-
- test/
|
79
|
-
- test/
|
106
|
+
- test/fixtures/quick-winmail.dat
|
107
|
+
- test/test_helper.rb
|
108
|
+
- test/tinnef_test.rb
|
data/README.rdoc
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
= tinnef
|
2
|
-
|
3
|
-
This gem handles e-mail attachments packaged in the Microsoft "application/ms-tnef" MIME type. It's a Ruby wrapper for the 'tnef' converter from http://tnef.sourceforge.net/
|
4
|
-
|
5
|
-
From Wikipedia: "Transport Neutral Encapsulation Format or TNEF is, despite the name, a proprietary E-mail attachment format used by Microsoft Outlook and Microsoft Exchange Server. An attached file with TNEF encoding is most often named winmail.dat or win.dat, and has a MIME type of Application/MS-TNEF."
|
6
|
-
http://en.wikipedia.org/wiki/Transport_Neutral_Encapsulation_Format
|
7
|
-
|
8
|
-
|
9
|
-
== Requirements
|
10
|
-
|
11
|
-
=== Ruby
|
12
|
-
|
13
|
-
Ruby 1.8.6 or 1.8.7 is required. It's not tested with 1.9.
|
14
|
-
|
15
|
-
=== tnef
|
16
|
-
|
17
|
-
The binary of tnef in a recent version is required, 1.4.6 is ok. Check if this tool already exists on your machine:
|
18
|
-
|
19
|
-
tnef --version
|
20
|
-
|
21
|
-
It doesn't exist? You can install it:
|
22
|
-
|
23
|
-
==== Mac OS X
|
24
|
-
|
25
|
-
Using MacPorts, just do:
|
26
|
-
|
27
|
-
sudo ports install tnef
|
28
|
-
|
29
|
-
==== Linux
|
30
|
-
|
31
|
-
There are chances that this will work:
|
32
|
-
|
33
|
-
apt-get install tnef
|
34
|
-
|
35
|
-
Beware: On older Linux distribution, you will get a too old version of tnef, which does not work (e.g. 1.4.3 in Ubuntu hardy), so have to compile it by yourself. It's easy:
|
36
|
-
|
37
|
-
wget http://sourceforge.net/projects/tnef/files/tnef/v1.4.7/tnef-1.4.7.tar.gz/download
|
38
|
-
tar -xzvf tnef-1.4.7.tar.gz
|
39
|
-
cd tnef-1.4.7
|
40
|
-
./configure
|
41
|
-
make
|
42
|
-
make check
|
43
|
-
make install
|
44
|
-
|
45
|
-
==== Windows
|
46
|
-
|
47
|
-
What? I don't think this gem will work on Windows.
|
48
|
-
|
49
|
-
|
50
|
-
== Installation
|
51
|
-
|
52
|
-
In Rails, add this to your environment.rb:
|
53
|
-
|
54
|
-
config.gem 'tinnef'
|
55
|
-
|
56
|
-
Then run
|
57
|
-
|
58
|
-
rake gems:install
|
59
|
-
|
60
|
-
or
|
61
|
-
|
62
|
-
gem install tinnef
|
63
|
-
|
64
|
-
== Usage
|
65
|
-
|
66
|
-
The gem defines the class TNEF with just one class method to converta given winmail.dat file. Use it like in the following example:
|
67
|
-
|
68
|
-
require 'rubygems'
|
69
|
-
require 'tinnef'
|
70
|
-
|
71
|
-
content = File.new('winmail.dat').read
|
72
|
-
TNEF.convert(content, :command => '/opt/local/bin/tnef') do |temp_file|
|
73
|
-
unpacked_content = temp_file.read
|
74
|
-
unpacked_filename = File.basename(temp_file.path)
|
75
|
-
|
76
|
-
File.open("/some/path/#{unpacked_filename}", 'w') do |new_file|
|
77
|
-
new_file.write(unpacked_content)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
|
82
|
-
== About the naming of this gem
|
83
|
-
|
84
|
-
"Tinnef" is a german slang word for "rubbish" or "trash". TNEF => TiNnEF => Tinnef - you know?
|
85
|
-
|
86
|
-
|
87
|
-
== TODO
|
88
|
-
|
89
|
-
* Add some tests
|
90
|
-
|
91
|
-
|
92
|
-
== Note on Patches/Pull Requests
|
93
|
-
|
94
|
-
* Fork the project.
|
95
|
-
* Make your feature addition or bug fix.
|
96
|
-
* Add tests for it. This is important so I don't break it in a
|
97
|
-
future version unintentionally.
|
98
|
-
* Commit, do not mess with rakefile, version, or history.
|
99
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
100
|
-
* Send me a pull request. Bonus points for topic branches.
|
101
|
-
|
102
|
-
== Copyright
|
103
|
-
|
104
|
-
This code is based on the work by Peter Collingbourne, published as part of the project "whatdotheyknow":
|
105
|
-
http://github.com/mysociety/whatdotheyknow/blob/master/lib/tnef.rb
|
106
|
-
Thank you for sharing!
|
107
|
-
|
108
|
-
Copyright (c) 2010 Georg Ledermann. See LICENSE for details.
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.0
|
data/test/helper.rb
DELETED