rtokbox 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/README +60 -0
- data/lib/rtokbox/tokbox.rb +63 -0
- data/lib/rtokbox/tokbox_user.rb +85 -0
- data/lib/rtokbox.rb +20 -0
- metadata +57 -0
data/README
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
= RTokBox: Gem for accessing the TokBox.com API.
|
2
|
+
|
3
|
+
See http://rtokbox.rubyforge.org/ for more information.
|
4
|
+
|
5
|
+
Version 0.1.
|
6
|
+
|
7
|
+
== Basic Usage
|
8
|
+
|
9
|
+
=== Creating a New User
|
10
|
+
|
11
|
+
tokb = RTokBox::TokBox.new('API_KEY', 'API_SECRET')
|
12
|
+
|
13
|
+
# Returns nil if it fails to create the user.
|
14
|
+
tokbuser = tokb.register_user('USER', 'FIRST NAME', 'LAST NAME', 'EMAIL', 'PASSWORD')
|
15
|
+
|
16
|
+
=== The Widget Code
|
17
|
+
|
18
|
+
puts tokbuser.widget_code
|
19
|
+
|
20
|
+
Just the widget id:
|
21
|
+
|
22
|
+
puts tokbuser.widget_id
|
23
|
+
|
24
|
+
Just the TokBox user id:
|
25
|
+
|
26
|
+
puts tokbuser.user_id
|
27
|
+
|
28
|
+
Note: You can create an TokBoxUser Instance directly using:
|
29
|
+
tokbuser = = RTokBox::TokBoxUser.new(EMAIL, PASSWORD, API_KEY, API_SECRET)
|
30
|
+
|
31
|
+
== License
|
32
|
+
|
33
|
+
Copyright (c) 2007, Radu Spineanu
|
34
|
+
All rights reserved.
|
35
|
+
|
36
|
+
Redistribution and use in source and binary forms, with or without modification,
|
37
|
+
are permitted provided that the following conditions are met:
|
38
|
+
|
39
|
+
Redistributions of source code must retain the above copyright notice,
|
40
|
+
this list of conditions and the following disclaimer.
|
41
|
+
|
42
|
+
Redistributions in binary form must reproduce the above copyright notice,
|
43
|
+
this list of conditions and the following disclaimer in the documentation
|
44
|
+
and/or other materials provided with the distribution.
|
45
|
+
|
46
|
+
Neither the name of the original author nor the names of contributors
|
47
|
+
may be used to endorse or promote products derived from this software
|
48
|
+
without specific prior written permission.
|
49
|
+
|
50
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
51
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
52
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
53
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
54
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
55
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
56
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
57
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
58
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
59
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
60
|
+
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# Copyright (c) 2007 Radu Spineanu
|
2
|
+
# You can redistribute it and/or modify it under the same terms as Ruby.
|
3
|
+
#
|
4
|
+
|
5
|
+
module RTokBox
|
6
|
+
|
7
|
+
# The TokBox class can register new users and retrieve TokBoxUser classes.
|
8
|
+
# You use it by doing the following:
|
9
|
+
# tokb = RTokBox::TokBox.new('API_KEY', 'API_SECRET')
|
10
|
+
# tokbuser = tokb.register_user('USER', 'FIRST NAME', 'LAST NAME', 'EMAIL', 'PASSWORD')
|
11
|
+
class TokBox
|
12
|
+
|
13
|
+
# Initializes the TokBox Class.
|
14
|
+
def initialize(api_key, api_secret, api_url = 'http://api.tokbox.com/api.php')
|
15
|
+
@api_key = api_key
|
16
|
+
@api_secret = api_secret
|
17
|
+
@api_url = api_url
|
18
|
+
end
|
19
|
+
|
20
|
+
# Registers a new user. Returns nil if the request failed.
|
21
|
+
def register_user(username, firstname, lastname, email, password)
|
22
|
+
call = 'registerUser'
|
23
|
+
call_id = Time.now.to_i.to_s
|
24
|
+
cr_password = Digest::MD5.hexdigest(password)
|
25
|
+
|
26
|
+
msg = @api_key + call + call_id + email + firstname + FORMAT + lastname + cr_password + username + VER
|
27
|
+
sig = Digest::MD5.hexdigest(msg + @api_secret)
|
28
|
+
|
29
|
+
params = {}
|
30
|
+
params[:username] = username
|
31
|
+
params[:firstname] = firstname
|
32
|
+
params[:lastname] = lastname
|
33
|
+
params[:email] = email
|
34
|
+
params[:password] = cr_password
|
35
|
+
|
36
|
+
result = request(call, call_id, params, sig)
|
37
|
+
if result['success']
|
38
|
+
return TokBoxUser.new(email, password, @api_key, @api_secret)
|
39
|
+
else
|
40
|
+
# raise "Could not create user. (error: #{result['errorCode']})"
|
41
|
+
return nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns an instance of TokBoxUser.
|
46
|
+
def get_user(email, password)
|
47
|
+
return TokBoxUser.new(email, password, @api_key, @api_secret)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Processes the request. Creates the API call and returns a JSON parsed result.
|
51
|
+
def request(call, call_id, params, sig, api_key = @api_key, api_url = @api_url)
|
52
|
+
rq = "#{api_url}?api_key=#{CGI.escape api_key}&format=#{CGI.escape FORMAT}&v=#{CGI.escape VER}"
|
53
|
+
rq += "&sig=#{CGI.escape sig}&call_id=#{CGI.escape call_id}&call=#{CGI.escape call}"
|
54
|
+
|
55
|
+
params.each_pair do |key, value|
|
56
|
+
rq += "&#{key}=#{CGI.escape value}"
|
57
|
+
end
|
58
|
+
|
59
|
+
result = Net::HTTP.get_response(URI.parse(rq)).body
|
60
|
+
return JSON.parse(result)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# Copyright (c) 2007 Radu Spineanu
|
2
|
+
# You can redistribute it and/or modify it under the same terms as Ruby.
|
3
|
+
#
|
4
|
+
|
5
|
+
module RTokBox
|
6
|
+
|
7
|
+
# This class creates API calls for different user functions.
|
8
|
+
# You get an instance using TokBox.register_user, TokBox.get_user or directly:
|
9
|
+
# tokbuser = RTokBox::TokBoxUser.new(EMAIL, PASSWORD, API_KEY, API_SECRET)
|
10
|
+
#
|
11
|
+
# Returns nil on failure to log in.
|
12
|
+
class TokBoxUser < TokBox
|
13
|
+
attr_accessor :email, :password, :widget_id, :user_id, :error_code
|
14
|
+
|
15
|
+
# Initializes the class and retrieves the needed information.
|
16
|
+
# Practically validates a login and returns nil if it fails.
|
17
|
+
def initialize(email, password, api_key, api_secret, api_url = 'http://api.tokbox.com/api.php')
|
18
|
+
@api_key = api_key
|
19
|
+
@api_secret = api_secret
|
20
|
+
@api_url = api_url
|
21
|
+
|
22
|
+
self.email = email
|
23
|
+
self.password = Digest::MD5.hexdigest(password)
|
24
|
+
|
25
|
+
self.user_id = get_UserID
|
26
|
+
self.widget_id = get_WidgetID
|
27
|
+
|
28
|
+
unless self.user_id or self.widget_id
|
29
|
+
# raise "Could not log in. (error: #{self.error_code})"
|
30
|
+
return nul
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Retrieves the user's id.
|
35
|
+
def get_UserID
|
36
|
+
call = 'getUserID'
|
37
|
+
call_id = Time.now.to_i.to_s
|
38
|
+
|
39
|
+
msg = @api_key + call + call_id + self.email + FORMAT + self.password + VER
|
40
|
+
sig = Digest::MD5.hexdigest(msg + @api_secret)
|
41
|
+
|
42
|
+
params = {}
|
43
|
+
params[:email] = self.email
|
44
|
+
params[:password] = self.password
|
45
|
+
|
46
|
+
result = request(call, call_id, params, sig, @api_key, @api_url)
|
47
|
+
if result['success']
|
48
|
+
return result['userid']
|
49
|
+
else
|
50
|
+
self.error_code = result['errorCode']
|
51
|
+
return nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Retrieves the user's widget id.
|
56
|
+
def get_WidgetID
|
57
|
+
call = 'getWidgetID'
|
58
|
+
call_id = Time.now.to_i.to_s
|
59
|
+
|
60
|
+
msg = @api_key + call + call_id + self.email + FORMAT + self.password + VER
|
61
|
+
sig = Digest::MD5.hexdigest(msg + @api_secret)
|
62
|
+
|
63
|
+
params = {}
|
64
|
+
params[:email] = self.email
|
65
|
+
params[:password] = self.password
|
66
|
+
|
67
|
+
result = request(call, call_id, params, sig, @api_key, @api_url)
|
68
|
+
if result['success']
|
69
|
+
return result['widgetid']
|
70
|
+
else
|
71
|
+
self.error_code = result['errorCode']
|
72
|
+
return nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Creates the Widget HTML code for this user.
|
77
|
+
def make_Widget
|
78
|
+
result = '<object type="application/x-shockwave-flash" data="http://www.tokbox.com/f/' + self.widget_id + '" width="540" height="260">
|
79
|
+
<param name="movie" value="http://www.tokbox.com/f/' + self.widget_id + '"></param>
|
80
|
+
<param name=FlashVars value="user=' + self.user_id + '&pass=' + self.password + '"></param>
|
81
|
+
</object>'
|
82
|
+
result
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/rtokbox.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Copyright (c) 2007 Radu Spineanu
|
2
|
+
# You can redistribute it and/or modify it under the same terms as Ruby.
|
3
|
+
#
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'digest/md5'
|
7
|
+
require "cgi"
|
8
|
+
require 'net/http'
|
9
|
+
require 'json'
|
10
|
+
require 'json/ext'
|
11
|
+
|
12
|
+
# RTokBox module contains a TokBox connection class and a TokBox user class.
|
13
|
+
module RTokBox
|
14
|
+
FORMAT = "JSON"
|
15
|
+
VER = "1.0"
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'rtokbox/tokbox'
|
19
|
+
require 'rtokbox/tokbox_user'
|
20
|
+
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.4
|
3
|
+
specification_version: 1
|
4
|
+
name: rtokbox
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: "0.1"
|
7
|
+
date: 2007-11-28 00:00:00 +02:00
|
8
|
+
summary: Gem for accessing the TokBox.com API.
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: radu @nospam@ mypadz.com
|
12
|
+
homepage:
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Radu Spineanu
|
31
|
+
files:
|
32
|
+
- lib/rtokbox.rb
|
33
|
+
- lib/rtokbox/tokbox_user.rb
|
34
|
+
- lib/rtokbox/tokbox.rb
|
35
|
+
- README
|
36
|
+
test_files: []
|
37
|
+
|
38
|
+
rdoc_options: []
|
39
|
+
|
40
|
+
extra_rdoc_files:
|
41
|
+
- README
|
42
|
+
executables: []
|
43
|
+
|
44
|
+
extensions: []
|
45
|
+
|
46
|
+
requirements: []
|
47
|
+
|
48
|
+
dependencies:
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: json
|
51
|
+
version_requirement:
|
52
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.0.0
|
57
|
+
version:
|