lorkhan 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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