passninja-ruby 0.2.0 → 0.4.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
  SHA256:
3
- metadata.gz: b62e7fa7e35dc0c193f7bc019713f297884cd33939a17015f69cca3a567354c7
4
- data.tar.gz: 68512e3890cd1e63b3d7a62061e9c859c1ce606ce4bd6f01a2ac93d4e008e54d
3
+ metadata.gz: 4962179d3cf5800b4d43195dbcf7926c0770735985225f6ce0b141e84eeb189b
4
+ data.tar.gz: b4bb48ff6bbc3549988863a0f683376ea5961a18bbac44d0672fdfa11cecefe4
5
5
  SHA512:
6
- metadata.gz: 9124fd27d4df8ff973a7a29a3c097a70db4d0fe2a3e92654126c51911b3ac0744de699e5dbcd29cceaf07e16faa95d987f0ed31279a6680b7cc91ea5b4eff625
7
- data.tar.gz: 93d91c67ce3744c0c0032f634722b11faa26d37dc61284858b93488a6ae6537a237540e125cc9ea0ed91d9c0c26e5df6d770d811899e3fb90ff3d667fecf2ae7
6
+ metadata.gz: e872fa2fa6242063c094c5a30eb79b848ec83fb65b1e890b5858e3e5976d9eabd0f79481f18e20b9e0ad0ae563a7929c1abd368131f0578580eba6f83dac702a
7
+ data.tar.gz: 0d93f4a868cb98268cbd390672b14b8ed61e64006f8c0218c721af959edd0a88ffee69dbcbd678de96c657cee56a56a85697f39ca325062245aa0945860aa15e
@@ -1,3 +1,3 @@
1
1
  module Passninja
2
- VERSION = "0.2.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/passninja.rb CHANGED
@@ -3,34 +3,43 @@ require "json"
3
3
 
4
4
  module PassNinja
5
5
  class Client
6
- def initialize(account_id, api_key)
6
+ def initialize(account_id, api_key, host = 'https://api.passninja.com')
7
7
  @account_id = account_id
8
8
  @api_key = api_key
9
+ @host = host
10
+ url = URI.parse(host)
11
+ if url.instance_of? URI::HTTPS
12
+ @use_ssl = true
13
+ else
14
+ @use_ssl = false
15
+ end
9
16
  end
10
17
 
11
18
  def pass_templates
12
- PassTemplates.new(@account_id, @api_key)
19
+ PassTemplates.new(@account_id, @api_key, @host, @use_ssl)
13
20
  end
14
21
 
15
22
  def passes
16
- Passes.new(@account_id, @api_key)
23
+ Passes.new(@account_id, @api_key, @host, @use_ssl)
17
24
  end
18
25
  end
19
26
 
20
27
  class PassTemplates
21
- def initialize(account_id, api_key)
28
+ def initialize(account_id, api_key, host, use_ssl)
22
29
  @account_id = account_id
23
30
  @api_key = api_key
31
+ @host = host
32
+ @use_ssl = use_ssl
24
33
  end
25
34
 
26
35
  def find(pass_template_key)
27
- uri = URI("https://api.passninja.com/v1/pass_templates/#{pass_template_key}")
36
+ uri = URI("#{@host}/v1/pass_templates/#{pass_template_key}")
28
37
  puts uri
29
38
  request = Net::HTTP::Get.new(uri)
30
39
  request["X-API-KEY"] = @api_key
31
40
  request["X-ACCOUNT-ID"] = @account_id
32
41
 
33
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
42
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
34
43
  http.request(request)
35
44
  end
36
45
 
@@ -43,22 +52,24 @@ module PassNinja
43
52
  end
44
53
 
45
54
  class Passes
46
- def initialize(account_id, api_key)
55
+ def initialize(account_id, api_key, host, use_ssl)
47
56
  @account_id = account_id
48
57
  @api_key = api_key
58
+ @host = host
59
+ @use_ssl = use_ssl
49
60
  end
50
61
 
51
62
  def create(pass_type, pass_data)
52
63
  required_fields = fetch_required_keys_set(pass_type)
53
64
  validate_fields(pass_data, required_fields)
54
- uri = URI("https://api.passninja.com/v1/passes")
65
+ uri = URI("#{@host}/v1/passes")
55
66
  request = Net::HTTP::Post.new(uri)
56
67
  request["X-API-KEY"] = @api_key
57
68
  request["X-ACCOUNT-ID"] = @account_id
58
69
  request.content_type = "application/json"
59
- request.body = { passType: pass_type, pass: pass_data }.to_json
70
+ request.body = { passTemplate: pass_type, pass: pass_data }.to_json
60
71
 
61
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
72
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
62
73
  http.request(request)
63
74
  end
64
75
 
@@ -70,12 +81,12 @@ module PassNinja
70
81
  end
71
82
 
72
83
  def find(pass_type)
73
- uri = URI("https://api.passninja.com/v1/passes/#{pass_type}")
84
+ uri = URI("#{@host}/v1/passes/#{pass_type}")
74
85
  request = Net::HTTP::Get.new(uri)
75
86
  request["X-API-KEY"] = @api_key
76
87
  request["X-ACCOUNT-ID"] = @account_id
77
88
 
78
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
89
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
79
90
  http.request(request)
80
91
  end
81
92
 
@@ -87,12 +98,12 @@ module PassNinja
87
98
  end
88
99
 
89
100
  def get(pass_type, serial_number)
90
- uri = URI("https://api.passninja.com/v1/passes/#{pass_type}/#{serial_number}")
101
+ uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
91
102
  request = Net::HTTP::Get.new(uri)
92
103
  request["X-API-KEY"] = @api_key
93
104
  request["X-ACCOUNT-ID"] = @account_id
94
105
 
95
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
106
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
96
107
  http.request(request)
97
108
  end
98
109
 
@@ -104,14 +115,14 @@ module PassNinja
104
115
  end
105
116
 
106
117
  def decrypt(pass_type, payload)
107
- uri = URI("https://api.passninja.com/v1/passes/decrypt")
118
+ uri = URI("#{@host}/v1/passes/decrypt")
108
119
  request = Net::HTTP::Post.new(uri)
109
120
  request["X-API-KEY"] = @api_key
110
121
  request["X-ACCOUNT-ID"] = @account_id
111
122
  request.content_type = "application/json"
112
- request.body = { passType: pass_type, payload: payload }.to_json
123
+ request.body = { passTemplate: pass_type, payload: payload }.to_json
113
124
 
114
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
125
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
115
126
  http.request(request)
116
127
  end
117
128
 
@@ -125,14 +136,33 @@ module PassNinja
125
136
  def update(pass_type, serial_number, pass_data)
126
137
  required_fields = fetch_required_keys_set(pass_type)
127
138
  validate_fields(pass_data, required_fields)
128
- uri = URI("https://api.passninja.com/v1/passes/#{pass_type}/#{serial_number}")
139
+ uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
129
140
  request = Net::HTTP::Put.new(uri)
130
141
  request["X-API-KEY"] = @api_key
131
142
  request["X-ACCOUNT-ID"] = @account_id
132
143
  request.content_type = "application/json"
133
- request.body = { passData: pass_data }.to_json
144
+ request.body = { pass: pass_data }.to_json
145
+
146
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
147
+ http.request(request)
148
+ end
149
+
150
+ begin
151
+ JSON.parse(response.body)
152
+ rescue JSON::ParserError
153
+ { error: "Unable to parse response" }
154
+ end
155
+ end
156
+
157
+ def patch(pass_type, serial_number, pass_data)
158
+ uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
159
+ request = Net::HTTP::Patch.new(uri)
160
+ request["X-API-KEY"] = @api_key
161
+ request["X-ACCOUNT-ID"] = @account_id
162
+ request.content_type = "application/json"
163
+ request.body = { pass: pass_data }.to_json
134
164
 
135
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
165
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
136
166
  http.request(request)
137
167
  end
138
168
 
@@ -144,12 +174,12 @@ module PassNinja
144
174
  end
145
175
 
146
176
  def delete(pass_type, serial_number)
147
- uri = URI("https://api.passninja.com/v1/passes/#{pass_type}/#{serial_number}")
177
+ uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
148
178
  request = Net::HTTP::Delete.new(uri)
149
179
  request["X-API-KEY"] = @api_key
150
180
  request["X-ACCOUNT-ID"] = @account_id
151
181
 
152
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
182
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
153
183
  http.request(request)
154
184
  end
155
185
 
@@ -159,13 +189,13 @@ module PassNinja
159
189
  private
160
190
 
161
191
  def fetch_required_keys_set(pass_type)
162
- uri = URI("https://api.passninja.com/v1/passtypes/keys/#{pass_type}")
192
+ uri = URI("#{@host}/v1/passtypes/keys/#{pass_type}")
163
193
 
164
194
  request = Net::HTTP::Get.new(uri)
165
195
  request["X-API-KEY"] = @api_key
166
196
  request["X-ACCOUNT-ID"] = @account_id
167
197
 
168
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
198
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
169
199
  http.request(request)
170
200
  end
171
201
 
@@ -179,4 +209,4 @@ module PassNinja
179
209
  end
180
210
  end
181
211
  end
182
- end
212
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passninja-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Grundy
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-18 00:00:00.000000000 Z
11
+ date: 2026-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-http
@@ -80,7 +80,7 @@ homepage: https://github.com/flomio/passninja-ruby
80
80
  licenses:
81
81
  - MIT
82
82
  metadata: {}
83
- post_install_message:
83
+ post_install_message:
84
84
  rdoc_options: []
85
85
  require_paths:
86
86
  - lib
@@ -95,8 +95,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  requirements: []
98
- rubygems_version: 3.3.7
99
- signing_key:
98
+ rubygems_version: 3.0.3.1
99
+ signing_key:
100
100
  specification_version: 4
101
101
  summary: A Ruby gem for interacting with the PassNinja API
102
102
  test_files: []