authmotion 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.
@@ -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: []