dirigible 1.0.4 → 1.1.0

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: 99130934f252d4982dc4366ab76d6f10026a6a43
4
- data.tar.gz: 1c0fcb0e41f6af8ed94d379a59ba42313ae76cba
3
+ metadata.gz: b36b3346e8c2514e6726e129f10a6d2525afd203
4
+ data.tar.gz: fc4b117b7004ac49010feb6c8e1896138fea24e9
5
5
  SHA512:
6
- metadata.gz: c75757b7c1eced8dd4f3955ca5b74bd1dd4a4472bc4b41aa820689facd586e85c34298355d69e5711e7c5db01854b6748be22300887875273a9a6a314e501bdd
7
- data.tar.gz: 8c8ff094ae1fca659fd51289d9e71335f18a45df1dcb4e14f7a386dc9132ac3d3f9d875cea02a3ccd0904a78c2443597d2d2a38e281cb5db266649a8dda97119
6
+ metadata.gz: 8a2ffb0992991d31abc166565cbab34c7a57a848c958248a453e1b9deed080e8833f0b33c51bfa384a3265dac4dc0e5b41feb92caedbe165c7da230845f7b95e
7
+ data.tar.gz: 4f66cd85d0e7743b175c94e9419af128bf949e72bb4f98cec083d1f9f3ced2f73b98370f2cdcb60ea9ddfbae2c0fabf4da5d229a447a77be1d17be4756dff65c
data/dirigible.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  # Runtime dependencies
22
- spec.add_dependency "faraday", "~> 0.8"
22
+ spec.add_dependency "faraday", "~> 0.8.0"
23
23
  spec.add_dependency "faraday_middleware", "~> 0.9"
24
24
  spec.add_dependency "hashie", "~> 2.0"
25
25
  spec.add_dependency "multi_json", "~> 1.8"
@@ -37,9 +37,13 @@ class Dirigible::DeviceInformation
37
37
  # @example Example request:
38
38
  # Dirigible::DeviceInformation.list_device_tokens
39
39
  #
40
+ # @example Request next page:
41
+ # device_tokens = Dirigible::DeviceInformation.list_device_tokens
42
+ # more_device_tokens = device_tokens.next_page
43
+ #
40
44
  # @see http://docs.urbanairship.com/reference/api/v3/device_information.html#device-listing
41
- def self.list_device_tokens
42
- Dirigible.get('/device_tokens')
45
+ def self.list_device_tokens(options = {})
46
+ List.new(Dirigible.get('/device_tokens', params))
43
47
  end
44
48
 
45
49
  # Fetch Android APIDs registered to this application and
@@ -48,9 +52,13 @@ class Dirigible::DeviceInformation
48
52
  # @example Example request:
49
53
  # Dirigible::DeviceInformation.list_apids
50
54
  #
55
+ # @example Request next page:
56
+ # apids = Dirigible::DeviceInformation.list_apids
57
+ # more_apids = apids.next_page
58
+ #
51
59
  # @see http://docs.urbanairship.com/reference/api/v3/device_information.html#device-listing
52
- def self.list_apids
53
- Dirigible.get('/apids')
60
+ def self.list_apids(options = {})
61
+ List.new(Dirigible.get('/apids', params))
54
62
  end
55
63
 
56
64
  # Fetch BlackBerry PINs registered to this application and
@@ -59,9 +67,13 @@ class Dirigible::DeviceInformation
59
67
  # @example Example request:
60
68
  # Dirigible::DeviceInformation.list_device_pins
61
69
  #
70
+ # @example Request next page:
71
+ # device_pins = Dirigible::DeviceInformation.list_device_pins
72
+ # more_device_pins = device_pins.next_page
73
+ #
62
74
  # @see http://docs.urbanairship.com/reference/api/v3/device_information.html#device-listing
63
- def self.list_device_pins
64
- Dirigible.get('/device_pins')
75
+ def self.list_device_pins(options = {})
76
+ List.new(Dirigible.get('/device_pins', params))
65
77
  end
66
78
 
67
79
  # Fetch device tokens that can't recieve messages because
@@ -74,4 +86,25 @@ class Dirigible::DeviceInformation
74
86
  def self.device_token_feedback(since)
75
87
  Dirigible.get("/device_tokens/feedback", { since: since })
76
88
  end
89
+
90
+ class List
91
+ def initialize(response)
92
+ @response = response
93
+ end
94
+
95
+ def [](value)
96
+ @response[value]
97
+ end
98
+
99
+ # Fetch the next page for this device listing. Returns
100
+ # nil if next_page is nil.
101
+ def next_page(params = {})
102
+ return nil if @response[:next_page].nil?
103
+ uri = URI.parse(@response[:next_page])
104
+ path = "/#{uri.path.gsub(/\/api|\//, '')}"
105
+ # Shew! Need to simplify this!
106
+ params = (CGI.parse(uri.query).map{ |k,v| { k => v[0] } }.reduce({}) { |h,pairs| pairs.each { |k,v| (h[k.to_sym] = v) }; h }).merge!(params)
107
+ List.new(Dirigible.get(path, params))
108
+ end
109
+ end
77
110
  end
@@ -44,8 +44,8 @@ class Dirigible::DeviceRegistration
44
44
  # })
45
45
  #
46
46
  # @see http://docs.urbanairship.com/reference/api/v3/registration.html#apid-registration
47
- def self.register_apid(id, params)
48
- Dirigible.put("/apids/#{id}", params)
47
+ def self.register_apid(id, options = {})
48
+ Dirigible.put("/apids/#{id}", options)
49
49
  end
50
50
 
51
51
  # Register this PIN with this application. This will mark
@@ -9,7 +9,7 @@ class Dirigible::Push
9
9
  # @example Example request:
10
10
  # Dirigible::Push.create({
11
11
  # audience: { device_token: "998BAD77A8347EFE7920F5367A4811C4385D526AE42C598A629A73B94EEDBAC8" },
12
- # notification: { alert: "Hello"! },
12
+ # notification: { alert: "Hello!" },
13
13
  # device_types: "all"
14
14
  # })
15
15
  #
@@ -38,7 +38,7 @@ module Dirigible
38
38
 
39
39
  Utils.handle_api_error(response) unless (200..399).include?(response.status)
40
40
 
41
- Utils.parse_json(response.body) unless response.body == ''
41
+ Utils.parse_message(response)
42
42
  end
43
43
  end
44
44
  end
@@ -2,7 +2,7 @@ module Dirigible
2
2
  # @private
3
3
  module Utils
4
4
  def self.handle_api_error(response)
5
- message = parse_json(response.body)
5
+ message = parse_message(response)
6
6
 
7
7
  klass = case response.status
8
8
  when 400 then BadRequest
@@ -19,5 +19,13 @@ module Dirigible
19
19
  def self.parse_json(json)
20
20
  MultiJson.load(json, symbolize_keys: true)
21
21
  end
22
+
23
+ def self.parse_message(response)
24
+ begin
25
+ parse_json(response.body)
26
+ rescue
27
+ response.body
28
+ end
29
+ end
22
30
  end
23
31
  end
@@ -1,3 +1,3 @@
1
1
  module Dirigible
2
- VERSION = "1.0.4"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dirigible
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-20 00:00:00.000000000 Z
11
+ date: 2014-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.8'
19
+ version: 0.8.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.8'
26
+ version: 0.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday_middleware
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.9'
34
34
  type: :runtime
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.9'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: hashie
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.0'
48
48
  type: :runtime
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: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: multi_json
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.8'
62
62
  type: :runtime
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: '1.8'
69
69
  description: An Urban Airship v3 API wrapper written in Ruby
@@ -73,7 +73,7 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - .gitignore
76
+ - ".gitignore"
77
77
  - Gemfile
78
78
  - LICENSE.txt
79
79
  - README.md
@@ -106,17 +106,17 @@ require_paths:
106
106
  - lib
107
107
  required_ruby_version: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '>='
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - '>='
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
118
  rubyforge_project:
119
- rubygems_version: 2.0.3
119
+ rubygems_version: 2.2.0
120
120
  signing_key:
121
121
  specification_version: 4
122
122
  summary: Urban Airship REST API client library for Ruby