device_cloud 0.0.6 → 0.0.7

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.
@@ -1,5 +1,9 @@
1
1
  module DeviceCloud
2
2
  class PushNotification::DataNotification < PushNotification::BaseNotification
3
+ def initialize(file_data)
4
+ @file_data = file_data
5
+ end
6
+
3
7
  def handle!
4
8
  DeviceCloud.data_notification_handler.call(self)
5
9
  end
@@ -18,9 +18,17 @@ module DeviceCloud
18
18
  file_path + file_name
19
19
  end
20
20
 
21
+ def content_type
22
+ fdContentType
23
+ end
24
+
21
25
  def data
22
26
  return false unless valid?
23
- @data ||= JSON.parse unencoded_data
27
+ @data ||= if json_data?
28
+ JSON.parse unencoded_data
29
+ else
30
+ unencoded_data
31
+ end
24
32
  end
25
33
 
26
34
  def file_name
@@ -35,25 +43,19 @@ module DeviceCloud
35
43
 
36
44
  def valid?
37
45
  return false if @errors.any?
38
- validate_content_type! && validate_content!
46
+ validate_content!
39
47
  end
40
48
  private
49
+ def json_data?
50
+ fdContentType =~ /json/ || file_name =~ /\.json\z/
51
+ end
41
52
 
42
53
  def unencoded_data
43
54
  @unencode_data ||= Base64.decode64(fdData)
44
55
  end
45
56
 
46
- def validate_content_type!
47
- if file_name =~ /\.json/
48
- true
49
- else
50
- @errors << 'wrong file type'
51
- false
52
- end
53
- end
54
-
55
57
  def validate_content!
56
- if fdData.size == 0 || fdSize.to_i < 1
58
+ if !fdData || fdData.size == 0 || fdSize.to_i < 1
57
59
  @errors << 'no content'
58
60
  false
59
61
  else
@@ -1,3 +1,3 @@
1
1
  module DeviceCloud
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -18,9 +18,9 @@ describe DeviceCloud::PushNotification::Message::FileData do
18
18
  }
19
19
  end
20
20
 
21
- describe "attributes" do
22
- subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data }
21
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data }
23
22
 
23
+ describe "attributes" do
24
24
  its(:id) { should eq(raw_file_data['id']) }
25
25
  its(:fdLastModifiedDate) { should eq(raw_file_data['fdLastModifiedDate']) }
26
26
  its(:fdSize) { should eq(raw_file_data['fdSize']) }
@@ -32,32 +32,6 @@ describe DeviceCloud::PushNotification::Message::FileData do
32
32
  end
33
33
 
34
34
  describe '#valid?' do
35
- subject { DeviceCloud::PushNotification::Message::FileData.new }
36
- context 'wrong file type' do
37
- let(:raw_file_data) do
38
- {
39
- "id" => {
40
- "fdPath" => "/db/4044_MadGlory_Interactive/00000000-00000000-001395FF-FF0E6014/",
41
- "fdName" => "event"
42
- },
43
- "fdLastModifiedDate" => "2013-06-26T16:18:39.675Z",
44
- "fdSize" => 0,
45
- "fdContentType" => "application/octet-stream",
46
- "fdArchive" => false,
47
- "cstId" => 4044,
48
- "fdType" => "directory",
49
- "fdCreatedDate" => "2013-06-26T16:18:39.675Z"
50
- }
51
- end
52
-
53
- subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data}
54
- its(:valid?) { should be_false }
55
- it "should set a 'wrong file type' error" do
56
- subject.valid?
57
- expect(subject.errors.include?('wrong file type')).to be_true
58
- end
59
- end
60
-
61
35
  context 'without content' do
62
36
  let(:raw_file_data) do
63
37
  {
@@ -78,7 +52,7 @@ describe DeviceCloud::PushNotification::Message::FileData do
78
52
 
79
53
  subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data}
80
54
  its(:valid?) { should be_false }
81
- it "should set a 'wrong file type' error" do
55
+ it "should set a 'no content' error" do
82
56
  subject.valid?
83
57
  expect(subject.errors.include?('no content')).to be_true
84
58
  end
@@ -93,6 +67,7 @@ describe DeviceCloud::PushNotification::Message::FileData do
93
67
  end
94
68
 
95
69
  context "when id blank" do
70
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data.merge( 'id' => nil ) }
96
71
  its(:file_path) { should eq '' }
97
72
  end
98
73
  end
@@ -105,18 +80,34 @@ describe DeviceCloud::PushNotification::Message::FileData do
105
80
  end
106
81
 
107
82
  context "when id blank" do
83
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data.merge( 'id' => nil ) }
108
84
  its(:file_name) { should eq '' }
109
85
  end
110
86
  end
111
87
 
112
88
  describe "#data" do
113
89
  context 'when valid' do
114
- subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data }
90
+ context "json content-type" do
91
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data }
92
+ its(:data) { should eq(JSON.parse(Base64.decode64(raw_file_data['fdData']))) }
93
+ end
94
+
95
+ context "non-json content-type" do
96
+ before(:each) do
97
+ raw_file_data['fdContentType'] = 'foobar'
98
+ raw_file_data['id']['fdName'] = 'not_json.jpg'
99
+ end
100
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data }
115
101
 
116
- its(:data) { should eq(JSON.parse(Base64.decode64(raw_file_data['fdData']))) }
102
+ its(:data) { should eq(Base64.decode64(raw_file_data['fdData'])) }
103
+ end
117
104
  end
118
105
 
119
106
  context 'when invalid' do
107
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data.merge('fdData' => '') }
108
+ its(:data) { should be_false }
109
+
110
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data.merge('fdData' => nil) }
120
111
  its(:data) { should be_false }
121
112
  end
122
113
  end
@@ -126,4 +117,10 @@ describe DeviceCloud::PushNotification::Message::FileData do
126
117
 
127
118
  its(:full_path) { should eq(raw_file_data['id']['fdPath'] + raw_file_data['id']['fdName']) }
128
119
  end
120
+
121
+ describe "#content_type" do
122
+ subject { DeviceCloud::PushNotification::Message::FileData.new raw_file_data }
123
+
124
+ its(:content_type) { should eq raw_file_data['fdContentType'] }
125
+ end
129
126
  end
data/spec/version_spec.rb CHANGED
@@ -2,6 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe 'DeviceCloud::VERSION' do
4
4
  it 'should be the correct version' do
5
- DeviceCloud::VERSION.should == '0.0.6'
5
+ DeviceCloud::VERSION.should == '0.0.7'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: device_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: