halo-reach-api 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +3 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/halo-reach-api.gemspec +8 -5
- data/lib/halo-reach-api.rb +1 -1
- data/lib/halo-reach-util.rb +19 -0
- data/test/helper.rb +1 -0
- data/test/test_halo-reach-api.rb +1 -1
- data/test/test_halo-reach-util.rb +41 -0
- metadata +8 -5
data/README.rdoc
CHANGED
@@ -44,8 +44,9 @@ Q: Dates are funky and not parsed as dates. For example:
|
|
44
44
|
"Name" : "Pass the Rock"
|
45
45
|
},
|
46
46
|
|
47
|
-
A: Yes they are funky. Yes. They. Are.
|
48
|
-
|
47
|
+
A: Yes they are funky. Yes. They. Are. You can now parse them out with the Halo::Reach::Util class.
|
48
|
+
|
49
|
+
>> parsed_time, parsed_timezone = Halo::Reach::Util::parse_timestamp(api_timestamp)
|
49
50
|
|
50
51
|
== Contributing to halo-reach-api
|
51
52
|
|
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ require 'jeweler'
|
|
13
13
|
Jeweler::Tasks.new do |gem|
|
14
14
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
15
|
gem.name = "halo-reach-api"
|
16
|
-
gem.homepage = "http://github.com/
|
16
|
+
gem.homepage = "http://github.com/agoragames/halo-reach-api"
|
17
17
|
gem.license = "MIT"
|
18
18
|
gem.summary = %Q{Ruby gem for interacting with the Halo:Reach API}
|
19
19
|
gem.description = %Q{Ruby gem for interacting with the Halo:Reach API}
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.1
|
data/halo-reach-api.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{halo-reach-api}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Czarnecki"]
|
12
|
-
s.date = %q{2010-11-
|
12
|
+
s.date = %q{2010-11-23}
|
13
13
|
s.description = %q{Ruby gem for interacting with the Halo:Reach API}
|
14
14
|
s.email = %q{dczarnecki@agoragames.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
"VERSION",
|
28
28
|
"halo-reach-api.gemspec",
|
29
29
|
"lib/halo-reach-api.rb",
|
30
|
+
"lib/halo-reach-util.rb",
|
30
31
|
"test/fakeweb/get_current_challenges.json",
|
31
32
|
"test/fakeweb/get_file_details.json",
|
32
33
|
"test/fakeweb/get_game_details.json",
|
@@ -42,16 +43,18 @@ Gem::Specification.new do |s|
|
|
42
43
|
"test/fakeweb/get_player_rendered_videos.json",
|
43
44
|
"test/fakeweb/reach_file_search.json",
|
44
45
|
"test/helper.rb",
|
45
|
-
"test/test_halo-reach-api.rb"
|
46
|
+
"test/test_halo-reach-api.rb",
|
47
|
+
"test/test_halo-reach-util.rb"
|
46
48
|
]
|
47
|
-
s.homepage = %q{http://github.com/
|
49
|
+
s.homepage = %q{http://github.com/agoragames/halo-reach-api}
|
48
50
|
s.licenses = ["MIT"]
|
49
51
|
s.require_paths = ["lib"]
|
50
52
|
s.rubygems_version = %q{1.3.7}
|
51
53
|
s.summary = %q{Ruby gem for interacting with the Halo:Reach API}
|
52
54
|
s.test_files = [
|
53
55
|
"test/helper.rb",
|
54
|
-
"test/test_halo-reach-api.rb"
|
56
|
+
"test/test_halo-reach-api.rb",
|
57
|
+
"test/test_halo-reach-util.rb"
|
55
58
|
]
|
56
59
|
|
57
60
|
if s.respond_to? :specification_version then
|
data/lib/halo-reach-api.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Halo
|
2
|
+
module Reach
|
3
|
+
class Util
|
4
|
+
def self.parse_timestamp(timestamp = nil)
|
5
|
+
# Expected format: '/Date(1284497520000-0700)/'
|
6
|
+
# The API returns the date as a UNIX timestamp in milliseconds
|
7
|
+
# The "0700" represents the timezone, in this example the U.S. Pacific (GMT-7) timezone
|
8
|
+
# (http://www.haloreachapi.net/wiki/Date_time_format)
|
9
|
+
|
10
|
+
if timestamp && (timestamp =~ /^\/Date\((\d+)-(\d+)\)\/$/)
|
11
|
+
return [Time.at($1.to_i / 1000).utc, $2]
|
12
|
+
else
|
13
|
+
raise ArgumentError.new('Invalid timestamp')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
data/test/helper.rb
CHANGED
data/test/test_halo-reach-api.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestHaloReachUtil < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_can_parse_correctly_formatted_timestamp
|
6
|
+
utc_time = Time.now.utc
|
7
|
+
milliseconds_since_epoch = utc_time.to_i * 1000
|
8
|
+
timezone = '0500'
|
9
|
+
api_timestamp = build_timestamp(milliseconds_since_epoch, timezone)
|
10
|
+
|
11
|
+
parsed_time, parsed_timezone = Halo::Reach::Util::parse_timestamp(api_timestamp)
|
12
|
+
assert_equal utc_time.to_s, parsed_time.to_s
|
13
|
+
assert_equal timezone, parsed_timezone
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_raise_invalid_timestamp_argument_error_on_malformed_timestamp
|
17
|
+
invalid_timestamps = [
|
18
|
+
nil, # nothing at all
|
19
|
+
'', # empty timestamp
|
20
|
+
'/Date(/', # generally malformed timestamp
|
21
|
+
'/Date()/', # malformed timestamp missing actual data
|
22
|
+
build_timestamp('',''), # missing both millisends and timezone
|
23
|
+
build_timestamp('','0700'), # missing millisends
|
24
|
+
build_timestamp(Time.now.utc.to_i * 1000, ''), # missing timezone
|
25
|
+
build_timestamp('abc1041', '04jhg'), # prepended/trailing garbage
|
26
|
+
build_timestamp('43gi', 'tb01'), # trailing/prepended garbage
|
27
|
+
build_timestamp('ed456mb', 'mvn029hgd'), # surrounded by garbage
|
28
|
+
build_timestamp('asd;kf', 'sdfoih') # omg pure garbage
|
29
|
+
]
|
30
|
+
|
31
|
+
invalid_timestamps.each do |invalid_timestamp|
|
32
|
+
assert_raises(ArgumentError) do
|
33
|
+
Halo::Reach::Util::parse_timestamp(invalid_timestamp)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def build_timestamp(milliseconds_since_epoch, timezone)
|
39
|
+
"/Date(#{milliseconds_since_epoch.to_s}-#{timezone.to_s})/"
|
40
|
+
end
|
41
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: halo-reach-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Czarnecki
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-23 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- VERSION
|
113
113
|
- halo-reach-api.gemspec
|
114
114
|
- lib/halo-reach-api.rb
|
115
|
+
- lib/halo-reach-util.rb
|
115
116
|
- test/fakeweb/get_current_challenges.json
|
116
117
|
- test/fakeweb/get_file_details.json
|
117
118
|
- test/fakeweb/get_game_details.json
|
@@ -128,8 +129,9 @@ files:
|
|
128
129
|
- test/fakeweb/reach_file_search.json
|
129
130
|
- test/helper.rb
|
130
131
|
- test/test_halo-reach-api.rb
|
132
|
+
- test/test_halo-reach-util.rb
|
131
133
|
has_rdoc: true
|
132
|
-
homepage: http://github.com/
|
134
|
+
homepage: http://github.com/agoragames/halo-reach-api
|
133
135
|
licenses:
|
134
136
|
- MIT
|
135
137
|
post_install_message:
|
@@ -165,3 +167,4 @@ summary: Ruby gem for interacting with the Halo:Reach API
|
|
165
167
|
test_files:
|
166
168
|
- test/helper.rb
|
167
169
|
- test/test_halo-reach-api.rb
|
170
|
+
- test/test_halo-reach-util.rb
|