authmotion 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa117fa3546b2c98906faf95de73ffba330e0a28
4
+ data.tar.gz: 56c87a17ffd4c4edee893e0563b4b2c832cbef63
5
+ SHA512:
6
+ metadata.gz: e3dd76d8675aff838c8e38191fbe977105f1e44afd174cc4fe4e331eaa67601514747362f74463044fbf834bf3652b67f05119131f5269f252975e7d132677a7
7
+ data.tar.gz: 54c86f6dec654a8c52b5d3e252effe225d941f1ab54c5831c7ddd43238143f505ef748325e2c1ff9c1cd8d8a459d0841dfbfbc2fc422b680ea99bc87c52074db
@@ -0,0 +1,132 @@
1
+
2
+ # authmotion
3
+
4
+ ## Installation
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ gem 'authmotion'
9
+
10
+ And then execute:
11
+
12
+ $ bundle
13
+
14
+ Or install it yourself as:
15
+
16
+ $ gem install authmotion
17
+
18
+ ##How use it for login?
19
+
20
+ ```ruby
21
+ class LoginController < UIViewController
22
+ include Auth::EmailLogin
23
+
24
+ def viewDidLoad
25
+ #anything here... should be your form
26
+ end
27
+
28
+ ## You need define how get this fields, in this example i guess that the
29
+ ## inputs should be @email and @password
30
+ def user_field
31
+ @email
32
+ end
33
+
34
+ def password_field
35
+ @password
36
+ end
37
+
38
+ # format data for send to server
39
+ def data_login_user
40
+ {user:{login: @email.text, password:@password.text}}
41
+ end
42
+
43
+ # URL connection for login
44
+ def url_log_in
45
+ "http://auth-motion-server.herokuapp.com/users/login"
46
+ end
47
+
48
+ # Wating actions. In this app you'll see a background and an animation
49
+ def waiting_view
50
+ @background = WaitingView.create
51
+ view.addSubview(@background)
52
+ end
53
+
54
+ def hide_waiting_view
55
+ @background.removeFromSuperview
56
+ end
57
+
58
+ def success_conection_login
59
+ lambda{ |response| "PUTS YOUR ACTIONS HERE" }
60
+ end
61
+ end
62
+ ```
63
+
64
+ case test
65
+ * {user: login, password: 123456}
66
+
67
+ ##How use it for Register?
68
+
69
+ ```ruby
70
+ class LoginController < UIViewController
71
+ include Auth::EmailLogin
72
+
73
+ def viewDidLoad
74
+ #anything here... should be your form
75
+ end
76
+
77
+ ## You need define how get this fields,
78
+ ## in this example i guess that the inputs should be @email, @password,@password_confirmation
79
+ def user_field
80
+ @email
81
+ end
82
+
83
+ def password_field
84
+ @password
85
+ end
86
+
87
+ def password_confirmation_field
88
+ @password_confirmation
89
+ end
90
+
91
+ #########
92
+ # format data for send to server
93
+
94
+ def data_login_user
95
+ {user:{login: @email.text, password:@password.text, password_confirmation: @password_confirmation.text}}
96
+ end
97
+
98
+ # URL connection for register, POST
99
+
100
+ def url_log_in
101
+ "http://auth-motion-server.herokuapp.com/users"
102
+ end
103
+
104
+ # Wating actions. In this app you'll see a background and an animation
105
+ def waiting_view
106
+ @background = WaitingView.create
107
+ view.addSubview(@background)
108
+ end
109
+
110
+ def hide_waiting_view
111
+ @background.removeFromSuperview
112
+ end
113
+
114
+ def success_conection_register
115
+ lambda{ |response| "PUTS YOUR ACTIONS HERE" }
116
+ end
117
+ end
118
+ ```
119
+
120
+ #### case test
121
+ * Can register => {user: login, password: 123456, password_password: 123456}
122
+ * Is registered => {user: registered, password: ..., password: ...} any password it's ok
123
+ * Other error, you can test with any user.
124
+
125
+
126
+ ## Contributing
127
+
128
+ 1. Fork it
129
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
130
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
131
+ 4. Push to the branch (`git push origin my-new-feature`)
132
+ 5. Create new Pull Request
@@ -0,0 +1,8 @@
1
+ unless defined?(Motion::Project::Config)
2
+ raise "This file must be required within a RubyMotion project Rakefile."
3
+ end
4
+
5
+ lib_dir_path = File.dirname(File.expand_path(__FILE__))
6
+ Motion::Project::App.setup do |app|
7
+ app.files.unshift(Dir.glob(File.join(lib_dir_path, "project/**/*.rb")))
8
+ end
@@ -0,0 +1,173 @@
1
+ module Authmotion
2
+ module EmailLogin
3
+ #method that should be call it for register a user
4
+ def register_action
5
+ @action = "Register"
6
+ waiting_view
7
+ if has_enough_data_register?
8
+ response = conection(url_register,data_register_user)
9
+ else
10
+ custom_message("All fields are required")
11
+ hide_waiting_view
12
+ end
13
+ end
14
+
15
+ #method that should be call it for log in a user
16
+ def login_action
17
+ @action = "login"
18
+ waiting_view
19
+ if has_enough_data_login?
20
+ response = conection(url_log_in,data_login_user)
21
+ else
22
+ custom_message("All fields are required")
23
+ hide_waiting_view
24
+ end
25
+ end
26
+
27
+ def has_enough_data_login?
28
+ if user_field.nil? or password_field.nil?
29
+ raise "You need define email and password field"
30
+ end
31
+ user_valid? and password_field_simple?
32
+ end
33
+
34
+ def has_enough_data_register?
35
+ if user_field.nil? or password_field.nil? or password_confirmation_field.nil?
36
+ raise "You need define email, password and password confirmation field"
37
+ end
38
+ user_valid? and password_register_valid?
39
+ end
40
+
41
+
42
+ def errors_model(response)
43
+ message_json = parse(response)
44
+ messages=""
45
+ message_json["errors"].each do |field,message_array|
46
+ messages = " #{messages}\n #{field}: #{message_array.join("\n")}"
47
+ end
48
+ custom_message(messages)
49
+ end
50
+
51
+ def user_valid?
52
+ user_field.text != ""
53
+ end
54
+
55
+ def password_field_simple?
56
+ password_field.text != ""
57
+ end
58
+
59
+ def password_register_valid?
60
+ password_field.text != "" and password_confirmation_field.text == password_field.text
61
+ end
62
+
63
+ def after_conection ; end
64
+
65
+ def other_error
66
+ custom_message("Unknow error")
67
+ end
68
+
69
+ ####
70
+ # This methods should be implemented like a getters. example:
71
+ # def user_field
72
+ # @field #should be UITextField
73
+ # end
74
+ ###
75
+
76
+ def user_field
77
+ raise "should be implemented"
78
+ end
79
+
80
+ def login_field
81
+ raise "should be implemented"
82
+ end
83
+
84
+ def password_field
85
+ raise "should be implemented"
86
+ end
87
+
88
+ def password_confirmation_field
89
+ raise "should be implemented"
90
+ end
91
+
92
+ ###
93
+ # This method is a hash, how we send the data
94
+ # {login: 'x', password: ''}
95
+ ##
96
+ def data_login_user
97
+ raise "data_login_user MUST BE IMPLEMENTED"
98
+ end
99
+
100
+ def data_create_user
101
+ raise "data_create_user MUST BE IMPLEMENTED"
102
+ end
103
+
104
+ def errors
105
+ raise "errors should be implemented"
106
+ end
107
+
108
+ ###########################
109
+ ## Methods for conections
110
+ ###########################
111
+
112
+ def url_log_in
113
+ raise 'should be implemented'
114
+ end
115
+
116
+ def url_register
117
+ raise 'should be implemented'
118
+ end
119
+
120
+
121
+ def waiting_view
122
+ raise "waiting_view should be implemented"
123
+ end
124
+
125
+ ##############
126
+ # failed conection, should be a lambda
127
+ ###
128
+ def failed_conection
129
+ lambda do |response|
130
+ if response.status_code.to_s =~ /40\d/
131
+ message = "#{@action} failed"
132
+ else
133
+ message = response.error_message
134
+ end
135
+ custom_message(message)
136
+ end
137
+ end
138
+
139
+ def success_conection_register
140
+ lambda{|response| custom_message('Good, user register. May be you need change this :-) ')}
141
+ end
142
+
143
+ def success_conection_login
144
+ lambda{|response| custom_message('Good, user login. May be you need change this :-) ')}
145
+ end
146
+
147
+ private
148
+
149
+ def conection(url,data)
150
+ @json = nil
151
+ BW::HTTP.post(url, {payload: data} ) do |response|
152
+ if response.ok?
153
+ @json = parse(response)
154
+ success_conection_register.call(response)
155
+ else
156
+ failed_conection.call(response)
157
+ @json = nil
158
+ end
159
+ hide_waiting_view
160
+ end
161
+ end
162
+
163
+ def custom_message(string)
164
+ App.alert(string)
165
+ end
166
+
167
+ def parse response
168
+ puts response.body.class
169
+ BW::JSON.parse(response.body)
170
+ end
171
+ end
172
+ end
173
+
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: authmotion
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - daniel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: you can authenticate a user this gem
28
+ email:
29
+ - xzdasx@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - README.md
35
+ - lib/authmotion.rb
36
+ - lib/project/authmotion.rb
37
+ homepage: ''
38
+ licenses:
39
+ - ''
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.1.11
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: mmmm
61
+ test_files: []