lorkhan 1.0.0 → 2.0.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
- SHA1:
3
- metadata.gz: c9d9e98e45358c0cd329ab15535946be86a84a2b
4
- data.tar.gz: ad11e57d08eb593634f3f741a0d532a57673ab86
2
+ SHA256:
3
+ metadata.gz: 58754e7965fd554a049827f95fab030f74b1c6da0214516ece266f004dc0b7bb
4
+ data.tar.gz: 9a3a23a0223246951dbb8533c9d355a496534e712bc116867ab539637f98407d
5
5
  SHA512:
6
- metadata.gz: ff895526c5d9d028eedb0a6bc0c14bd3e864ed6bed44b11ae25ec92328c7e7896710ab670dccbac6b393e9e471d57ee492622d2b1a715cd03ebbb6d50634b0c1
7
- data.tar.gz: e06ac2239cb27cbd11966f1566e721a1340d5b3521484432e4dfeb1593e2363de2cbeb2fc4efc93c1f5fabd33fe6b091bede2dc0d8deaab7cabb028dd9d1c0d9
6
+ metadata.gz: 7eae2fec79cc2c09f1c922d1598477179f6d138a2e92e29417cfc76e3cbe4e37e1cf101cfff4c49a873baa5b8f17e25a04749327ee15bccece932ebd59dc8d8c
7
+ data.tar.gz: 8645ce2aa8fbd1d7bf96ab13745bd10cf4cf1dd27d618ce66740c607fd06801e4d12e7f8ccd60b142943f9b0ed5c0fa31592e8875ca5473d800f2a26e8a11cc1
data/.gitignore ADDED
@@ -0,0 +1,52 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ ## Specific to RubyMotion:
17
+ .dat*
18
+ .repl_history
19
+ build/
20
+ *.bridgesupport
21
+ build-iPhoneOS/
22
+ build-iPhoneSimulator/
23
+
24
+ ## Specific to RubyMotion (use of CocoaPods):
25
+ #
26
+ # We recommend against adding the Pods directory to your .gitignore. However
27
+ # you should judge for yourself, the pros and cons are mentioned at:
28
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
29
+ #
30
+ # vendor/Pods/
31
+
32
+ ## Documentation cache and generated files:
33
+ /.yardoc/
34
+ /_yardoc/
35
+ /doc/
36
+ /rdoc/
37
+
38
+ ## Environment normalization:
39
+ /.bundle/
40
+ /vendor/bundle
41
+ /lib/bundler/man/
42
+
43
+ # for a library or gem, you might want to ignore these files since the code is
44
+ # intended to run in multiple environments; otherwise, check them in:
45
+ # Gemfile.lock
46
+ # .ruby-version
47
+ # .ruby-gemset
48
+
49
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
50
+ .rvmrc
51
+
52
+ /Gemfile.lock
data/.rubocop.yml CHANGED
@@ -1,28 +1,60 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.4
2
+ TargetRubyVersion: 2.5
3
3
  Exclude:
4
- - spec/**/*
4
+ - Rakefile
5
5
 
6
6
  Metrics/AbcSize:
7
7
  Max: 30
8
8
 
9
9
  Metrics/LineLength:
10
- Max: 120
10
+ Max: 160
11
11
 
12
12
  Metrics/MethodLength:
13
- Max: 16
13
+ Enabled: false
14
14
 
15
- Metrics/CyclomaticComplexity:
15
+ Metrics/ParameterLists:
16
16
  Max: 10
17
17
 
18
- Metrics/PerceivedComplexity:
18
+ Metrics/CyclomaticComplexity:
19
19
  Max: 10
20
20
 
21
- Style/Documentation:
22
- Enabled: false
21
+ Metrics/BlockLength:
22
+ Enabled: true
23
+ Exclude:
24
+ - spec/**/*
25
+
26
+ DotPosition:
27
+ EnforcedStyle: leading
28
+
29
+ StringLiterals:
30
+ EnforcedStyle: single_quotes
31
+
32
+ Layout/AlignParameters:
33
+ EnforcedStyle: with_fixed_indentation
34
+
35
+ Layout/MultilineOperationIndentation:
36
+ EnforcedStyle: indented
37
+
38
+ Layout/MultilineMethodCallIndentation:
39
+ EnforcedStyle: indented
40
+
41
+ Style/AndOr:
42
+ EnforcedStyle: conditionals
23
43
 
24
44
  Style/ClassAndModuleChildren:
25
45
  Enabled: false
26
46
 
47
+ Style/ConditionalAssignment:
48
+ Enabled: false
49
+
50
+ Style/GuardClause:
51
+ Enabled: false
52
+
53
+ Style/RaiseArgs:
54
+ Enabled: false
55
+
27
56
  Style/FrozenStringLiteralComment:
28
57
  Enabled: false
58
+
59
+ Style/IfUnlessModifier:
60
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 2.0.0
2
+
3
+ - Support for changes required by iOS 13
4
+
1
5
  ### 0.0.3
2
6
 
3
7
  - Sending a `content_available` push, now excludes the `alert`, `badge`, `sound` keys.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  ## Lorkhan
2
2
 
3
+ [![CircleCI](https://circleci.com/gh/skylarsch/lorkhan/tree/master.svg?style=svg)](https://circleci.com/gh/skylarsch/lorkhan/tree/master) [![Code Climate](https://lima.codeclimate.com/github/skylarsch/lorkhan/badges/gpa.svg)](https://lima.codeclimate.com/github/skylarsch/lorkhan) [![Issue Count](https://lima.codeclimate.com/github/skylarsch/lorkhan/badges/issue_count.svg)](https://lima.codeclimate.com/github/skylarsch/lorkhan)
4
+
3
5
  Apple Push Notification Services client using the HTTP/2 API and Provider Authentication Tokens
4
6
 
5
7
  ### Getting Provider Authentication Tokens
data/circle.yml ADDED
@@ -0,0 +1,6 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.3.3
4
+ test:
5
+ override:
6
+ - bundle exec rspec --tag ~env
@@ -59,6 +59,7 @@ module Lorkhan
59
59
  headers['authorization'] = "bearer #{auth_token}"
60
60
  raw_response = @client.call(:post, request.path, body: request.body, headers: headers, timeout: 5)
61
61
  raise Errors::TimeoutError if raw_response.nil?
62
+
62
63
  response = Response.new(raw_response)
63
64
  handle_http_error(response) unless response.ok?
64
65
  response
@@ -89,6 +90,7 @@ module Lorkhan
89
90
 
90
91
  def check_token_should_refresh
91
92
  return if @refresh_token_at.nil?
93
+
92
94
  refresh_token if Time.now.to_i >= @refresh_token_at
93
95
  end
94
96
  end
@@ -47,9 +47,9 @@ module Lorkhan
47
47
  ##
48
48
  PRIORITY_DELIVER_BACKGROUND = 5
49
49
 
50
- attr_reader :token, :apns_id
51
- attr_accessor :custom_payload, :alert, :badge, :sound, :category, :content_available, :url_args, :mutable_content
52
- attr_accessor :expiration, :priority, :topic, :collapse_id
50
+ attr_reader :token, :apns_id, :priority, :alert, :content_available
51
+ attr_accessor :custom_payload, :badge, :sound, :category, :url_args, :mutable_content
52
+ attr_accessor :expiration, :topic, :collapse_id
53
53
 
54
54
  ##
55
55
  # Create a new notification
@@ -57,16 +57,39 @@ module Lorkhan
57
57
  # token: The Device token that the notification will be delivered to
58
58
  ##
59
59
  def initialize(token)
60
- @token = token
61
- @apns_id = SecureRandom.uuid
60
+ @token = token
61
+ @apns_id = SecureRandom.uuid
62
62
  @expiration = 0
63
- @priority = PRIORITY_DELIVER_IMMEDIATELY
63
+ @content_available = false
64
+ @priority = PRIORITY_DELIVER_IMMEDIATELY
64
65
  end
65
66
 
66
67
  def body
67
68
  JSON.dump(to_h).force_encoding(Encoding::BINARY)
68
69
  end
69
70
 
71
+ def push_type
72
+ return 'background' if content_available == true
73
+
74
+ 'alert'
75
+ end
76
+
77
+ def alert=(alert)
78
+ @alert = alert
79
+ if @alert
80
+ @content_available = false
81
+ @priority = PRIORITY_DELIVER_IMMEDIATELY
82
+ end
83
+ end
84
+
85
+ def content_available=(content_available)
86
+ @content_available = content_available
87
+ if content_available == true
88
+ @alert = nil
89
+ @priority = PRIORITY_DELIVER_BACKGROUND
90
+ end
91
+ end
92
+
70
93
  def to_h
71
94
  {}.tap do |root|
72
95
  root[:aps] = {}.tap do |aps|
@@ -21,6 +21,7 @@ module Lorkhan
21
21
  head['apns-priority'] = notif.priority.to_s if notif.priority
22
22
  head['apns-topic'] = notif.topic if notif.topic
23
23
  head['apns-collapse-id'] = notif.collapse_id if notif.collapse_id
24
+ head['apns-push-type'] = notif.push_type
24
25
  end
25
26
  end
26
27
  end
@@ -1,3 +1,3 @@
1
1
  module Lorkhan
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
data/lorkhan.gemspec CHANGED
@@ -1,5 +1,4 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'lorkhan/version'
5
4
 
@@ -7,23 +6,24 @@ Gem::Specification.new do |spec|
7
6
  spec.name = 'lorkhan'
8
7
  spec.version = Lorkhan::VERSION
9
8
  spec.licenses = ['MIT']
10
- spec.authors = ['Skylar Schipper']
11
- spec.email = ['me@skylarsch.com']
9
+ spec.authors = ['Maddie Schipper']
10
+ spec.email = ['me@maddiesch.com']
12
11
  spec.summary = 'APNS HTTP/2 Client'
13
- spec.homepage = 'http://github.com/skylarsch/lorkhan'
14
- spec.required_ruby_version = '>=2.3.0'
12
+ spec.homepage = 'http://github.com/maddiesch/lorkhan'
13
+
14
+ spec.required_ruby_version = '>= 2.5.0'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
17
  spec.bindir = 'exe'
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = %w(lib)
19
+ spec.require_paths = %w[lib]
20
20
 
21
+ spec.add_dependency 'connection_pool', '>= 2.2'
22
+ spec.add_dependency 'jwt', '>= 2.2.1'
21
23
  spec.add_dependency 'net-http2', '>= 0.14.1', '< 2'
22
- spec.add_dependency 'connection_pool', '>= 2.0'
23
- spec.add_dependency 'jwt', '>= 1.5.6'
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.3'
26
- spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rspec', '~> 3.5'
25
+ spec.add_development_dependency 'bundler', '~> 2.0'
28
26
  spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'rspec', '~> 3.5'
29
29
  end
metadata CHANGED
@@ -1,134 +1,135 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lorkhan
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Skylar Schipper
7
+ - Maddie Schipper
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-08 00:00:00.000000000 Z
11
+ date: 2019-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: net-http2
14
+ name: connection_pool
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.14.1
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '2'
19
+ version: '2.2'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
- version: 0.14.1
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '2'
26
+ version: '2.2'
33
27
  - !ruby/object:Gem::Dependency
34
- name: connection_pool
28
+ name: jwt
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
- version: '2.0'
33
+ version: 2.2.1
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: '2.0'
40
+ version: 2.2.1
47
41
  - !ruby/object:Gem::Dependency
48
- name: jwt
42
+ name: net-http2
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
45
  - - ">="
52
46
  - !ruby/object:Gem::Version
53
- version: 1.5.6
47
+ version: 0.14.1
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '2'
54
51
  type: :runtime
55
52
  prerelease: false
56
53
  version_requirements: !ruby/object:Gem::Requirement
57
54
  requirements:
58
55
  - - ">="
59
56
  - !ruby/object:Gem::Version
60
- version: 1.5.6
57
+ version: 0.14.1
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '2'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: bundler
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.3'
67
+ version: '2.0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '1.3'
74
+ version: '2.0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: rake
76
+ name: pry
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '10.0'
81
+ version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '10.0'
88
+ version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: rspec
90
+ name: rake
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '3.5'
95
+ version: '10.0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '3.5'
102
+ version: '10.0'
103
103
  - !ruby/object:Gem::Dependency
104
- name: pry
104
+ name: rspec
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: '3.5'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">="
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0'
116
+ version: '3.5'
117
117
  description:
118
118
  email:
119
- - me@skylarsch.com
119
+ - me@maddiesch.com
120
120
  executables: []
121
121
  extensions: []
122
122
  extra_rdoc_files: []
123
123
  files:
124
+ - ".gitignore"
124
125
  - ".rspec"
125
126
  - ".rubocop.yml"
126
127
  - CHANGELOG.md
127
128
  - Gemfile
128
- - Gemfile.lock
129
129
  - README.md
130
130
  - Rakefile
131
131
  - bin/console
132
+ - circle.yml
132
133
  - lib/lorkhan.rb
133
134
  - lib/lorkhan/connection.rb
134
135
  - lib/lorkhan/connection_pool.rb
@@ -144,7 +145,7 @@ files:
144
145
  - lib/lorkhan/response.rb
145
146
  - lib/lorkhan/version.rb
146
147
  - lorkhan.gemspec
147
- homepage: http://github.com/skylarsch/lorkhan
148
+ homepage: http://github.com/maddiesch/lorkhan
148
149
  licenses:
149
150
  - MIT
150
151
  metadata: {}
@@ -156,15 +157,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
157
  requirements:
157
158
  - - ">="
158
159
  - !ruby/object:Gem::Version
159
- version: 2.3.0
160
+ version: 2.5.0
160
161
  required_rubygems_version: !ruby/object:Gem::Requirement
161
162
  requirements:
162
163
  - - ">="
163
164
  - !ruby/object:Gem::Version
164
165
  version: '0'
165
166
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.5.2
167
+ rubygems_version: 3.0.3
168
168
  signing_key:
169
169
  specification_version: 4
170
170
  summary: APNS HTTP/2 Client
data/Gemfile.lock DELETED
@@ -1,51 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- lorkhan (1.0.0)
5
- connection_pool (>= 2.0)
6
- jwt (>= 1.5.6)
7
- net-http2 (>= 0.14.1, < 2)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- coderay (1.1.1)
13
- connection_pool (2.2.1)
14
- diff-lcs (1.3)
15
- http-2 (0.8.3)
16
- jwt (1.5.6)
17
- method_source (0.8.2)
18
- net-http2 (0.14.1)
19
- http-2 (~> 0.8.2)
20
- pry (0.10.4)
21
- coderay (~> 1.1.0)
22
- method_source (~> 0.8.1)
23
- slop (~> 3.4)
24
- rake (10.5.0)
25
- rspec (3.5.0)
26
- rspec-core (~> 3.5.0)
27
- rspec-expectations (~> 3.5.0)
28
- rspec-mocks (~> 3.5.0)
29
- rspec-core (3.5.4)
30
- rspec-support (~> 3.5.0)
31
- rspec-expectations (3.5.0)
32
- diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.5.0)
34
- rspec-mocks (3.5.0)
35
- diff-lcs (>= 1.2.0, < 2.0)
36
- rspec-support (~> 3.5.0)
37
- rspec-support (3.5.0)
38
- slop (3.6.0)
39
-
40
- PLATFORMS
41
- ruby
42
-
43
- DEPENDENCIES
44
- bundler (~> 1.3)
45
- lorkhan!
46
- pry
47
- rake (~> 10.0)
48
- rspec (~> 3.5)
49
-
50
- BUNDLED WITH
51
- 1.13.6