dre 0.0.5 → 0.1.2

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: 0071fcf05aea5addf1962075b08dc2d97df64fc1
4
- data.tar.gz: 8af0fd169ea520744358731ce7910870393aa551
3
+ metadata.gz: f07de55eacdb7886f3b1e0b16671acf65bb61cd9
4
+ data.tar.gz: 7746e3b3613729fc8d6c03f10e6aea2ee0bee3d0
5
5
  SHA512:
6
- metadata.gz: fd5ed250899f958080ba6086b8c3a0850ffbd6546009418122ca3d08cb958f33754414eb1fd525ffc2a9fa48c3b04baf224701c3fda064e8613a3f31388fee5e
7
- data.tar.gz: 4f45c9376b1821619bdbcbb1551d625bcb4d5d75d8128401d2c63eff02a3ad690af837f557ca7ed339bc7b3cc2a485bbaff323f2bd6ec74a4a1e83f9f6d78008
6
+ metadata.gz: 6bf13c907fca3d503f096352fac2e2ff2ed7f23f52caf035d2afe971e8f0821d568548340e1412492bed405622b1d387a81281a851f0093b070e4c8fbfbf6d81
7
+ data.tar.gz: 624b742ff2457fdac317ac3568f805d2a0cda62a18f2fdba5c2cab6b346efb51f0e221afb268158f8e0ad8414bb23cdcf13a282bd3506e7201bc031b31973302
@@ -1,4 +1,29 @@
1
1
  module Dre
2
2
  class ApplicationController < ActionController::Base
3
+ class Dre::NilPlatform < RuntimeError ; end
4
+
5
+ private
6
+
7
+ def detect_platform
8
+ if ios?
9
+ :ios
10
+ elsif android?
11
+ :android
12
+ end
13
+ end
14
+
15
+ def platform_header
16
+ request.headers['X-User-Platform'].tap do |header|
17
+ raise Dre::NilPlatform unless header.present?
18
+ end
19
+ end
20
+
21
+ def ios?
22
+ !!(platform_header.downcase =~ /iphone|ipad/)
23
+ end
24
+
25
+ def android?
26
+ !!(platform_header.downcase =~ /android/)
27
+ end
3
28
  end
4
29
  end
@@ -12,6 +12,8 @@ module Dre
12
12
 
13
13
  def register
14
14
  @device = collection.where(token: params[:token]).first || Device.new(owner: user, token: params[:token])
15
+ @device.platform = detect_platform
16
+
15
17
  response = @device.persisted? ? 200 : 201
16
18
 
17
19
  if @device.save
@@ -1,11 +1,18 @@
1
1
  module Dre
2
2
  class Device < ActiveRecord::Base
3
+ # OS:
4
+ enum platform: {
5
+ ios: 1,
6
+ android: 2
7
+ }
8
+
3
9
  # Associations:
4
10
  belongs_to :owner, polymorphic: true
5
11
 
6
12
  # Validations:
7
13
  validates :owner_id, presence: true
8
14
  validates :owner_type, presence: true
15
+ validates :platform, presence: true
9
16
  validates :token, presence: true
10
17
  validates :token, uniqueness: { scope: [:owner_id, :owner_type] }
11
18
 
@@ -42,10 +42,10 @@ module Dre
42
42
  as: :devices,
43
43
  path: 'devices',
44
44
  only: [:index],
45
- )
46
-
47
- routes.put 'devices/:token', controller: mapping[:controllers], action: :register
48
- routes.delete 'devices/:token', controller: mapping[:controllers], action: :deregister
45
+ ) do |scope|
46
+ routes.put ':token', controller: mapping[:controllers], action: :register, on: :collection
47
+ routes.delete ':token', controller: mapping[:controllers], action: :deregister, on: :collection
48
+ end
49
49
  end
50
50
  end
51
51
  end
data/lib/dre/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dre
2
- VERSION = "0.0.5"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -4,6 +4,7 @@ class DreCreateDevices < ActiveRecord::Migration
4
4
  t.string :token
5
5
  t.integer :owner_id
6
6
  t.string :owner_type
7
+ t.integer :platform
7
8
 
8
9
  t.timestamps null: false
9
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dre
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Ivanopoulos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-03 00:00:00.000000000 Z
11
+ date: 2015-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: shoulda-matchers
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: An engine to easily add in a Device model and registration / deregistration
112
126
  system by supplying a token provided mobile applications. Provides easy associations
113
127
  to device owner models.