pushbullet 0.0.1 → 0.0.2

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: 255899012bbc30cf6fb40f2e5b1903ab0f7b4c77
4
- data.tar.gz: cc22e8ef98746a344bf444ec4f19f79757bbfa76
3
+ metadata.gz: ca5dffc1d979f6492e41a045f313d5f4b207200f
4
+ data.tar.gz: c5c6952bd980cbb7654a0bff3e9f31f4960cdcb9
5
5
  SHA512:
6
- metadata.gz: ed7723aa236d272a767a2ebd54e9f35638958fb3903f1e8ade9b69b03ab7be94003ad29ada37946a3ac1b03b546ba6cdaa4fba2ccabbe2eb1c755ccb6014ada7
7
- data.tar.gz: 7578a25b174f1601830a5602c4f54f0a47502ca9d388872606e5627e188a0ccfcbc7c63ffeca0a4051629289d6c3541c96b562712529229818cd0bf889a1cf1e
6
+ metadata.gz: 2e09b88dcb69a6fbcf4123e7cbe870c722b511fa01111272391161a5e7ec7273d4271f927aec855d00f51e8b4947c28eb5d808c8d2b8298431b592d5f3d3f325
7
+ data.tar.gz: 8d675ada929594ee2dc7a58c3a6a75bcbe30c9594ddf75d43d8e2868fc84fe359557455ce9996f4d20b96aad3ec9d1c9c3113f81efbe316b61d7b9ea5bda9145
data/README.md CHANGED
@@ -59,7 +59,7 @@ client.push_note_to('a@b.c', 'title', 'full message')
59
59
  ```
60
60
  ## Contributing
61
61
 
62
- 1. Fork it ( http://github.com/vajapravin/mvaayoo/fork )
62
+ 1. Fork it ( http://github.com/vajapravin/pushbullet/fork )
63
63
  2. Create your feature branch (`git checkout -b my-pushbullet`)
64
64
  3. Commit your changes (`git commit -am 'Add some feature'`)
65
65
  4. Push to the branch (`git push origin my-pushbullet`)
@@ -1,4 +1,4 @@
1
- require 'pushbullet/client'
1
+ require 'pushbullet/client.rb'
2
2
 
3
3
  module Pushbullet
4
4
  end
@@ -0,0 +1,36 @@
1
+ module Pushbullet
2
+ module API
3
+ def devices
4
+ get('/api/devices')
5
+ end
6
+
7
+ def push_note(device_id, title, body)
8
+ push :note, device_id, title: title, body: body
9
+ end
10
+
11
+ def push_link(device_id, title, url)
12
+ push :link, device_id, title: title, url: url
13
+ end
14
+
15
+ def push_address(device_id, title, address)
16
+ push :address, device_id, title: title, address: address
17
+ end
18
+
19
+ def push_list(device_id, title, items)
20
+ push :list, device_id, title: title, items: items
21
+ end
22
+
23
+ def push_file(device_id, file_path)
24
+ mime_type = MIME::Types.type_for(file_path).first.to_s
25
+ io = Faraday::UploadIO.new(file_path, mime_type)
26
+
27
+ push :file, device_id, file: io
28
+ end
29
+
30
+ private
31
+
32
+ def push(type, device_id, payload)
33
+ post '/api/pushes', payload.merge(device_id: device_id, type: type)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ require 'faraday'
2
+ require 'mime/types'
3
+ require 'pushbullet/request.rb'
4
+ require 'pushbullet/api.rb'
5
+ require 'pushbullet/secret_api.rb'
6
+
7
+ module Pushbullet
8
+ class Client
9
+ include Request
10
+ include API
11
+ include SecretAPI
12
+
13
+ attr_reader :api_key
14
+
15
+ def initialize(api_key)
16
+ @api_key = api_key
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ require 'pushbullet/http_exception.rb'
2
+ require 'pushbullet/parse_json.rb'
3
+
4
+ module Pushbullet
5
+ module Connection
6
+ private
7
+ def connection
8
+ @connection ||= Faraday.new(url: 'https://api.pushbullet.com/') do |f|
9
+ f.request :basic_auth, api_key, ''
10
+ f.request :multipart
11
+ f.request :url_encoded
12
+
13
+ f.response :logger
14
+
15
+ f.use Pushbullet::ParseJSON
16
+ f.use Pushbullet::HttpException
17
+
18
+ f.adapter :net_http
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,31 @@
1
+ require 'faraday'
2
+
3
+ module Pushbullet
4
+ class BadRequest < StandardError; end
5
+ class Unauthorized < StandardError; end
6
+ class RequestFailed < StandardError; end
7
+ class Forbidden < StandardError; end
8
+ class NotFound < StandardError; end
9
+ class ServerError < StandardError; end
10
+
11
+ class HttpException < Faraday::Response::Middleware
12
+ def call(env)
13
+ @app.call(env).on_complete do |response|
14
+ case response[:status].to_i
15
+ when 400
16
+ raise Pushbullet::BadRequest, 'Often missing a required parameter'
17
+ when 401
18
+ raise Pushbullet::Unauthorized, 'No valid API key provided'
19
+ when 402
20
+ raise Pushbullet::RequestFailed, 'Parameters were valid but the request failed'
21
+ when 403
22
+ raise Pushbullet::Forbidden, 'The API key is not valid for that request'
23
+ when 404
24
+ raise Pushbullet::NotFound, 'The requested item doesn\'t exist'
25
+ when 500..505
26
+ raise Pushbullet::ServerError, 'Something went wrong on PushBullet\'s side'
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,9 @@
1
+ require 'json'
2
+
3
+ module Pushbullet
4
+ class ParseJSON < Faraday::Response::Middleware
5
+ def on_complete(env)
6
+ env[:body] = JSON.parse(env[:body])
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,24 @@
1
+ require 'pushbullet/connection.rb'
2
+
3
+ module Pushbullet
4
+ module Request
5
+ include Connection
6
+
7
+ def get(path)
8
+ request(:get, path)
9
+ end
10
+
11
+ def post(path, payload)
12
+ request(:post, path, payload)
13
+ end
14
+
15
+ private
16
+
17
+ def request(method, path, payload = {})
18
+ response = connection.send(method) {|request|
19
+ request.url path
20
+ request.body = payload if method == :post
21
+ }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ module Pushbullet
2
+ module SecretAPI
3
+ def contacts
4
+ get('/v2/contacts')
5
+ end
6
+
7
+ def push_note_to(target_email, title, body)
8
+ push_to :note, target_email, title: title, body: body
9
+ end
10
+
11
+ def push_link_to(target_email, title, url)
12
+ push_to :link, target_email, title: title, url: url
13
+ end
14
+
15
+ def push_address_to(target_email, title, address)
16
+ push_to :address, target_email, title: title, address: address
17
+ end
18
+
19
+ # FIXME Now, can send *only* one item
20
+ def push_list_to(target_email, title, items)
21
+ push_to :list, target_email, title: title, items: items
22
+ end
23
+
24
+ private
25
+
26
+ def push_to(type, target_email, payload)
27
+ post '/api/pushes', payload.merge(target_email: target_email, type: type)
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Pushbullet
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushbullet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - vajapravin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-10 00:00:00.000000000 Z
11
+ date: 2014-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mime-types
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description: PushBullet's API enables developers to push to devices that have installed
@@ -76,12 +76,19 @@ executables: []
76
76
  extensions: []
77
77
  extra_rdoc_files: []
78
78
  files:
79
- - .gitignore
79
+ - ".gitignore"
80
80
  - Gemfile
81
81
  - LICENSE.txt
82
82
  - README.md
83
83
  - Rakefile
84
84
  - lib/pushbullet.rb
85
+ - lib/pushbullet/api.rb
86
+ - lib/pushbullet/client.rb
87
+ - lib/pushbullet/connection.rb
88
+ - lib/pushbullet/http_exception.rb
89
+ - lib/pushbullet/parse_json.rb
90
+ - lib/pushbullet/request.rb
91
+ - lib/pushbullet/secret_api.rb
85
92
  - lib/pushbullet/version.rb
86
93
  - pushbullet.gemspec
87
94
  homepage: https://github.com/vajapravin/pushbullet
@@ -94,12 +101,12 @@ require_paths:
94
101
  - lib
95
102
  required_ruby_version: !ruby/object:Gem::Requirement
96
103
  requirements:
97
- - - '>='
104
+ - - ">="
98
105
  - !ruby/object:Gem::Version
99
106
  version: '0'
100
107
  required_rubygems_version: !ruby/object:Gem::Requirement
101
108
  requirements:
102
- - - '>='
109
+ - - ">="
103
110
  - !ruby/object:Gem::Version
104
111
  version: '0'
105
112
  requirements: []