knock-knock 0.1.5 → 0.1.6
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/History.txt +5 -0
- data/README.rdoc +7 -3
- data/lib/bubble/knock_knock/connection.rb +10 -6
- data/lib/bubble/knock_knock/request.rb +4 -6
- data/lib/bubble/knock_knock/services.rb +36 -0
- data/lib/knock_knock.rb +2 -1
- data/test/test_knock_knock.rb +6 -10
- data/test/test_request.rb +1 -1
- metadata +2 -9
- data/Manifest.txt +0 -14
- data/Rakefile +0 -29
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
data/History.txt
CHANGED
data/README.rdoc
CHANGED
@@ -6,7 +6,7 @@ KnockKnock was made to turn login with Google Authentication API easier.
|
|
6
6
|
* Singleton class for connection with Google.
|
7
7
|
* Simple authentication and clear code.
|
8
8
|
* GET, POST, PUT, DELETE method implemented
|
9
|
-
* Connection with any Google Account, even
|
9
|
+
* Connection with any Google Account, even Hosted Google Accounts[http://google.com/a]
|
10
10
|
|
11
11
|
== Synopsis
|
12
12
|
|
@@ -15,16 +15,20 @@ KnockKnock was made to turn login with Google Authentication API easier.
|
|
15
15
|
|
16
16
|
include Bubble::KnockKnock
|
17
17
|
|
18
|
-
Connection.
|
18
|
+
Connection.connect('email@gmail.com', 'password', Services::GoogleContacts)
|
19
19
|
|
20
20
|
print Request.get('http://www.google.com/m8/feeds/contacts/email%40gmail.com/full')
|
21
21
|
|
22
|
+
== Services
|
23
|
+
|
24
|
+
All the API for any Google Service works with KnockKnock. You can check the Services[http://knock-knock.rubyforge.org/rdoc/classes/Bubble/KnockKnock/Services.html] module to see some examples.
|
25
|
+
|
22
26
|
== Install
|
23
27
|
|
24
28
|
sudo gem install knock-knock
|
25
29
|
|
26
30
|
== Contributors
|
27
|
-
*
|
31
|
+
* Jonathan Towell (http://moxiemachine.com/blog)
|
28
32
|
|
29
33
|
== License
|
30
34
|
|
@@ -26,6 +26,16 @@ module Bubble
|
|
26
26
|
# require 'knock_knock'
|
27
27
|
#
|
28
28
|
# Bubble::KnockKnock::Connection.connect('email@gmail.com', 'password', 'cp')
|
29
|
+
def self.connect(email, password, service)
|
30
|
+
instance.connect(email, password, service)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Retrieve the Auth Token required for authentications on all Google Services.
|
34
|
+
def self.auth
|
35
|
+
instance.auth
|
36
|
+
end
|
37
|
+
|
38
|
+
# This method creates the connection, but internally. To create the connection you must use Connection.connect() method.
|
29
39
|
def connect(email, password, service)
|
30
40
|
@email = email
|
31
41
|
@password = password
|
@@ -34,14 +44,8 @@ module Bubble
|
|
34
44
|
setup
|
35
45
|
stablish
|
36
46
|
end
|
37
|
-
|
38
|
-
# Retrieve the Auth Token required for authentications on all Google Services.
|
39
|
-
def auth
|
40
|
-
@auth
|
41
|
-
end
|
42
47
|
|
43
48
|
protected
|
44
|
-
|
45
49
|
# It gives the correct values to attributes and variables required to make the connection.
|
46
50
|
# You can connect with any Google Account, even it's a hosted account (thanks, Jonathan Towell)
|
47
51
|
def setup
|
@@ -9,13 +9,11 @@ module Bubble
|
|
9
9
|
|
10
10
|
# Finds the Singleton Connection and creates the header structure to requesting informations.
|
11
11
|
def initialize
|
12
|
-
raise UnstablishedConnection if Connection.
|
13
|
-
|
14
|
-
|
15
|
-
@header = {'Cookie' => "Name=#{connection.auth};Auth=#{connection.auth};Domain=.google.com;Path=/;Expires=160000000000",
|
12
|
+
raise UnstablishedConnection if Connection.auth.nil?
|
13
|
+
|
14
|
+
@header = {'Cookie' => "Name=#{Connection.auth};Auth=#{Connection.auth};Domain=.google.com;Path=/;Expires=160000000000",
|
16
15
|
'Content-length' => '0',
|
17
|
-
'Authorization' => "GoogleLogin auth=#{
|
18
|
-
}
|
16
|
+
'Authorization' => "GoogleLogin auth=#{Connection.auth}" }
|
19
17
|
end
|
20
18
|
|
21
19
|
# Get the data from any Google Service.
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Bubble
|
2
|
+
module KnockKnock
|
3
|
+
|
4
|
+
# This module helps the developer to use many Google Services
|
5
|
+
module Services
|
6
|
+
|
7
|
+
# http://code.google.com/apis/contacts/docs/2.0/developers_guide_protocol.html#client_login
|
8
|
+
GoogleContacts = 'cp'
|
9
|
+
|
10
|
+
# http://code.google.com/apis/calendar/docs/2.0/developers_guide_protocol.html#AuthClientLogin
|
11
|
+
GoogleCalendar = 'cl'
|
12
|
+
|
13
|
+
# http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#Authentication
|
14
|
+
GoogleApps = 'apps'
|
15
|
+
|
16
|
+
# http://code.google.com/apis/finance/developers_guide_protocol.html#ClientLogin
|
17
|
+
GoogleFinance = 'finance'
|
18
|
+
|
19
|
+
# http://code.google.com/apis/spreadsheets/docs/2.0/developers_guide_protocol.html#Authenticating
|
20
|
+
GoogleSpreadsheets = 'wise'
|
21
|
+
|
22
|
+
# http://code.google.com/apis/documents/docs/2.0/developers_guide_protocol.html#AuthClientLogin
|
23
|
+
GoogleDocuments = 'writely'
|
24
|
+
|
25
|
+
# http://code.google.com/apis/blogger/docs/2.0/developers_guide_protocol.html#ClientLogin
|
26
|
+
Blogger = 'blogger'
|
27
|
+
|
28
|
+
# http://code.google.com/apis/youtube/2.0/developers_guide_protocol_clientlogin.html#ClientLogin_Authentication
|
29
|
+
Youtube = 'youtube'
|
30
|
+
|
31
|
+
# http://code.google.com/apis/picasaweb/developers_guide_protocol.html#ClientLogin
|
32
|
+
Picasa = 'picasa'
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/knock_knock.rb
CHANGED
@@ -9,12 +9,13 @@ module Bubble
|
|
9
9
|
|
10
10
|
# For more information take a look at the README
|
11
11
|
module KnockKnock
|
12
|
-
VERSION = '0.1.
|
12
|
+
VERSION = '0.1.6'
|
13
13
|
APP_NAME = 'KnockKnock Ruby Gem'
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
17
|
require File.dirname(__FILE__) + '/bubble/knock_knock/exceptions'
|
18
|
+
require File.dirname(__FILE__) + '/bubble/knock_knock/services'
|
18
19
|
require File.dirname(__FILE__) + '/bubble/knock_knock/hash'
|
19
20
|
require File.dirname(__FILE__) + '/bubble/knock_knock/connection'
|
20
21
|
require File.dirname(__FILE__) + '/bubble/knock_knock/request'
|
data/test/test_knock_knock.rb
CHANGED
@@ -4,19 +4,15 @@ class TestKnockKnock < Test::Unit::TestCase # :nodoc:
|
|
4
4
|
include Bubble::KnockKnock
|
5
5
|
include Bubble::KnockKnock::Exceptions
|
6
6
|
|
7
|
-
def setup
|
8
|
-
@kk = Connection.instance
|
9
|
-
end
|
10
|
-
|
11
7
|
def test_stablish_connection
|
12
|
-
assert_raise(BadLogin) {
|
8
|
+
assert_raise(BadLogin) { Connection.connect('test@gmail.com', 'password', 'xapi') }
|
13
9
|
|
14
|
-
|
15
|
-
assert google =
|
10
|
+
Connection.connect('bubble.testing@gmail.com', 'bubblerocks', Services::GoogleContacts)
|
11
|
+
assert google = Connection.auth
|
16
12
|
|
17
13
|
# Test with a hosted Google Account
|
18
|
-
|
19
|
-
assert
|
20
|
-
assert
|
14
|
+
Connection.connect('test@bubble.com.br', 'B48938', Services::GoogleApps)
|
15
|
+
assert Connection.auth
|
16
|
+
assert Connection.auth != google
|
21
17
|
end
|
22
18
|
end
|
data/test/test_request.rb
CHANGED
@@ -45,7 +45,7 @@ class Bubble::KnockKnock::TestRequest < Test::Unit::TestCase # :nodoc: #
|
|
45
45
|
|
46
46
|
private
|
47
47
|
def authenticate
|
48
|
-
Connection.
|
48
|
+
Connection.connect('bubble.testing@gmail.com', 'bubblerocks', 'cp')
|
49
49
|
end
|
50
50
|
|
51
51
|
def create_contact
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knock-knock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruno Azisaka Maciel
|
@@ -61,23 +61,16 @@ extensions: []
|
|
61
61
|
|
62
62
|
extra_rdoc_files:
|
63
63
|
- History.txt
|
64
|
-
- Manifest.txt
|
65
64
|
- README.rdoc
|
66
65
|
files:
|
67
66
|
- History.txt
|
68
|
-
- Manifest.txt
|
69
67
|
- README.rdoc
|
70
|
-
- Rakefile
|
71
68
|
- lib/knock_knock.rb
|
72
69
|
- lib/bubble/knock_knock/connection.rb
|
73
70
|
- lib/bubble/knock_knock/exceptions.rb
|
74
71
|
- lib/bubble/knock_knock/hash.rb
|
75
72
|
- lib/bubble/knock_knock/request.rb
|
76
|
-
-
|
77
|
-
- script/destroy
|
78
|
-
- script/generate
|
79
|
-
- test/test_helper.rb
|
80
|
-
- test/test_knock_knock.rb
|
73
|
+
- lib/bubble/knock_knock/services.rb
|
81
74
|
has_rdoc: true
|
82
75
|
homepage: KnockKnock was made to turn login with Google Authentication API easier.
|
83
76
|
post_install_message:
|
data/Manifest.txt
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
History.txt
|
2
|
-
Manifest.txt
|
3
|
-
README.rdoc
|
4
|
-
Rakefile
|
5
|
-
lib/knock_knock.rb
|
6
|
-
lib/bubble/knock_knock/connection.rb
|
7
|
-
lib/bubble/knock_knock/exceptions.rb
|
8
|
-
lib/bubble/knock_knock/hash.rb
|
9
|
-
lib/bubble/knock_knock/request.rb
|
10
|
-
script/console
|
11
|
-
script/destroy
|
12
|
-
script/generate
|
13
|
-
test/test_helper.rb
|
14
|
-
test/test_knock_knock.rb
|
data/Rakefile
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
%w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
|
2
|
-
require File.dirname(__FILE__) + '/lib/knock_knock'
|
3
|
-
|
4
|
-
# Generate all the Rake tasks
|
5
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
6
|
-
$hoe = Hoe.new('knock-knock', Bubble::KnockKnock::VERSION) do |p|
|
7
|
-
p.developer('Bruno Azisaka Maciel', 'bruno@dookie.com.br')
|
8
|
-
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
9
|
-
# p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
10
|
-
p.rubyforge_name = 'knock-knock' # TODO this is default value
|
11
|
-
p.extra_deps = [
|
12
|
-
['activesupport','>= 2.0.2']
|
13
|
-
]
|
14
|
-
p.extra_dev_deps = [
|
15
|
-
['newgem', ">= #{::Newgem::VERSION}"],
|
16
|
-
['xml-object', '>= 0.9.8']
|
17
|
-
]
|
18
|
-
|
19
|
-
p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
20
|
-
path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
21
|
-
p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
|
22
|
-
p.rsync_args = '-av --delete --ignore-errors'
|
23
|
-
end
|
24
|
-
|
25
|
-
require 'newgem/tasks' # load /tasks/*.rake
|
26
|
-
Dir['tasks/**/*.rake'].each { |t| load t }
|
27
|
-
|
28
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
29
|
-
# task :default => [:spec, :features]
|
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# File: script/console
|
3
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
-
|
5
|
-
libs = " -r irb/completion"
|
6
|
-
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/knock_knock.rb'}"
|
9
|
-
puts "Loading knock_knock gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/destroy'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/generate'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Generate.new.run(ARGV)
|