hcutil 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cda8f8722f1082df41310321a8247b8d774faa9a
4
- data.tar.gz: 5735490131e3f9a06e4e2530fcbccbad902edb66
3
+ metadata.gz: 1b2d4db37dec70fc55763424aeb341cae0a595ee
4
+ data.tar.gz: f1b7ae56e3ebc44be84c593d73a2f2cd0162149f
5
5
  SHA512:
6
- metadata.gz: 237efc41d13f825978b7b2be90dbb4b94ecf53233c0cc642b664aae9e8bb6c3f923013f1d6063aa0262bc16d4509aa3b3bcca02cb6f756c453425e9aa6083a4a
7
- data.tar.gz: c3f95714e3a609b3b9ddf790db4e57c2dc35e16a23e1c6c0e0224702b779859440789dea14c5ef862407cbf791ba767b25a02efee1531dd9cc75cb03ece8ce2f
6
+ metadata.gz: 3f5112d7905de4e6f90c8160b1320ad82cfee7605e4c4fbbbab667606614e3f35ebdabfbd9686a0b65ecfb9a26aee0ba7a57583be49beec709b1552ebe94e45c
7
+ data.tar.gz: a2968479fcc425d637b87df4d056c34c0c3502f5c9b21c9be588801e14dd5193f1905eb1cc0ce551905d65a6d8de2c70607b6071c45a27ed2c6b499f1ce74ef1
data/lib/hcutil/cli.rb CHANGED
@@ -29,7 +29,7 @@ module HCUtil
29
29
  :desc => 'Date from which to copy messages',
30
30
  :type => :string,
31
31
  :aliases => '-d',
32
- :default => Time.now)
32
+ :default => Time.now.utc)
33
33
  option(:num_items,
34
34
  :desc => 'Number of chat messages to copy',
35
35
  :aliases => '-n',
data/lib/hcutil/copier.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'hcutil/errors'
2
+ require 'hcutil/extensions'
2
3
  require 'hcutil/op_base'
3
4
  require 'uri'
4
5
  require 'cgi'
@@ -9,7 +10,7 @@ module HCUtil
9
10
  def initialize(room_name = 'Client Services', options = {})
10
11
  super(options)
11
12
  @room_name = room_name
12
- @num_items = @options[:num_items] ||25
13
+ @num_items = @options[:num_items] || 25
13
14
  end
14
15
 
15
16
  def get_room_id(start_index=0)
@@ -81,21 +82,15 @@ module HCUtil
81
82
  return room_id
82
83
  end
83
84
 
84
- def copy
85
- room_id = get_room_id
86
- if room_id == 0
87
- raise(Errors::CopierError, "Room with name '#{@room_name}' could not be found")
88
- end
89
-
90
- chat_date = @options[:date]
91
- $stderr.puts("Getting history for #{chat_date.to_s}") if @verbose
85
+ def get_history(room_id, chat_date, msg_count, start_index, jsons)
92
86
 
93
87
  param_arg = {
94
88
  :accept => :json,
95
89
  :params => {
96
90
  :auth_token => @auth.auth_token,
97
91
  :date => chat_date,
98
- 'max-results' => @num_items
92
+ 'start-index' => start_index,
93
+ 'max-results' => 100
99
94
  }
100
95
  }
101
96
 
@@ -104,28 +99,74 @@ module HCUtil
104
99
  RestClient.get(uri, param_arg) do |response, request, result|
105
100
  if result.is_a? Net::HTTPSuccess
106
101
  json = JSON.parse(response.body)
102
+ jsons.unshift(json)
103
+ items = json['items']
104
+ unless items.nil?
105
+ msg_count += items.count
106
+ links = json['links']
107
+ if msg_count >= @num_items or links.nil?
108
+ return jsons
109
+ else
110
+ next_uri = links['next']
111
+ unless next_uri.nil_or_empty?
112
+ query = URI.parse(next_uri).query
113
+ query_params = CGI.parse(query)
114
+ start_index = query_params['start-index'].first
115
+ $stderr.puts("retrieving history for room '#{room_id}' with start_index #{start_index} next_uri #{next_uri}") if @verbose
116
+ return get_history(room_id, chat_date, msg_count, start_index, jsons)
117
+ end
118
+ end
119
+ else
120
+ raise(Errors::CopierError, "Room with id '#{room_id}' - could not parse history JSON - missing 'items'")
121
+ end
107
122
  else
108
123
  raise(Errors::RESTError.new(result, uri, response))
109
124
  end
110
125
  end
126
+ return jsons
127
+ end
128
+
129
+ def copy
130
+ room_id = get_room_id
131
+ if room_id == 0
132
+ raise(Errors::CopierError, "Room with name '#{@room_name}' could not be found")
133
+ end
134
+
135
+ opt_date = @options[:date]
136
+ if opt_date.is_a?(Time)
137
+ chat_date = opt_date
138
+ else
139
+ chat_date = Time.parse(opt_date)
140
+ end
141
+ chat_date_utc_iso8601_s = chat_date.dup.utc.iso8601.to_s
142
+ $stderr.puts("Getting history for date #{chat_date.to_s} utc/iso8601 #{chat_date_utc_iso8601_s}") if @verbose
143
+
144
+ jsons = []
145
+ get_history(room_id, chat_date_utc_iso8601_s, 0, 0, jsons)
111
146
 
112
147
  if @debug
113
148
  chat_json_file = "messages-#{room_id}-#{chat_date.strftime('%Y-%m-%d')}.json"
114
- File.open(chat_json_file, 'w') { |f| f.write(json.inspect) }
149
+ File.open(chat_json_file, 'w') do |f|
150
+ jsons.each do |json|
151
+ f.write(json.inspect)
152
+ end
153
+ end
115
154
  $stderr.puts "Chat JSON saved to #{chat_json_file}"
116
155
  end
117
156
 
118
- items = json['items']
119
- items.each do |item|
120
- date = Time.parse(item['date']).strftime('%Y-%m-%d %H:%M:%S')
121
- from = item['from']
122
- if from.is_a?(Hash)
123
- name = from['name']
124
- else
125
- name = from
157
+ jsons.each do |json|
158
+ items = json['items']
159
+ items.each do |item|
160
+ date = Time.parse(item['date']).strftime('%Y-%m-%d %H:%M:%S')
161
+ from = item['from']
162
+ if from.is_a?(Hash)
163
+ name = from['name']
164
+ else
165
+ name = from
166
+ end
167
+ message = item['message']
168
+ puts "#{date} #{name}: #{message}"
126
169
  end
127
- message = item['message']
128
- puts "#{date} #{name}: #{message}"
129
170
  end
130
171
  end
131
172
  end
@@ -1,3 +1,3 @@
1
1
  module HCUtil
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hcutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Bakken
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-13 00:00:00.000000000 Z
11
+ date: 2014-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor