simply_auth 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a571fc9014ad945181c6bdf7be79bd56b3f9b340
4
- data.tar.gz: 1176b358d6a9c819c7f8398f09757048c34c4688
3
+ metadata.gz: 19d39d6db1217f751baaf74b2fe5a026cd4640f1
4
+ data.tar.gz: 82598e3f989129584b8196b33ea9c104aa6b6d3c
5
5
  SHA512:
6
- metadata.gz: 97ebeecba79b67a5bc90991884a9acaf2dab4860c8471e727fa452c002046c1778b106aa0985d5aa56a514f653adf50fff5230781b1561e4e02a29f51e3dfc1c
7
- data.tar.gz: a76810f18f67fa8a72e65dc1ac78451b1045f6b57986b42d3ffb7bfc7c3ea11a37585444265d373e99822a848e52639f1ed5992db2266754047c862c673860f0
6
+ metadata.gz: 1f7b855c948a085af251243573d7f76baf879976b1a4732236ac082a876adb94e78047f42df04743db243a56a547695e234cf11f53c27b7e971005eef3087a13
7
+ data.tar.gz: 97b8c1a65cf492d7895aa28068841ec9fd65fc1c9bfe5502decb4c4b6d20b87e0e665ee524f4c8b4e9e25cdfcfbe57b11d2b0fe8df3ea736dc0d13f73da29105
@@ -1,3 +1,5 @@
1
+ require 'rest-client'
2
+
1
3
  module SimplyAuth
2
4
  class Model
3
5
  include ActiveModel::Model
@@ -38,38 +40,36 @@ module SimplyAuth
38
40
 
39
41
  def save
40
42
  if valid?
41
- Rails.logger.error([
42
- persisted? ? :patch : :post,
43
- "https://api.simplyauth.com#{persisted? ? instance_path : collection_path}",
44
- attributes.to_json,
45
- {accept: :json,
46
- content_type: :json}
47
- ].inspect)
43
+ # Rails.logger.error([
44
+ # persisted? ? :patch : :post,
45
+ # "https://api.simplyauth.com#{persisted? ? instance_path : collection_path}",
46
+ # {model_name.element.camelize(:lower) => attributes}.to_json,
47
+ # {accept: :json,
48
+ # content_type: :json}
49
+ # ].inspect)
48
50
  response = RestClient.send(
49
51
  persisted? ? :patch : :post,
50
52
  "https://api.simplyauth.com#{persisted? ? instance_path : collection_path}",
51
- attributes.to_json,
53
+ {model_name.element.camelize(:lower) => attributes}.to_json,
52
54
  accept: :json,
53
55
  content_type: :json
54
56
  )
55
- Rails.logger.error("3")
56
- body = JSON.parse(response.body)
57
+ body = JSON.parse(response.body)[model_name.element.camelize(:lower)]
57
58
  body = body.deep_transform_keys { |key| key.to_s.underscore }
58
- Rails.logger.error("4")
59
- self.attributes = body
59
+ self.attributes = self.class.new.attributes.merge(body)
60
60
  changes_applied
61
61
  self.persisted = true
62
- Rails.logger.error("5")
63
62
  true
64
63
  else
65
- Rails.logger.error("6")
66
64
  false
67
65
  end
68
66
  end
69
67
 
70
68
  def self.owner_class
69
+ @owner_class_set ||= false
71
70
  return @owner_class if @owner_class_set
72
- @owner_class = "SimplyAuth::#{self.owner_class_name}".constantize if self.owner_class_name
71
+ return nil unless self.owner_class_name
72
+ @owner_class = "SimplyAuth::#{self.owner_class_name}".constantize
73
73
  @owner_class_set = true
74
74
  @owner_class
75
75
  end
@@ -125,7 +125,7 @@ module SimplyAuth
125
125
  "https://api.simplyauth.com#{instance_path(ids)}",
126
126
  accept: :json
127
127
  )
128
- body = JSON.parse(response.body)
128
+ body = JSON.parse(response.body)[model_name.element.camelize(:lower)]
129
129
  body = body.deep_transform_keys { |key| key.to_s.underscore }
130
130
  new(body).tap do |r|
131
131
  r.persisted = true
@@ -1,6 +1,6 @@
1
1
  module SimplyAuth
2
2
  class Session < Model
3
- attr_accessor :email, :password, :user
3
+ attr_accessor :email, :password, :user, :user_pool_id
4
4
  validates :email, format: /[^@]+@[^@]+/
5
5
  validates :password, length: 6..72
6
6
  def attributes
@@ -12,6 +12,9 @@ module SimplyAuth
12
12
  def self.owner_class_name
13
13
  "UserPool"
14
14
  end
15
+ def owner_id
16
+ user_pool_id
17
+ end
15
18
  def destroy
16
19
  response = RestClient.delete(
17
20
  "https://api.simplyauth.com#{instance_path}",
@@ -1,9 +1,13 @@
1
1
  module SimplyAuth
2
2
  class User < Model
3
3
  attr_accessor :name, :email, :password, :user_pool_id
4
- validates :name, presence: true
5
4
  validates :email, format: /[^@]+@[^@]+/
6
- validates :password, length: 6..72, if: :password
5
+ validates :password, length: 6..72, if: :password_or_new_record?
6
+
7
+ def password_or_new_record?
8
+ password || !persisted?
9
+ end
10
+
7
11
  def attributes
8
12
  super.merge(name: name, email: email, password: password)
9
13
  end
@@ -21,7 +25,7 @@ module SimplyAuth
21
25
  "https://api.simplyauth.com#{collection_path(ids)}",
22
26
  accept: :json
23
27
  )
24
- body = JSON.parse(response.body)
28
+ body = JSON.parse(response.body)[model_name.element.pluralize.camelize(:lower)]
25
29
  body.map do |data|
26
30
  data = data.deep_transform_keys { |key| key.to_s.underscore }
27
31
  new(data)
@@ -1,5 +1,6 @@
1
1
  module SimplyAuth
2
2
  class UserPool < Model
3
+ validates :name, presence: true
3
4
  attr_accessor :name
4
5
  def attributes
5
6
  super.merge(name: name)
@@ -18,7 +19,7 @@ module SimplyAuth
18
19
  "https://api.simplyauth.com#{collection_path}",
19
20
  accept: :json
20
21
  )
21
- body = JSON.parse(response.body)
22
+ body = JSON.parse(response.body)[model_name.element.pluralize.camelize(:lower)]
22
23
  body.map do |data|
23
24
  data = data.deep_transform_keys { |key| key.to_s.underscore }
24
25
  new(data)
@@ -1,3 +1,3 @@
1
1
  module SimplyAuth
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
data/lib/simply_auth.rb CHANGED
@@ -1,6 +1,20 @@
1
1
  require "simply_auth/engine"
2
2
  require "simply_auth/version"
3
3
  require "simply_auth/controller_helpers"
4
+ require 'rest-client'
5
+ require 'http_signatures'
4
6
 
5
7
  module SimplyAuth
6
8
  end
9
+
10
+ RestClient.add_before_execution_proc do |req, args|
11
+ if req.uri.host == "api.simplyauth.com"
12
+ req["Date"] = Time.now.rfc822
13
+ req["Content-Length"] = args[:payload] ? args[:payload].length.to_s : "0"
14
+ HttpSignatures::Context.new(
15
+ keys: {SimplyAuth::Config.api_key_id => SimplyAuth::Config.api_key_secret},
16
+ algorithm: "hmac-sha256",
17
+ headers: ["Date", "Content-Length"],
18
+ ).signer.sign(req)
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simply_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Fogle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-02 00:00:00.000000000 Z
11
+ date: 2018-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -25,17 +25,31 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: sqlite3
28
+ name: rest-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: http_signatures
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  description:
@@ -57,7 +71,6 @@ files:
57
71
  - app/helpers/simply_auth/application_helper.rb
58
72
  - app/jobs/simply_auth/application_job.rb
59
73
  - app/mailers/simply_auth/application_mailer.rb
60
- - app/models/simply_auth/api_key.rb
61
74
  - app/models/simply_auth/config.rb
62
75
  - app/models/simply_auth/model.rb
63
76
  - app/models/simply_auth/session.rb
@@ -1,28 +0,0 @@
1
- module SimplyAuth
2
- class ApiKey < Model
3
- attr_accessor :name, :id, :secret
4
-
5
- def attributes
6
- super.merge(name: name, id: id, secret: secret)
7
- end
8
-
9
- def self.all
10
- response = RestClient.get(
11
- "https://api.simplyauth.com#{collection_path}",
12
- accept: :json
13
- )
14
- body = JSON.parse(response.body)
15
- body.map do |data|
16
- data = data.deep_transform_keys { |key| key.to_s.underscore }
17
- new(data)
18
- end
19
- end
20
-
21
- def destroy
22
- RestClient.delete(
23
- "https://api.simplyauth.com#{instance_path}",
24
- accept: :json
25
- )
26
- end
27
- end
28
- end