hangout 0.0.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/.rbenv-version +1 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +28 -0
- data/README +18 -0
- data/Rakefile +9 -0
- data/bin/hangout +23 -0
- data/hangout.gemspec +19 -0
- data/lib/hangout/auth.rb +22 -0
- data/lib/hangout/checkin.rb +35 -0
- data/lib/hangout/color.rb +7 -0
- data/lib/hangout.rb +3 -0
- data/test/checkin_test.rb +55 -0
- metadata +69 -0
data/.rbenv-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.9.3-p125
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
addressable (2.2.7)
|
5
|
+
faraday (0.7.6)
|
6
|
+
addressable (~> 2.2)
|
7
|
+
multipart-post (~> 1.1)
|
8
|
+
rack (~> 1.1)
|
9
|
+
faraday_middleware (0.8.4)
|
10
|
+
faraday (>= 0.7.4, < 0.9)
|
11
|
+
foursquare2 (1.3.6)
|
12
|
+
faraday (>= 0.6, < 0.8)
|
13
|
+
faraday_middleware (>= 0.8)
|
14
|
+
hashie (~> 1.0)
|
15
|
+
hashie (1.2.0)
|
16
|
+
minitest (2.11.3)
|
17
|
+
multipart-post (1.1.5)
|
18
|
+
rack (1.4.1)
|
19
|
+
rake (0.9.2.2)
|
20
|
+
|
21
|
+
PLATFORMS
|
22
|
+
ruby
|
23
|
+
|
24
|
+
DEPENDENCIES
|
25
|
+
foursquare2
|
26
|
+
hashie
|
27
|
+
minitest
|
28
|
+
rake
|
data/README
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
___ ___ ___ ___ ___ ___ ___
|
2
|
+
/\__\ /\ \ /\__\ /\ \ /\ \ /\__\ /\ \
|
3
|
+
/:/__/_ /::\ \ /:| _|_ /::\ \ /::\ \ /:/ _/_ \:\ \
|
4
|
+
/::\/\__\ /::\:\__\ /::|/\__\ /:/\:\__\ /:/\:\__\ /:/_/\__\ /::\__\
|
5
|
+
\/\::/ / \/\::/ / \/|::/ / \:\:\/__/ \:\/:/ / \:\/:/ / /:/\/__/
|
6
|
+
/:/ / /:/ / |:/ / \::/ / \::/ / \::/ / \/__/
|
7
|
+
\/__/ \/__/ \/__/ \/__/ \/__/ \/__/
|
8
|
+
|
9
|
+
Hangout is a simple command line interface to your friend's recent check-ins on
|
10
|
+
FourSquare. All of the cool kids are using it and you just have to go and
|
11
|
+
hangout with them.
|
12
|
+
|
13
|
+
Usage
|
14
|
+
-----
|
15
|
+
|
16
|
+
Just bash the following command into your prompt to join all of the cool kids.
|
17
|
+
|
18
|
+
$ hangout
|
data/Rakefile
ADDED
data/bin/hangout
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler/setup'
|
4
|
+
|
5
|
+
require 'foursquare2'
|
6
|
+
|
7
|
+
$:.unshift File.join File.dirname(__FILE__), '../lib'
|
8
|
+
require 'hangout'
|
9
|
+
|
10
|
+
CLIENT_ID = "KBLF31MGQW5WFW3RUH5CLL2QBXG1JG2L0DEJLIY1S5MXPFX0"
|
11
|
+
REDIRECT_URI = "http://xoeb.us/hangout/callback"
|
12
|
+
CONFIG_FILE = File.expand_path("~/.foursquare")
|
13
|
+
|
14
|
+
client = Foursquare2::Client.new(:oauth_token => get_user_token)
|
15
|
+
|
16
|
+
recent_checkins = client.recent_checkins :afterTimestamp => Time.now.to_i - 14400
|
17
|
+
|
18
|
+
recent_checkins.each do |checkin|
|
19
|
+
c = Hangout::Checkin.parse(checkin)
|
20
|
+
puts c
|
21
|
+
end
|
22
|
+
|
23
|
+
|
data/hangout.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
2
|
+
$:.unshift lib unless $:.include?(lib)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "hangout"
|
6
|
+
s.version = "0.0.1"
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Chris Brown"]
|
9
|
+
s.email = ["xoebus@xoeb.us"]
|
10
|
+
s.homepage = "https://github.com/xoebus/hangout"
|
11
|
+
s.summary = "Find nearby foursquare friends to hangout with."
|
12
|
+
s.description = "Find foursquare friends that have checked in nearby you recently. More features soon."
|
13
|
+
|
14
|
+
s.add_dependency('foursquare2')
|
15
|
+
|
16
|
+
s.require_path = 'lib'
|
17
|
+
s.bindir = 'bin'
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
end
|
data/lib/hangout/auth.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
def authorize client_id, redirect_uri
|
2
|
+
`open https://foursquare.com/oauth2/authenticate?client_id=#{client_id}&response_type=token&redirect_uri=#{redirect_uri}`
|
3
|
+
end
|
4
|
+
|
5
|
+
def get_user_token
|
6
|
+
if File.exists? CONFIG_FILE
|
7
|
+
File.read CONFIG_FILE
|
8
|
+
else
|
9
|
+
puts "Well shucks, looks like you haven't used this little app before."
|
10
|
+
puts "I'm going to open the browser now and grab a number for you. Could"
|
11
|
+
puts "you do me a favour and paste it in here?"
|
12
|
+
puts
|
13
|
+
puts "<Press return to open your browser...>"
|
14
|
+
gets
|
15
|
+
authorize CLIENT_ID, REDIRECT_URI
|
16
|
+
puts "Paste the key in here:"
|
17
|
+
key = gets
|
18
|
+
File.new(CONFIG_FILE) do |f|
|
19
|
+
f.write(key)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Hangout
|
2
|
+
class InvalidCheckinError < StandardError; end;
|
3
|
+
|
4
|
+
class Checkin
|
5
|
+
attr_reader :user_name
|
6
|
+
attr_reader :created_at
|
7
|
+
attr_reader :location
|
8
|
+
|
9
|
+
def self.parse checkin
|
10
|
+
new.parse checkin
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse(checkin)
|
14
|
+
begin
|
15
|
+
@user_name = [checkin.user.firstName, checkin.user.lastName].join " "
|
16
|
+
@created_at = Time.at(checkin.createdAt)
|
17
|
+
@location = checkin.venue.name
|
18
|
+
rescue NoMethodError => e
|
19
|
+
raise InvalidCheckinError
|
20
|
+
end
|
21
|
+
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def time
|
26
|
+
hour = @created_at.hour.to_s.rjust(2, '0')
|
27
|
+
mins = @created_at.min.to_s.rjust(2, '0')
|
28
|
+
"#{hour}:#{mins}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_s
|
32
|
+
"#{user_name} - #{location} (#{time})"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/hangout.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
|
3
|
+
require 'hashie'
|
4
|
+
require 'hangout'
|
5
|
+
|
6
|
+
module Hangout
|
7
|
+
class CheckinTest < MiniTest::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
@hash_good = good_hash
|
10
|
+
@hash_bad = bad_hash
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_parse
|
14
|
+
c = Checkin.parse(@hash_good)
|
15
|
+
|
16
|
+
assert_equal c.user_name, "Chris Brown"
|
17
|
+
assert_equal c.time, "05:04"
|
18
|
+
assert_equal c.location, "Disneyland!"
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_parse_missing_attributes
|
22
|
+
assert_raises (InvalidCheckinError) {
|
23
|
+
c = Checkin.parse(@hash_bad)
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_string
|
28
|
+
c = Checkin.parse(@hash_good)
|
29
|
+
s = c.to_s
|
30
|
+
|
31
|
+
assert_match /Chris Brown/, s
|
32
|
+
assert_match /05:04/, s
|
33
|
+
assert_match /Disneyland!/, s
|
34
|
+
|
35
|
+
# Check we aren't outputting an ugly date format.
|
36
|
+
refute_match /\d\d-\d\d/, s
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def good_hash
|
41
|
+
h = ::Hashie::Mash.new
|
42
|
+
h.user!.firstName = "Chris"
|
43
|
+
h.user!.lastName = "Brown"
|
44
|
+
h.createdAt = Time.local(2008, 9, 1, 5, 4, 35).to_i
|
45
|
+
h.venue!.name = "Disneyland!"
|
46
|
+
|
47
|
+
h
|
48
|
+
end
|
49
|
+
|
50
|
+
def bad_hash
|
51
|
+
h = good_hash.name = nil
|
52
|
+
h
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hangout
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Chris Brown
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: foursquare2
|
16
|
+
requirement: &70292333398320 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70292333398320
|
25
|
+
description: Find foursquare friends that have checked in nearby you recently. More
|
26
|
+
features soon.
|
27
|
+
email:
|
28
|
+
- xoebus@xoeb.us
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- .rbenv-version
|
34
|
+
- Gemfile
|
35
|
+
- Gemfile.lock
|
36
|
+
- README
|
37
|
+
- Rakefile
|
38
|
+
- bin/hangout
|
39
|
+
- hangout.gemspec
|
40
|
+
- lib/hangout.rb
|
41
|
+
- lib/hangout/auth.rb
|
42
|
+
- lib/hangout/checkin.rb
|
43
|
+
- lib/hangout/color.rb
|
44
|
+
- test/checkin_test.rb
|
45
|
+
homepage: https://github.com/xoebus/hangout
|
46
|
+
licenses: []
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options: []
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
requirements: []
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.8.11
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: Find nearby foursquare friends to hangout with.
|
69
|
+
test_files: []
|