beintoo 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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/CHANGELOG ADDED
@@ -0,0 +1,3 @@
1
+ ## v0.0.1
2
+
3
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,6 @@
1
+ # Beintoo Api Gem
2
+
3
+ This gem brings you the api for [Beintoo](http://documentation.beintoo.com/home/api-docs) in a handful way.
4
+
5
+ Comes, out of the box, with a Rails Integration
6
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/beintoo.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "beintoo/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "beintoo"
7
+ s.version = Beintoo::VERSION
8
+ s.authors = ["Enrico Carlesso", "Mattia Gheda"]
9
+ s.email = ["enricocarlesso@gmail.com", "ghedamat@gmail.com"]
10
+ s.homepage = "http://www.beintoo.com"
11
+ s.summary = "Ruby Wrapper for the Beintoo API"
12
+ s.description = "This gem tries to wrap the Beintoo API (http://documentation.beintoo.com) to a ruby friendly Module meant to be used within Ruby on Rails applications"
13
+
14
+ s.rubyforge_project = "beintoo"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "supermodel"
24
+ s.add_development_dependency "pry"
25
+ s.add_runtime_dependency "rest-client"
26
+ s.add_dependency "rake"
27
+ s.add_dependency "json"
28
+ s.add_dependency "activesupport"
29
+ end
@@ -0,0 +1,6 @@
1
+ module Beintoo
2
+ class ApiException < RuntimeError
3
+ end
4
+ class UserAlreadyRegisteredException < RuntimeError
5
+ end
6
+ end
@@ -0,0 +1,20 @@
1
+ module Beintoo
2
+ class App
3
+ RESOURCE = "app"
4
+
5
+ # returns a map the most delivered vgood with you application and the number those have been erogated.
6
+ # This call can be very useful because you have visibility on the vgoods which are generating more
7
+ # revenues for you. You could decide for example to provide a functional advantage to users who converted
8
+ # one of these goods, for example giving him more energy in case of a game.
9
+ def topvgood
10
+ end
11
+
12
+ # returns a map with your players and the score of those.
13
+ def leaderboard
14
+ end
15
+
16
+ # returns a list of contest for your app, you can choose a single contest and to list all or just public contest
17
+ def contestShow
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,47 @@
1
+ module Beintoo
2
+ module ModelAdditions
3
+ # field is the name of the field used for guid i.e. :id
4
+ def acts_as_beintoo_user(params = {})
5
+
6
+ par = {guid_field: :id, email_field: :email, name_field: :name, nickname_field: :nickname}.merge(params)
7
+
8
+ define_method 'beintoo_player' do
9
+ if @beintoo_player.nil?
10
+ @beintoo_player = Beintoo::Player.new({guid: self.send(par[:guid_field])})
11
+ @beintoo_player.login
12
+ end
13
+ @beintoo_player
14
+ end
15
+
16
+ define_method 'beintoo_user' do
17
+ begin
18
+ if @beintoo_user.nil?
19
+ @beintoo_user = beintoo_player.user({
20
+ email: self.send(par[:email_field]),
21
+ name: self.send(par[:name_field]),
22
+ nickname: self.send(par[:nickname_field]),
23
+ sendGreetingsEmail: false
24
+ })
25
+ @beintoo_user.create
26
+ end
27
+ @beintoo_user
28
+ rescue Beintoo::UserAlreadyRegisteredException => e
29
+ Beintoo.get_connect_url self.send(par[:guid_field])
30
+ end
31
+ end
32
+
33
+ define_method 'beintoo_get_potential_rewards' do
34
+ @beintoo_user.potential_rewards
35
+ end
36
+
37
+ define_method 'beintoo_accept_reward' do |reward|
38
+ @beintoo_user.accept_reward(reward)
39
+ end
40
+
41
+ define_method 'beintoo_list_rewards' do
42
+ @beintoo_user.list_rewards
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,102 @@
1
+ module Beintoo
2
+ class Player
3
+ RESOURCE = "player"
4
+ attr_accessor :guid, :logged_in, :b_user, :score
5
+
6
+ def initialize(params = {})
7
+ self.guid = params[:guid]
8
+ self
9
+ end
10
+
11
+ def user(params = {})
12
+ raise Beintoo::ApiException, "No guid set when creating new Beintoo::User" if guid.nil?
13
+ if b_user.nil?
14
+ self.b_user = Beintoo::User.new params.merge(guid: guid)
15
+ end
16
+ b_user
17
+ end
18
+
19
+ def login(_guid = nil, publicname = nil)
20
+ self.guid = _guid unless _guid.nil?
21
+ headers = {}
22
+ headers[:guid] = guid unless guid.nil?
23
+ headers = Beintoo::build_headers headers
24
+
25
+ params_get = {}
26
+ params_get[:language] = 1
27
+ params_get[:publicname] = publicname unless publicname.nil?
28
+ result = Beintoo::get "#{RESOURCE}/login", headers, params_get
29
+ self.guid = result["guid"]
30
+ self.logged_in = true
31
+ if result.has_key? "user"
32
+ self.b_user = Beintoo::User.new result["user"].merge(guid: guid)
33
+ self.b_user.created = true
34
+ end
35
+ end
36
+
37
+ def logged_in?
38
+ !!logged_in
39
+ end
40
+
41
+ def logout
42
+ return true if !logged_in?
43
+ headers = {}
44
+ headers[:guid] = guid
45
+ headers = Beintoo::build_headers headers
46
+
47
+ result = Beintoo::get "#{RESOURCE}/logout", headers
48
+ self.logged_in = false
49
+ end
50
+
51
+ def get_player(_guid = nil)
52
+ self.guid = _guid unless _guid.nil?
53
+ raise Beintoo::ApiException, "No guid setted when calling get_player" if guid.nil?
54
+ headers = Beintoo::build_headers
55
+ result = Beintoo::get "#{RESOURCE}/byguid/#{guid}", headers
56
+ if result.has_key? :playerScore
57
+ self.score = result[:playerScore]
58
+ end
59
+ end
60
+
61
+ def submit_score(score, code_id = nil, balance = nil)
62
+ raise Beintoo::ApiException, "User not logged in when trying to submit score" unless logged_in?
63
+ headers = {
64
+ guid: guid,
65
+ }
66
+ headers[:codeID] = code_id unless code_id.nil?
67
+ headers = Beintoo::build_headers headers
68
+ body = {lastScore: score}
69
+ body[:balance] = balance unless balance.nil?
70
+ if Beintoo.debug
71
+ Beintoo.log "Submitting score of #{score} for player with guid #{guid}"
72
+ Beintoo.log body.inspect
73
+ end
74
+ result = Beintoo::get "#{RESOURCE}/submitscore/", headers, body
75
+ if result.has_key? :playerScore
76
+ self.score = result[:playerScore]
77
+ end
78
+ if result[:message] == "OK" && result[:messageID] == 0
79
+ true
80
+ else
81
+ false
82
+ end
83
+ end
84
+
85
+ def last_score(contest = :default)
86
+ score[contest][:lastscore] rescue nil
87
+ end
88
+
89
+ def best_score(contest = :default)
90
+ score[contest][:bestscore] rescue nil
91
+ end
92
+
93
+ def balance(contest = :default)
94
+ score[contest][:balance] rescue nil
95
+ end
96
+
97
+ def assign_reward
98
+ Beintoo::Vgood.byplayer(self)
99
+ end
100
+
101
+ end
102
+ end
@@ -0,0 +1,9 @@
1
+ module Beintoo
2
+ class Railtie < Rails::Railtie
3
+ initializer 'beintoo.model_additions' do
4
+ ActiveSupport.on_load :active_record do
5
+ extend ModelAdditions
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,84 @@
1
+ module Beintoo
2
+ class User
3
+ RESOURCE = "user"
4
+ ATTRIBUTES = [:email, :address, :country, :gender, :nickname, :name, :password, :sendGreetingsEmail, :guid, :id, :userimg, :usersmallimg, :isverified, :lastupdate, :level, :bedollars, :bescore, :userExt]
5
+
6
+ ATTRIBUTES.each do |a|
7
+ self.send("attr_accessor", a)
8
+ end
9
+
10
+ attr_accessor :created
11
+
12
+ def initialize(params = {})
13
+ set_data params
14
+ end
15
+
16
+ def create(params = {})
17
+ set_data params
18
+ return self if created?
19
+ if valid?
20
+ headers = {
21
+ guid: guid
22
+ }
23
+ headers = Beintoo::build_headers headers
24
+ result = Beintoo::post "#{RESOURCE}/set", headers, get_user_params
25
+ set_data result
26
+ self.created = true
27
+ self
28
+ else
29
+ false
30
+ end
31
+ end
32
+
33
+ def created?
34
+ created
35
+ end
36
+
37
+ def valid?
38
+ !email.nil? && !guid.nil?
39
+ end
40
+
41
+ def to_hash
42
+ h = {}
43
+ ATTRIBUTES.each do |a|
44
+ h[a] = self.send(a)
45
+ end
46
+ h
47
+ end
48
+
49
+ ##### rewards methods
50
+
51
+ # Get a list of POTENTIAL rewards for the user
52
+ def potential_rewards
53
+ Beintoo::Vgood.byuser(self)
54
+ end
55
+
56
+ # User can accept a given reward previously fetched with self.byuser
57
+ def accept_reward(reward)
58
+ Beintoo::Vgood.accept(self, reward)
59
+ end
60
+
61
+ # return the vgoods owned by the current user not yet converted.
62
+ def list_rewards
63
+ Beintoo::Vgood.showbyuser(self)
64
+ end
65
+
66
+
67
+ ##### private
68
+ def set_data(params = {})
69
+ params = params.with_indifferent_access
70
+ ATTRIBUTES.each do |at|
71
+ self.send("#{at}=", params[at]) unless params[at].nil?
72
+ end
73
+ get_user_params
74
+ end
75
+
76
+ def get_user_params
77
+ params = {}
78
+ ATTRIBUTES.each do |at|
79
+ params[at] = self.send("#{at}") unless self.send(at).nil?
80
+ end
81
+ params
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,3 @@
1
+ module Beintoo
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,90 @@
1
+ module Beintoo
2
+ class Vgood
3
+ RESOURCE = "vgood"
4
+
5
+ ATTRIBUTES = %w{getRealURL showURL description descriptionSmall id imageUrl imageSmallUrl startdate enddate name bedollars discount VgoodPoiWrapper whoAlsoConverted categories isBanner contentType content rewardText shareURL uvext}
6
+
7
+ ATTRIBUTES.each do |a|
8
+ self.send("attr_accessor", a)
9
+ end
10
+
11
+ def initialize(params = {})
12
+ params.each do |a,v|
13
+ self.send("#{a}=", v)
14
+ end
15
+ end
16
+
17
+ def to_s
18
+ ATTRIBUTES.inject(''){|s,a| s << "#{a}: #{self.send(a).to_s}\n"}
19
+ end
20
+
21
+ def == (other)
22
+ self.id == other.id
23
+ end
24
+
25
+ ##### VGood api wrapped methods see http://documentation.beintoo.com/home/api-docs/resources/vgood
26
+
27
+ # return the vgoods owned by the current user not yet converted.
28
+ def self.showbyuser(user = nil)
29
+ raise Beintoo::ApiException, "Called Vgood.byuser without passing a user!" if user.nil?
30
+ headers = Beintoo::build_headers
31
+ result = Beintoo::get "#{RESOURCE}/show/byuser/#{user.id}", headers
32
+ vgoods = []
33
+ result.each do |vgood|
34
+ vgoods << Beintoo::Vgood.new(vgood)
35
+ end
36
+ vgoods
37
+ end
38
+
39
+ # Get a list of POTENTIAL rewards for the user
40
+ # Should return an array of Beintoo::Vgood objects
41
+ def self.byuser(user = nil)
42
+ raise Beintoo::ApiException, "Called Vgood.byuser without passing a user!" if user.nil?
43
+ headers = Beintoo::build_headers
44
+ result = Beintoo::get "#{RESOURCE}/byuser/#{user.id}", headers
45
+ vgoods = []
46
+ result[:vgoods].each do |vgood|
47
+ vgoods << Beintoo::Vgood.new(vgood)
48
+ end
49
+ vgoods
50
+ end
51
+
52
+ # User can accept a given reward previously fetched with self.byuser
53
+ def self.accept(user = nil, reward = nil)
54
+ raise Beintoo::ApiException, "Called Vgood.accept_reward without passing a user!" if user.nil?
55
+ raise Beintoo::ApiException, "Called Vgood.accept_reward without passing a reward!" if reward.nil?
56
+ headers = Beintoo::build_headers
57
+ if reward.is_a? Beintoo::Vgood
58
+ result = Beintoo::get "#{RESOURCE}/accept/#{reward.id}/#{user.id}", headers
59
+ else
60
+ result = Beintoo::get "#{RESOURCE}/accept/#{reward}/#{user.id}", headers
61
+ end
62
+ # XXX WE SHOULD DETECT ERRORS HERE
63
+ true
64
+ end
65
+
66
+ def self.byplayer(player = nil)
67
+ raise Beintoo::ApiException, "Called Vgood.byplayer without passing a player!" if !player.logged_in?
68
+ headers = Beintoo::build_headers
69
+ result = Beintoo::get "#{RESOURCE}/byguid/#{player.guid}", headers
70
+ vgoods = []
71
+ result[:vgoods].each do |vgood|
72
+ vgoods << Beintoo::Vgood.new(vgood)
73
+ end
74
+ vgoods
75
+ end
76
+
77
+
78
+ # Returns a vgood, this method act as Vgood.getByUser but providing player guid instead of userExt.
79
+ def getVgoodByGuid
80
+ end
81
+
82
+ # return the friends of the given user
83
+ def convert
84
+ end
85
+
86
+ # return the friends of the given user
87
+ def sendAsGift
88
+ end
89
+ end
90
+ end
data/lib/beintoo.rb ADDED
@@ -0,0 +1,179 @@
1
+ require "beintoo/version"
2
+ require "beintoo/player"
3
+ require "beintoo/user"
4
+ require "beintoo/vgood"
5
+ require "beintoo/api_exception"
6
+ require "beintoo/model_additions"
7
+ require "beintoo/railtie" if defined? Rails
8
+ require "rest_client"
9
+ require "json"
10
+ require "yaml"
11
+ require "active_support"
12
+
13
+ module Beintoo
14
+ SERVER_URL = "https://api.beintoo.com/api/rest/"
15
+ SANDBOX_SERVER_URL = "https://sandbox.beintoo.com/api/rest/"
16
+
17
+ DEFAULT_HEADER = {
18
+ 'accept' => '*/*',
19
+ 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8',
20
+ 'X-BEINTOO-SDK-VERSION' => '0.0.1-ruby'
21
+ }
22
+
23
+
24
+ class << self
25
+ attr_accessor :apikey, :sandbox, :debug, :transformer, :redirect_uri, :logger
26
+ LOG_DEBUG = 0
27
+ LOG_INFO = 1
28
+ LOG_WARNING = 2
29
+ LOG_ERROR = 3
30
+
31
+ def configure
32
+ yield self
33
+ self.sandbox = false if sandbox != true
34
+ if defined? Rails
35
+ self.logger = Rails.logger
36
+ end
37
+ end
38
+
39
+ def log(message, level = LOG_DEBUG)
40
+ begin
41
+ if defined? Rails
42
+ case level
43
+ when LOG_DEBUG
44
+ self.logger.debug message
45
+ when LOG_INFO, LOG_WARNING
46
+ self.logger.info message
47
+ when LOG_ERROR
48
+ self.logger.error message
49
+ end
50
+ elsif self.logger.is_a?(String) && self.logger == "file"
51
+ if @log_file.nil?
52
+ @log_file = File.open 'beintoo_log.log', 'a'
53
+ end
54
+ if debug || level >= LOG_INFO
55
+ @log_file.write message + "\n"
56
+ end
57
+ end
58
+ rescue Exception => e
59
+ puts e.message
60
+ end
61
+ end
62
+
63
+ def build_headers(headers = {})
64
+ raise Beintoo::ApiException, "Api Key not provided" if Beintoo::apikey.nil?
65
+ {apikey: apikey, sandbox: sandbox}.merge headers
66
+ end
67
+
68
+ def get(url, headers = {}, params = {})
69
+ url = "#{Beintoo::SERVER_URL}#{url}"
70
+ start = Time.now
71
+ headers.merge! Beintoo::DEFAULT_HEADER
72
+ url += "?#{hash_to_params(params)}" unless params.empty?
73
+
74
+ log "#"*80
75
+ log " Calling Beintoo Api"
76
+ log url
77
+ log headers.inspect
78
+ log "#"*80
79
+
80
+ resource = RestClient::Resource.new url, headers: headers
81
+
82
+ log "Connecting GET to #{url} with headers #{headers}"
83
+
84
+ begin
85
+ response = resource.get
86
+ stop = Time.now
87
+ http_code = response.code
88
+
89
+ log "------ RAW RESULT ------"
90
+ log response.body
91
+ log "------ /RAW RESULT ------"
92
+
93
+ result = JSON.parse(response.body)
94
+ result = result.with_indifferent_access if result.is_a? Hash
95
+ result
96
+ rescue RestClient::Exception => e
97
+ log "Exception grabbed, response is", LOG_ERROR
98
+ log e.response.inspect, LOG_ERROR
99
+ log e.inspect, LOG_ERROR
100
+ mex = JSON.parse(e.response)["message"]
101
+ if mex == "An user with this email already registered"
102
+ raise Beintoo::UserAlreadyRegisteredException, mex
103
+ else
104
+ raise Beintoo::ApiException, mex
105
+ end
106
+ end
107
+ end
108
+
109
+ def post(url, headers = {}, params = {})
110
+ url = "#{Beintoo::SERVER_URL}#{url}"
111
+ start = Time.now
112
+ headers.merge! Beintoo::DEFAULT_HEADER
113
+ ll = {"Content-Type" => nil}
114
+ headers.merge! ll
115
+ if params.empty?
116
+ params = ""
117
+ end
118
+
119
+ log "#"*80
120
+ log " Calling Beintoo Api"
121
+ log url
122
+ log headers.inspect
123
+ log "#"*80
124
+
125
+ resource = RestClient::Resource.new url, headers: headers
126
+ if debug
127
+ Beintoo.log "Connecting POST to #{url} with headers #{headers}"
128
+ Beintoo.log "and posting #{params.inspect}"
129
+ end
130
+ begin
131
+ response = resource.post params
132
+
133
+ stop = Time.now
134
+ http_code = response.code
135
+ result = JSON.parse(response.body).with_indifferent_access
136
+ log "RESULT IS #{result.inspect}"
137
+ result
138
+ rescue RestClient::Exception => e
139
+ log "Exception grabbed, response is", LOG_ERROR
140
+ log e.response.inspect, LOG_ERROR
141
+ log e.inspect, LOG_ERROR
142
+ mex = JSON.parse(e.response)["message"]
143
+ if mex == "An user with this email already registered"
144
+ raise Beintoo::UserAlreadyRegisteredException, mex
145
+ else
146
+ raise Beintoo::ApiException, mex
147
+ end
148
+ end
149
+ end
150
+
151
+ def hash_to_params(data = {})
152
+ out = []
153
+ data.each do |k, v|
154
+ if ![Hash, Array].include? v.class
155
+ out << "#{k.to_s}=#{v.to_s}"
156
+ end
157
+ end
158
+ out.join '&'
159
+ end
160
+
161
+ # generates beintoo-connect url when user creation fails
162
+ # XXX logged_uri parameter is from php API but don't know yet how it works
163
+ # see http://documentation.beintoo.com/home/api-docs/user-player-connection
164
+ # redirect will have param userext=XXXXXXXXXXXXXyouruserGUID
165
+ def get_connect_url(guid, display=nil, signup="facebook", logged_uri=nil)
166
+ return false if guid.nil?
167
+ url = "http://www.beintoo.com/connect.html?guid=#{guid}&apikey=#{self.apikey}&redirect_uri=#{self.redirect_uri}"
168
+ unless display.nil?
169
+ url += "&display=#{display}"
170
+ end
171
+ url += "&signup=#{signup}"
172
+ unless logged_uri.nil?
173
+ url += "&logged_uri=#{logged_uri}"
174
+ end
175
+ url
176
+ end
177
+
178
+ end
179
+ end
@@ -0,0 +1,13 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/active_record'
3
+
4
+ class BeintooGenerator < Rails::Generators::Base
5
+
6
+ source_root File.expand_path("../templates", __FILE__)
7
+
8
+ desc "This generator creates the initializer file at config/initializers"
9
+ def copy_initializer_file
10
+ copy_file "beintoo.rb", "config/initializers/beintoo.rb"
11
+ end
12
+
13
+ end
@@ -0,0 +1,12 @@
1
+ Beintoo.configure do |config|
2
+ # Here you have to setup your apikey and the redirect uri used
3
+ # during the beintoo-connect procedure
4
+
5
+ # config.apikey = "1234567890"
6
+ # config.redirect_uri = "http://localhost:3000"
7
+
8
+ # These are useful during debug
9
+
10
+ # config.sandbox = true
11
+ # config.debug = true
12
+ end
data/script/console ADDED
@@ -0,0 +1 @@
1
+ RUBYLIB=./lib irb -r './lib/beintoo'
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'BeintooPlayer' do
4
+ before :each do
5
+ set_testing_data
6
+ end
7
+
8
+ it "Should login/logout Player" do
9
+ player = Beintoo::Player.new
10
+ player.respond_to?(:logout).should be true
11
+ player.login
12
+ player.logged_in?.should be true
13
+ if Beintoo.debug
14
+ puts player.guid
15
+ end
16
+ player.logout
17
+ player.logged_in?.should be false
18
+ end
19
+
20
+ it "Should get player with guid" do
21
+ player = Beintoo::Player.new guid: "test"
22
+ player.login
23
+ player.get_player
24
+ end
25
+
26
+ it "Should have score" do
27
+ player = Beintoo::Player.new guid: "test"
28
+ player.login
29
+ player.respond_to?(:submit_score).should be true
30
+ player.submit_score(40)
31
+ if Beintoo.debug
32
+ puts player.get_player
33
+ end
34
+ player.submit_score(30)
35
+ if Beintoo.debug
36
+ puts player.get_player
37
+ end
38
+ player.submit_score(50)
39
+ if Beintoo.debug
40
+ puts player.get_player
41
+ end
42
+ end
43
+
44
+ it "Should assign a reward to the Beintoo::Player" do
45
+ player = Beintoo::Player.new guid: "BeintooGemTest_#{rand(300)}"
46
+ player.login
47
+ player.assign_reward
48
+ end
49
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'BeintooUser' do
4
+ before :each do
5
+ set_testing_data
6
+ end
7
+
8
+ it "Should generate a Beintoo::User for a Beintoo::Player" do
9
+ player = Beintoo::Player.new guid: "test#{rand(300)}"
10
+ player.login
11
+ user = player.user.create email: "foo_bar+#{rand(300)}@example.com", name: "Foo Bar", nickname: "foo_bar"
12
+ if Beintoo.debug
13
+ puts player.user.get_user_params
14
+ puts user.inspect
15
+ end
16
+ user.id.should_not be nil
17
+ end
18
+
19
+ it "Should generate a reward for a Beintoo::User" do
20
+ player = Beintoo::Player.new guid: "test#{rand(300)}"
21
+ player.login
22
+ user = player.user.create email: "foo_bar+#{rand(300)}@example.com", name: "Foo Bar", nickname: "foo_bar"
23
+ user.potential_rewards
24
+ user.list_rewards
25
+ end
26
+
27
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ class User < SuperModel::Base
4
+ include SuperModel::RandomID
5
+ extend Beintoo::ModelAdditions
6
+ acts_as_beintoo_user guid_field: :id, email_field: :email, name_field: :name, nickname_field: :nickname
7
+ end
8
+
9
+ describe Beintoo::ModelAdditions do
10
+ before :each do
11
+ set_testing_data
12
+ end
13
+
14
+ it "should create a player with a user" do
15
+ u = User.create email: "foo_bar+#{rand(1000)}@example.com", name: "Foo Bar", nickname: "foo_bar"
16
+ u.beintoo_player.class.should be Beintoo::Player
17
+ u.beintoo_user.class.should be Beintoo::User
18
+ u.beintoo_user.email.should match(/foo_bar/)
19
+ end
20
+
21
+ it "should retrieve a player with his user" do
22
+ # if player has already a user we should fetch him from beintoo and istantiate it locally
23
+ u = User.create id: 1234567, email: "foobar@example.com", name: "Foo Bar", nickname: "foo_bar"
24
+ u.beintoo_player.class.should be Beintoo::Player
25
+ u.beintoo_user.class.should be Beintoo::User
26
+ u.beintoo_user.name.should match(/Foo/)
27
+ u.beintoo_user.id.should_not be nil
28
+
29
+ u.respond_to?(:beintoo_get_potential_rewards).should be true
30
+ rews = u.beintoo_get_potential_rewards
31
+
32
+ u.beintoo_list_rewards.should_not include rews.first
33
+
34
+ u.respond_to?(:beintoo_accept_reward).should be true
35
+ u.beintoo_accept_reward(rews.first).should be true # XXX see XXX on vgood.rb
36
+
37
+ u.respond_to?(:beintoo_list_rewards).should be true
38
+ u.beintoo_list_rewards.should include rews.first
39
+ end
40
+
41
+ it "should return a beintoo connect url when creating a user with an existing email" do
42
+ u = User.create id: 22222, email: "foobar@example.com", name: "Mario", nickname: "Rossi"
43
+ u.beintoo_player.class.should be Beintoo::Player
44
+ bu = u.beintoo_user
45
+ bu.class.should be String
46
+ puts bu
47
+ end
48
+
49
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'BeintooUsage' do
4
+ before :each do
5
+ set_real_case_data
6
+ end
7
+
8
+ it "should create a player" do
9
+ player = Beintoo::Player.new guid: "1"
10
+ player.login
11
+ puts player.submit_score(0, nil, 0)
12
+ sleep 1
13
+ puts player.get_player
14
+ sleep 1
15
+ binding.pry
16
+ player.last_score.should eq 0.0
17
+ player.submit_score(30)
18
+ sleep 1
19
+ player.last_score.should eq 30.0
20
+ player.submit_score(40)
21
+ sleep 1
22
+ player.last_score.should eq 70.0
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'supermodel'
3
+ require 'beintoo'
4
+ require 'rspec'
5
+ require 'pry'
6
+
7
+ def set_testing_data
8
+ Beintoo.configure do |config|
9
+ config.apikey = "1234567890"
10
+ config.redirect_uri = "http://localhost:3000"
11
+ config.sandbox = true
12
+ config.debug = true
13
+ end
14
+ end
15
+
16
+ def set_real_case_data
17
+ # Beintoo.configure do |config|
18
+ # config.apikey = ""
19
+ # config.sandbox = false
20
+ # config.debug = true
21
+ # end
22
+ pending "Add your config block in spec/spec_helper.rb"
23
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: beintoo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Enrico Carlesso
9
+ - Mattia Gheda
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-02-15 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ requirement: &70094414489660 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *70094414489660
26
+ - !ruby/object:Gem::Dependency
27
+ name: supermodel
28
+ requirement: &70094414489240 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *70094414489240
37
+ - !ruby/object:Gem::Dependency
38
+ name: pry
39
+ requirement: &70094414488820 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *70094414488820
48
+ - !ruby/object:Gem::Dependency
49
+ name: rest-client
50
+ requirement: &70094414488380 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *70094414488380
59
+ - !ruby/object:Gem::Dependency
60
+ name: rake
61
+ requirement: &70094414487960 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: *70094414487960
70
+ - !ruby/object:Gem::Dependency
71
+ name: json
72
+ requirement: &70094414487540 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: *70094414487540
81
+ - !ruby/object:Gem::Dependency
82
+ name: activesupport
83
+ requirement: &70094414487100 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: *70094414487100
92
+ description: This gem tries to wrap the Beintoo API (http://documentation.beintoo.com)
93
+ to a ruby friendly Module meant to be used within Ruby on Rails applications
94
+ email:
95
+ - enricocarlesso@gmail.com
96
+ - ghedamat@gmail.com
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .gitignore
102
+ - .rspec
103
+ - CHANGELOG
104
+ - Gemfile
105
+ - README.md
106
+ - Rakefile
107
+ - beintoo.gemspec
108
+ - lib/beintoo.rb
109
+ - lib/beintoo/api_exception.rb
110
+ - lib/beintoo/app.rb
111
+ - lib/beintoo/model_additions.rb
112
+ - lib/beintoo/player.rb
113
+ - lib/beintoo/railtie.rb
114
+ - lib/beintoo/user.rb
115
+ - lib/beintoo/version.rb
116
+ - lib/beintoo/vgood.rb
117
+ - lib/generators/beintoo_generator.rb
118
+ - lib/generators/templates/beintoo.rb
119
+ - script/console
120
+ - spec/beintoo/beintoo_player_spec.rb
121
+ - spec/beintoo/beintoo_user_spec.rb
122
+ - spec/beintoo/model_additions_spec.rb
123
+ - spec/beintoo/real_usage_spec.rb
124
+ - spec/spec_helper.rb
125
+ homepage: http://www.beintoo.com
126
+ licenses: []
127
+ post_install_message:
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ segments:
138
+ - 0
139
+ hash: -40742333141001870
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ segments:
147
+ - 0
148
+ hash: -40742333141001870
149
+ requirements: []
150
+ rubyforge_project: beintoo
151
+ rubygems_version: 1.8.10
152
+ signing_key:
153
+ specification_version: 3
154
+ summary: Ruby Wrapper for the Beintoo API
155
+ test_files:
156
+ - spec/beintoo/beintoo_player_spec.rb
157
+ - spec/beintoo/beintoo_user_spec.rb
158
+ - spec/beintoo/model_additions_spec.rb
159
+ - spec/beintoo/real_usage_spec.rb
160
+ - spec/spec_helper.rb