madrox 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/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,17 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ madrox (0.1.0)
5
+ yajl-ruby (~> 0.7.7)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ yajl-ruby (0.7.8)
11
+
12
+ PLATFORMS
13
+ ruby
14
+
15
+ DEPENDENCIES
16
+ madrox!
17
+ yajl-ruby (~> 0.7.7)
data/README.md CHANGED
@@ -45,6 +45,12 @@ them locally.
45
45
  @bob: @rick: sup?
46
46
  @rick: Hi
47
47
 
48
+ ## TODO
49
+
50
+ * Twitter pushing support
51
+ * Git Notes for Twitter (or other) metadata.
52
+ * Better importing.
53
+
48
54
  ## Requirements
49
55
 
50
56
  gem install grit
data/bin/madrox CHANGED
@@ -5,6 +5,9 @@ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
5
5
  require 'optparse'
6
6
  require 'rubygems'
7
7
  require 'madrox'
8
+ require 'open-uri'
9
+ require 'time'
10
+ require 'yajl'
8
11
 
9
12
  help = <<HELP
10
13
  Madrox is a distributed Twitter implementation on Git.
@@ -32,6 +35,18 @@ opts = OptionParser.new do |opts|
32
35
  options[:msg] = msg
33
36
  end
34
37
 
38
+ opts.on('--import [name]', "Import from external service (twitter)") do |name|
39
+ options[:import] = name.to_sym
40
+ end
41
+
42
+ opts.on('--since-id [ID]', "Oldest Twitter ID to import") do |id|
43
+ options[:since_id] = id
44
+ end
45
+
46
+ opts.on('--max-id [ID]', "Newest Twitter ID to import") do |id|
47
+ options[:max_id] = id
48
+ end
49
+
35
50
  opts.on('--irb', "Loads an IRB session") do
36
51
  options[:irb] = true
37
52
  end
@@ -88,8 +103,36 @@ if options[:irb]
88
103
 
89
104
  puts "Loaded Madrox wiki at #{File.expand_path(m_path).inspect}."
90
105
  IRB.start_session(binding)
91
- else
92
- timeline.messages.each do |commit|
93
- puts "[#{commit.committed_date}] @#{commit.author.name}: #{commit.message}"
106
+ else
107
+ case options[:import]
108
+ when :twitter
109
+ puts "Importing tweets from Twitter..."
110
+ page = 1
111
+ result = []
112
+ tweets = []
113
+ url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=#{timeline.user}&trim_user=1&count=200"
114
+ if options[:since_id]
115
+ url << "&since_id=#{options[:since_id]}"
116
+ end
117
+ if options[:max_id]
118
+ url << "&max_id=#{options[:max_id]}"
119
+ end
120
+ until page > 1 && result.empty?
121
+ open("#{url}&page=#{page}") do |f|
122
+ page += 1
123
+ result = Yajl::Parser.parse(f.read)
124
+ tweets.push *result if !result.empty?
125
+ end
126
+ end
127
+ puts "Importing #{tweets.size} tweets..."
128
+ tweets.reverse!
129
+ tweets.each_with_index do |tweet, idx|
130
+ puts tweet['id'] if (idx + 1) % 100 == 0
131
+ timeline.post(tweet['text'], :committed_date => Time.parse(tweet['created_at']))
132
+ end
133
+ else # no importer, just list their tweets
134
+ timeline.messages.each do |commit|
135
+ puts "[#{commit.committed_date}] @#{commit.author.name}: #{commit.message}"
136
+ end
94
137
  end
95
138
  end
data/lib/madrox.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Madrox
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
4
4
 
5
5
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'vendor', 'grit', 'lib')
data/madrox.gemspec CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'madrox'
16
- s.version = '0.1.0'
17
- s.date = '2010-10-22'
16
+ s.version = '0.1.1'
17
+ s.date = '2010-10-23'
18
18
  s.rubyforge_project = 'madrox'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -39,7 +39,7 @@ Gem::Specification.new do |s|
39
39
 
40
40
  ## List your runtime dependencies here. Runtime dependencies are those
41
41
  ## that are needed for an end user to actually USE your code.
42
- #s.add_dependency('DEPNAME', [">= 1.1.0", "< 2.0.0"])
42
+ s.add_dependency('yajl-ruby', ["~> 0.7.7"])
43
43
 
44
44
  ## List your development dependencies here. Development dependencies are
45
45
  ## those that are only needed during development
@@ -50,6 +50,8 @@ Gem::Specification.new do |s|
50
50
  ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
51
51
  # = MANIFEST =
52
52
  s.files = %w[
53
+ Gemfile
54
+ Gemfile.lock
53
55
  LICENSE
54
56
  README.md
55
57
  Rakefile
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Rick Olson
@@ -14,10 +14,24 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-22 00:00:00 +02:00
17
+ date: 2010-10-23 00:00:00 +02:00
18
18
  default_executable: madrox
19
- dependencies: []
20
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: yajl-ruby
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 7
31
+ - 7
32
+ version: 0.7.7
33
+ type: :runtime
34
+ version_requirements: *id001
21
35
  description: Distributed Twitter implementation on Git.
22
36
  email: technoweenie@gmail.com
23
37
  executables:
@@ -27,6 +41,8 @@ extensions: []
27
41
  extra_rdoc_files: []
28
42
 
29
43
  files:
44
+ - Gemfile
45
+ - Gemfile.lock
30
46
  - LICENSE
31
47
  - README.md
32
48
  - Rakefile
@@ -1489,6 +1505,7 @@ rdoc_options: []
1489
1505
  require_paths:
1490
1506
  - lib
1491
1507
  required_ruby_version: !ruby/object:Gem::Requirement
1508
+ none: false
1492
1509
  requirements:
1493
1510
  - - ">="
1494
1511
  - !ruby/object:Gem::Version
@@ -1496,6 +1513,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
1496
1513
  - 0
1497
1514
  version: "0"
1498
1515
  required_rubygems_version: !ruby/object:Gem::Requirement
1516
+ none: false
1499
1517
  requirements:
1500
1518
  - - ">="
1501
1519
  - !ruby/object:Gem::Version
@@ -1505,7 +1523,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1505
1523
  requirements: []
1506
1524
 
1507
1525
  rubyforge_project: madrox
1508
- rubygems_version: 1.3.6
1526
+ rubygems_version: 1.3.7
1509
1527
  signing_key:
1510
1528
  specification_version: 2
1511
1529
  summary: Distributed Twitter implementation on Git.