ruby-pushbullet 0.1.2 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b49aed8fdb5c64e3c4253a1c9fe1d84b411867ee
4
- data.tar.gz: 8ba43ab44197cdfb6ff915d833d9b08f963f5322
3
+ metadata.gz: e2e05f7318c86a09bb511d28c63811242e2dc180
4
+ data.tar.gz: 38ee3dd285e45f43a1bb1bd495ace4925fce26e7
5
5
  SHA512:
6
- metadata.gz: 756bad7f9044dab161ee878f19777575dbb98f4ea8167764e55c8d2bd054d9e4fce1bf2e3f379718f39d8378b91026569927bbc3fdee9152734e3178f254dbd8
7
- data.tar.gz: c03faae1c2fecd83e06d388e540b3d61131797e3720afe757fafe74eb550772d560ba1db9edc4abd83af82d12d17a6525163dc4f4ef9046db0e0e4347190f45a
6
+ metadata.gz: 6af85d29376b9873b168233aa4753ed13a2b625883066f2c11a01316f83d1f40bdac5b7c47d53bd2b28ead685ad7ffb3d190a4c9c13c85e2e3890d85156bf0b9
7
+ data.tar.gz: 90198955dcaf00b4a8a44eea8a1968a3be04a36f0215b305bbce07f0ea07cef40294f01bcab6637d3c8c6d14ed30fae68b2464dc22172080fe0c03f438f07438
data/README.md CHANGED
@@ -1,7 +1,12 @@
1
1
  # Ruby Pushbullet API
2
2
 
3
- [![Build Status](https://travis-ci.org/letz/ruby-pushbullet.svg)](https://travis-ci.org/letz/ruby-pushbullet)
3
+ Stable:
4
+ [![Build Status](https://travis-ci.org/letz/ruby-pushbullet.svg?branch=master)](https://travis-ci.org/letz/ruby-pushbullet)
5
+ Dev:
6
+ [![Build Status](https://travis-ci.org/letz/ruby-pushbullet.svg?branch=development)](https://travis-ci.org/letz/ruby-pushbullet)
7
+
4
8
  [![Code Climate](https://codeclimate.com/github/letz/ruby-pushbullet/badges/gpa.svg)](https://codeclimate.com/github/letz/ruby-pushbullet)
9
+ [![Gem Version](https://badge.fury.io/rb/ruby-pushbullet.svg)](http://badge.fury.io/rb/ruby-pushbullet)
5
10
 
6
11
 
7
12
  This library is an implementation of [Pushbullet API](https://docs.pushbullet.com/http)
data/lib/pushbullet.rb CHANGED
@@ -7,6 +7,7 @@ require 'pushbullet/contact'
7
7
  require 'pushbullet/device'
8
8
  require 'pushbullet/push'
9
9
  require 'pushbullet/channel'
10
+ require 'pushbullet/error'
10
11
 
11
12
  require 'core_ext/string.rb'
12
13
 
@@ -1,5 +1,24 @@
1
1
  module Pushbullet
2
2
  class Channel < Resource
3
3
  include Pushable
4
+
5
+ def self.subscribe(name)
6
+ create(channel_tag: name)
7
+ end
8
+
9
+ def self.unsubscribe(idn)
10
+ Pushbullet.client.delete "#{path}/#{idn}"
11
+ true
12
+ end
13
+
14
+ def self.get_info(tag)
15
+ channel = new Pushbullet.client.get("channel-info?tag=#{tag}")
16
+ channel.recent_pushes.map! { |push| Pushbullet::Push.new push }
17
+ channel
18
+ end
19
+
20
+ def self.path
21
+ 'subscriptions'
22
+ end
4
23
  end
5
24
  end
@@ -6,23 +6,35 @@ module Pushbullet
6
6
  END_POINT = "https://api.pushbullet.com/v#{API_VERSION}/"
7
7
 
8
8
  def get(path)
9
- JSON.parse(generic_request(path).get)
9
+ JSON.parse(generic_request(path).get &handle_error)
10
10
  end
11
11
 
12
12
  def post(path, params = {})
13
- JSON.parse(generic_request(path).post params)
13
+ JSON.parse(generic_request(path).post params, &handle_error)
14
14
  end
15
15
 
16
16
  def put(path, params = {})
17
- JSON.parse(generic_request(path).put params)
17
+ JSON.parse(generic_request(path).put params, &handle_error)
18
18
  end
19
19
 
20
20
  def delete(path, params = {})
21
- JSON.parse(generic_request(path).delete params)
21
+ JSON.parse(generic_request(path).delete params, &handle_error)
22
22
  end
23
23
 
24
24
  def generic_request(path)
25
25
  RestClient::Resource.new("#{END_POINT}#{path}", Pushbullet.api_token, '')
26
26
  end
27
+
28
+ private
29
+
30
+ def handle_error
31
+ proc do |response, request, result, &block|
32
+ if response.code >= 400 && response.code <= 500
33
+ fail Pushbullet::Error, JSON.parse(response)['error']['message']
34
+ else
35
+ response.return!(request, result, &block)
36
+ end
37
+ end
38
+ end
27
39
  end
28
40
  end
@@ -0,0 +1,5 @@
1
+ module Pushbullet
2
+ class Error < StandardError
3
+
4
+ end
5
+ end
@@ -0,0 +1,89 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://DhOX5Q8Fps9mq4g90yfrfioRPyo1qQRd:@api.pushbullet.com/v2/channel-info?tag=jblow
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ X-Ratelimit-Limit:
22
+ - '16384'
23
+ X-Ratelimit-Remaining:
24
+ - '16376'
25
+ X-Ratelimit-Reset:
26
+ - '1422839172'
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Mon, 02 Feb 2015 01:02:44 GMT
31
+ Server:
32
+ - Google Frontend
33
+ Cache-Control:
34
+ - private
35
+ Transfer-Encoding:
36
+ - chunked
37
+ body:
38
+ encoding: UTF-8
39
+ string: '{"iden":"ujxPklLhvyKsjAvkMyTVh6","name":"Jonathan Blow","tag":"jblow","description":"New
40
+ comments on the web by Jonathan Blow.","image_url":"https://pushbullet.imgix.net/ujxPklLhvyK-6fXf4O2JQ1dBKQedhypIKwPX0lyFfwXW/jonathan-blow.png","subscriber_count":2,"recent_pushes":[{"active":true,"created":1.4228082603693361e+09,"modified":1.4228082603693361e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
41
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
42
+ Jonathan Blow","body":"My point is that you can solve this one symptom but
43
+ your program will have many other problems due to GC (provided it does a lot
44
+ of work). It is like whack-a-mole in that there are always more moles.","url":"https://news.ycombinator.com/item?id=8980421"},{"active":true,"created":1.422798660727149e+09,"modified":1.422798660727149e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
45
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
46
+ Jonathan Blow","body":"It is only an implementation issue if it is possible
47
+ to solve the issue.\u003cp\u003eNobody has ever built a garbage collector
48
+ that does not slow your program down or cause it to use vastly more resources
49
+ than it would otherwise. (Claims to the contrary are always implicitly caveated).\u003cp\u003eGiven
50
+ that this is the case, it really does start looking like a language issue.
51
+ Yes you can rearchitect the GC to care more about locality, but you are just
52
+ pushing the dust around on the floor: you will find a different problem.","url":"https://news.ycombinator.com/item?id=8979853"},{"active":true,"created":1.4227266561493518e+09,"modified":1.4227266561493518e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
53
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
54
+ Jonathan Blow","body":"Show me your commits where you''ve fixed lots of driver
55
+ bugs. You sound like you have no idea what you''re talking about.","url":"https://news.ycombinator.com/item?id=8977344"},{"active":true,"created":1.4223061366878679e+09,"modified":1.4223061366878679e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
56
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
57
+ Jonathan Blow","body":"Which is why people who are serious about memory write
58
+ their own allocators (or link preferred allocators with known behavior). It
59
+ is an extremely common thing.","url":"https://news.ycombinator.com/item?id=8949509"},{"active":true,"created":1.422302518161314e+09,"modified":1.422302518161314e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
60
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
61
+ Jonathan Blow","body":"It''s bad.\u003cp\u003eThe reason is because you don''t
62
+ control the GC and don''t even necessarily know what exactly drives the decisions
63
+ it makes. So once you want to go beyond a certain level of performance, there
64
+ is no right answer. You are just randomly trying stuff and kind of flailing.\u003cp\u003eIn
65
+ C++ (or another direct-memory language), there \u003ci\u003eis\u003c/i\u003e
66
+ a right answer. You can always make the memory do exactly what you want it
67
+ to, and there''s always a clear path to get there from wherever you are.","url":"https://news.ycombinator.com/item?id=8949194"},{"active":true,"created":1.422225070409618e+09,"modified":1.422225070409618e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
68
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
69
+ Jonathan Blow","body":"No, no it isn''t.\u003cp\u003eThere is always some
70
+ garbage velocity beyond which any given system is not able to cope.\u003cp\u003eUsually
71
+ that limit is kinda small compared to what you''d actually like your program
72
+ to be able to do.","url":"https://news.ycombinator.com/item?id=8944488"},{"active":true,"created":1.42222203965698e+09,"modified":1.42222203965698e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
73
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
74
+ Jonathan Blow","body":"When I think of what I want in an operating system,
75
+ \"I wish it would lock up occasionally while everything garbage collects\"
76
+ is not high on the list.","url":"https://news.ycombinator.com/item?id=8944355"},{"active":true,"created":1.4218015277376e+09,"modified":1.4218015277376e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
77
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
78
+ Jonathan Blow","body":"You can''t schedule something unknown.","url":"https://news.ycombinator.com/item?id=8920782"},{"active":true,"created":1.421376056481366e+09,"modified":1.421376056481366e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
79
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
80
+ Jonathan Blow","body":"Steam doesn''t deal with its own files. It deals mainly
81
+ with random games that are creating tons of random files.","url":"https://news.ycombinator.com/item?id=8896969"},{"active":true,"created":1.420861842632239e+09,"modified":1.420861842632239e+09,"type":"link","dismissed":false,"sender_name":"Jonathan
82
+ Blow","channel_iden":"ujxPklLhvyKsjAvkMyTVh6","title":"New comment on HN by
83
+ Jonathan Blow","body":"See this graph:\u003cp\u003e\u003ca href=\"http://www.extremetech.com/wp-content/uploads/2013/08/CPU-Scaling.jpg\"
84
+ rel=\"nofollow\"\u003ehttp://www.extremetech.com/wp-content/uploads/2013/08/CPU-Sc...\u003c/a\u003e\u003cp\u003eThe
85
+ green line was the only one still going, and it plateaued about a year ago
86
+ (you''d see that in a newer graph).","url":"https://news.ycombinator.com/item?id=8865836"}]}'
87
+ http_version:
88
+ recorded_at: Mon, 02 Feb 2015 01:02:44 GMT
89
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,47 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://DhOX5Q8Fps9mq4g90yfrfioRPyo1qQRd:@api.pushbullet.com/v2/subscriptions
6
+ body:
7
+ encoding: US-ASCII
8
+ string: channel_tag=jblow
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ Content-Length:
15
+ - '17'
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ User-Agent:
19
+ - Ruby
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ X-Ratelimit-Limit:
26
+ - '16384'
27
+ X-Ratelimit-Remaining:
28
+ - '16375'
29
+ X-Ratelimit-Reset:
30
+ - '1422844422'
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ Date:
34
+ - Mon, 02 Feb 2015 01:45:39 GMT
35
+ Server:
36
+ - Google Frontend
37
+ Cache-Control:
38
+ - private
39
+ Transfer-Encoding:
40
+ - chunked
41
+ body:
42
+ encoding: UTF-8
43
+ string: '{"active":true,"iden":"ujx7XdJ9W8qsjAlOnVVSqy","created":1.4228415395417912e+09,"modified":1.422841539541797e+09,"channel":{"iden":"ujxPklLhvyKsjAvkMyTVh6","tag":"jblow","name":"Jonathan
44
+ Blow","description":"New comments on the web by Jonathan Blow.","image_url":"https://pushbullet.imgix.net/ujxPklLhvyK-6fXf4O2JQ1dBKQedhypIKwPX0lyFfwXW/jonathan-blow.png"}}'
45
+ http_version:
46
+ recorded_at: Mon, 02 Feb 2015 01:45:40 GMT
47
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,42 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: delete
5
+ uri: https://DhOX5Q8Fps9mq4g90yfrfioRPyo1qQRd:@api.pushbullet.com/v2/subscriptions/ujx7XdJ9W8qsjAlOnVVSqy
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ X-Ratelimit-Limit:
22
+ - '16384'
23
+ X-Ratelimit-Remaining:
24
+ - '16368'
25
+ X-Ratelimit-Reset:
26
+ - '1422844422'
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Mon, 02 Feb 2015 01:52:59 GMT
31
+ Server:
32
+ - Google Frontend
33
+ Cache-Control:
34
+ - private
35
+ Transfer-Encoding:
36
+ - chunked
37
+ body:
38
+ encoding: UTF-8
39
+ string: "{}"
40
+ http_version:
41
+ recorded_at: Mon, 02 Feb 2015 01:52:59 GMT
42
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,42 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://DhOX5Q8Fps9mq4g90yfrfioRPyo1qQRd:@api.pushbullet.com/v2/contacts
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 400
19
+ message: OK
20
+ headers:
21
+ X-Ratelimit-Limit:
22
+ - '16384'
23
+ X-Ratelimit-Remaining:
24
+ - '16310'
25
+ X-Ratelimit-Reset:
26
+ - '1422816448'
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Tue, 28 Apr 2015 00:01:47 GMT
31
+ Server:
32
+ - Google Frontend
33
+ Cache-Control:
34
+ - private
35
+ Transfer-Encoding:
36
+ - chunked
37
+ body:
38
+ encoding: UTF-8
39
+ string: '{"error":{"message": "The resource could not be found.", "type": "invalid_request", "cat": "~(=^‥^)"}}'
40
+ http_version:
41
+ recorded_at: Tue, 28 Apr 2015 00:01:47 GMT
42
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pushbullet::Channel do
4
+ describe '::get_info' do
5
+ context 'given a channel tag' do
6
+ let(:tag) { 'jblow'}
7
+
8
+ it 'returns channel info' do
9
+ VCR.use_cassette('channel_info') do
10
+ expect(described_class.get_info tag).to be_a described_class
11
+ end
12
+ end
13
+
14
+ it 'returns channel with recent pushes' do
15
+ VCR.use_cassette('channel_info') do
16
+ described_class.get_info(tag).recent_pushes.each do |push|
17
+ expect(push).to be_a Pushbullet::Push
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '::subscribe' do
25
+ context 'given a channel tag' do
26
+ let(:tag) { 'jblow' }
27
+
28
+ it 'returns a channel' do
29
+ VCR.use_cassette('channel_subscribe') do
30
+ expect(described_class.subscribe tag).to be_a described_class
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ describe '::unsubscribe' do
37
+ context 'given a channel idn' do
38
+ let(:idn) { 'ujx7XdJ9W8qsjAlOnVVSqy' }
39
+
40
+ it 'unsubscribes a channel' do
41
+ VCR.use_cassette('channel_unsubscribe') do
42
+ expect(described_class.unsubscribe idn).to be_truthy
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pushbullet::Client do
4
+ describe '#get' do
5
+ it_behaves_like('a better HTTP response handling') do
6
+ let(:request) { described_class.new.get '' }
7
+ end
8
+ end
9
+
10
+ describe '#post' do
11
+ it_behaves_like('a better HTTP response handling') do
12
+ let(:request) { described_class.new.post '' }
13
+ end
14
+ end
15
+
16
+ describe '#put' do
17
+ it_behaves_like('a better HTTP response handling') do
18
+ let(:request) { described_class.new.put '' }
19
+ end
20
+ end
21
+
22
+ describe '#delete' do
23
+ it_behaves_like('a better HTTP response handling') do
24
+ let(:request) { described_class.new.delete '' }
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ shared_examples 'a better HTTP response handling' do
2
+ it 'raises an Pushbullet::Error with the message' do
3
+ VCR.use_cassette('get_error', match_requests_on: [:host]) do
4
+ expect { request }.to raise_error(Pushbullet::Error)
5
+ end
6
+ end
7
+
8
+ it 'does not raise an Pushbullet::Error with the message' do
9
+ VCR.use_cassette('contacts_all', match_requests_on: [:host]) do
10
+ expect { request }.not_to raise_error
11
+ end
12
+ end
13
+ end
data/spec/spec_helper.rb CHANGED
@@ -27,6 +27,8 @@ RSpec.configure do |config|
27
27
  config.filter_run focus: true
28
28
  config.order = 'random'
29
29
  config.include FactoryGirl::Syntax::Methods
30
+
31
+ Dir['./spec/shared/**/*.rb'].each { |f| require f }
30
32
  end
31
33
 
32
34
  Pushbullet.api_token = 'DhOX5Q8Fps9mq4g90yfrfioRPyo1qQRd'
metadata CHANGED
@@ -1,197 +1,197 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-pushbullet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Leitao
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-02 00:00:00.000000000 Z
11
+ date: 2015-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
15
20
  requirement: !ruby/object:Gem::Requirement
16
21
  requirements:
17
- - - ">="
22
+ - - '>='
18
23
  - !ruby/object:Gem::Version
19
24
  version: '0'
20
- type: :development
21
25
  prerelease: false
26
+ type: :development
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
22
29
  version_requirements: !ruby/object:Gem::Requirement
23
30
  requirements:
24
- - - ">="
31
+ - - '>='
25
32
  - !ruby/object:Gem::Version
26
33
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: pry
29
34
  requirement: !ruby/object:Gem::Requirement
30
35
  requirements:
31
- - - ">="
36
+ - - '>='
32
37
  - !ruby/object:Gem::Version
33
38
  version: '0'
34
- type: :development
35
39
  prerelease: false
40
+ type: :development
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
36
43
  version_requirements: !ruby/object:Gem::Requirement
37
44
  requirements:
38
- - - ">="
45
+ - - '>='
39
46
  - !ruby/object:Gem::Version
40
47
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
48
  requirement: !ruby/object:Gem::Requirement
44
49
  requirements:
45
- - - ">="
50
+ - - '>='
46
51
  - !ruby/object:Gem::Version
47
52
  version: '0'
48
- type: :development
49
53
  prerelease: false
54
+ type: :development
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
50
57
  version_requirements: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ">="
59
+ - - ~>
53
60
  - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
61
+ version: 3.0.0
57
62
  requirement: !ruby/object:Gem::Requirement
58
63
  requirements:
59
- - - "~>"
64
+ - - ~>
60
65
  - !ruby/object:Gem::Version
61
66
  version: 3.0.0
62
- type: :development
63
67
  prerelease: false
68
+ type: :development
69
+ - !ruby/object:Gem::Dependency
70
+ name: factory_girl
64
71
  version_requirements: !ruby/object:Gem::Requirement
65
72
  requirements:
66
- - - "~>"
73
+ - - '>='
67
74
  - !ruby/object:Gem::Version
68
- version: 3.0.0
69
- - !ruby/object:Gem::Dependency
70
- name: factory_girl
75
+ version: '0'
71
76
  requirement: !ruby/object:Gem::Requirement
72
77
  requirements:
73
- - - ">="
78
+ - - '>='
74
79
  - !ruby/object:Gem::Version
75
80
  version: '0'
76
- type: :development
77
81
  prerelease: false
82
+ type: :development
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
78
85
  version_requirements: !ruby/object:Gem::Requirement
79
86
  requirements:
80
- - - ">="
87
+ - - '>='
81
88
  - !ruby/object:Gem::Version
82
89
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: webmock
85
90
  requirement: !ruby/object:Gem::Requirement
86
91
  requirements:
87
- - - ">="
92
+ - - '>='
88
93
  - !ruby/object:Gem::Version
89
94
  version: '0'
90
- type: :development
91
95
  prerelease: false
96
+ type: :development
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
92
99
  version_requirements: !ruby/object:Gem::Requirement
93
100
  requirements:
94
- - - ">="
101
+ - - '>='
95
102
  - !ruby/object:Gem::Version
96
103
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop
99
104
  requirement: !ruby/object:Gem::Requirement
100
105
  requirements:
101
- - - ">="
106
+ - - '>='
102
107
  - !ruby/object:Gem::Version
103
108
  version: '0'
104
- type: :development
105
109
  prerelease: false
110
+ type: :development
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rspec
106
113
  version_requirements: !ruby/object:Gem::Requirement
107
114
  requirements:
108
- - - ">="
115
+ - - '>='
109
116
  - !ruby/object:Gem::Version
110
117
  version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-rspec
113
118
  requirement: !ruby/object:Gem::Requirement
114
119
  requirements:
115
- - - ">="
120
+ - - '>='
116
121
  - !ruby/object:Gem::Version
117
122
  version: '0'
118
- type: :development
119
123
  prerelease: false
124
+ type: :development
125
+ - !ruby/object:Gem::Dependency
126
+ name: awesome_print
120
127
  version_requirements: !ruby/object:Gem::Requirement
121
128
  requirements:
122
- - - ">="
129
+ - - '>='
123
130
  - !ruby/object:Gem::Version
124
131
  version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: awesome_print
127
132
  requirement: !ruby/object:Gem::Requirement
128
133
  requirements:
129
- - - ">="
134
+ - - '>='
130
135
  - !ruby/object:Gem::Version
131
136
  version: '0'
132
- type: :development
133
137
  prerelease: false
138
+ type: :development
139
+ - !ruby/object:Gem::Dependency
140
+ name: vcr
134
141
  version_requirements: !ruby/object:Gem::Requirement
135
142
  requirements:
136
- - - ">="
143
+ - - '>='
137
144
  - !ruby/object:Gem::Version
138
145
  version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: vcr
141
146
  requirement: !ruby/object:Gem::Requirement
142
147
  requirements:
143
- - - ">="
148
+ - - '>='
144
149
  - !ruby/object:Gem::Version
145
150
  version: '0'
146
- type: :development
147
151
  prerelease: false
152
+ type: :development
153
+ - !ruby/object:Gem::Dependency
154
+ name: simplecov
148
155
  version_requirements: !ruby/object:Gem::Requirement
149
156
  requirements:
150
- - - ">="
157
+ - - '>='
151
158
  - !ruby/object:Gem::Version
152
159
  version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: simplecov
155
160
  requirement: !ruby/object:Gem::Requirement
156
161
  requirements:
157
- - - ">="
162
+ - - '>='
158
163
  - !ruby/object:Gem::Version
159
164
  version: '0'
160
- type: :development
161
165
  prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
166
+ type: :development
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rest-client
169
- requirement: !ruby/object:Gem::Requirement
169
+ version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - "~>"
171
+ - - ~>
172
172
  - !ruby/object:Gem::Version
173
173
  version: 1.7.2
174
- type: :runtime
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
174
+ requirement: !ruby/object:Gem::Requirement
177
175
  requirements:
178
- - - "~>"
176
+ - - ~>
179
177
  - !ruby/object:Gem::Version
180
178
  version: 1.7.2
179
+ prerelease: false
180
+ type: :runtime
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: json
183
- requirement: !ruby/object:Gem::Requirement
183
+ version_requirements: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
- type: :runtime
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
188
+ requirement: !ruby/object:Gem::Requirement
191
189
  requirements:
192
- - - ">="
190
+ - - '>='
193
191
  - !ruby/object:Gem::Version
194
192
  version: '0'
193
+ prerelease: false
194
+ type: :runtime
195
195
  description: Ruby client of Pushbullet API.
196
196
  email:
197
197
  - letzdevelopment@gmail.com
@@ -206,9 +206,13 @@ files:
206
206
  - lib/pushbullet/client.rb
207
207
  - lib/pushbullet/contact.rb
208
208
  - lib/pushbullet/device.rb
209
+ - lib/pushbullet/error.rb
209
210
  - lib/pushbullet/push.rb
210
211
  - lib/pushbullet/pushable.rb
211
212
  - lib/pushbullet/resource.rb
213
+ - spec/fixtures/vcr_cassettes/channel_info.yml
214
+ - spec/fixtures/vcr_cassettes/channel_subscribe.yml
215
+ - spec/fixtures/vcr_cassettes/channel_unsubscribe.yml
212
216
  - spec/fixtures/vcr_cassettes/contacts_all.yml
213
217
  - spec/fixtures/vcr_cassettes/contacts_create.yml
214
218
  - spec/fixtures/vcr_cassettes/contacts_remove.yml
@@ -217,38 +221,47 @@ files:
217
221
  - spec/fixtures/vcr_cassettes/devices_create.yml
218
222
  - spec/fixtures/vcr_cassettes/devices_remove.yml
219
223
  - spec/fixtures/vcr_cassettes/devices_update.yml
224
+ - spec/fixtures/vcr_cassettes/get_error.yml
220
225
  - spec/fixtures/vcr_cassettes/push_create_note.yml
226
+ - spec/pushbullet/channel_spec.rb
227
+ - spec/pushbullet/client_spec.rb
221
228
  - spec/pushbullet/contact_spec.rb
222
229
  - spec/pushbullet/devices_spec.rb
223
230
  - spec/pushbullet/push_spec.rb
224
231
  - spec/pushbullet_spec.rb
232
+ - spec/shared/error_handling.rb
225
233
  - spec/spec_helper.rb
226
234
  - spec/support/factories.rb
227
235
  homepage: https://github.com/letz/ruby-pushbullet
228
236
  licenses:
229
237
  - MIT
230
238
  metadata: {}
231
- post_install_message:
239
+ post_install_message:
232
240
  rdoc_options: []
233
241
  require_paths:
234
242
  - lib
235
243
  required_ruby_version: !ruby/object:Gem::Requirement
236
244
  requirements:
237
- - - ">="
245
+ - - '>='
238
246
  - !ruby/object:Gem::Version
239
247
  version: '0'
240
248
  required_rubygems_version: !ruby/object:Gem::Requirement
241
249
  requirements:
242
- - - ">="
250
+ - - '>='
243
251
  - !ruby/object:Gem::Version
244
252
  version: '0'
245
253
  requirements: []
246
- rubyforge_project:
247
- rubygems_version: 2.2.2
248
- signing_key:
254
+ rubyforge_project:
255
+ rubygems_version: 2.4.5
256
+ signing_key:
249
257
  specification_version: 4
250
258
  summary: Ruby client of Pushbullet API.
251
259
  test_files:
260
+ - spec/pushbullet_spec.rb
261
+ - spec/spec_helper.rb
262
+ - spec/fixtures/vcr_cassettes/channel_info.yml
263
+ - spec/fixtures/vcr_cassettes/channel_subscribe.yml
264
+ - spec/fixtures/vcr_cassettes/channel_unsubscribe.yml
252
265
  - spec/fixtures/vcr_cassettes/contacts_all.yml
253
266
  - spec/fixtures/vcr_cassettes/contacts_create.yml
254
267
  - spec/fixtures/vcr_cassettes/contacts_remove.yml
@@ -257,10 +270,12 @@ test_files:
257
270
  - spec/fixtures/vcr_cassettes/devices_create.yml
258
271
  - spec/fixtures/vcr_cassettes/devices_remove.yml
259
272
  - spec/fixtures/vcr_cassettes/devices_update.yml
273
+ - spec/fixtures/vcr_cassettes/get_error.yml
260
274
  - spec/fixtures/vcr_cassettes/push_create_note.yml
275
+ - spec/pushbullet/channel_spec.rb
276
+ - spec/pushbullet/client_spec.rb
261
277
  - spec/pushbullet/contact_spec.rb
262
278
  - spec/pushbullet/devices_spec.rb
263
279
  - spec/pushbullet/push_spec.rb
264
- - spec/pushbullet_spec.rb
265
- - spec/spec_helper.rb
280
+ - spec/shared/error_handling.rb
266
281
  - spec/support/factories.rb