passninja-ruby 0.1.0 → 0.2.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: cb5c833457f6b6748d951bd149464e7606f52aa340221a616e4cb172cb1ef913
4
- data.tar.gz: 1284c7b44e3b170eef7b5bd67c3dc6ec9560f6d1b0dcdaca232555257fdde734
3
+ metadata.gz: b62e7fa7e35dc0c193f7bc019713f297884cd33939a17015f69cca3a567354c7
4
+ data.tar.gz: 68512e3890cd1e63b3d7a62061e9c859c1ce606ce4bd6f01a2ac93d4e008e54d
5
5
  SHA512:
6
- metadata.gz: 2807cf73a22b0edf295fd0a004858df0e02eabbef48891b9d47bab7ffce0a4352c9b69896029cd189fd7c487bbf77c9981b98298acda70e47f50866c4dc3f152
7
- data.tar.gz: 9636df9027075650f47c816b6d5a6d2e18f99c3a9c7209dfc186c1574bca94cb089081d4d843fbf25e6c2cad23d0557950708d3aaf1d1cf5ce98b3c1427c0915
6
+ metadata.gz: 9124fd27d4df8ff973a7a29a3c097a70db4d0fe2a3e92654126c51911b3ac0744de699e5dbcd29cceaf07e16faa95d987f0ed31279a6680b7cc91ea5b4eff625
7
+ data.tar.gz: 93d91c67ce3744c0c0032f634722b11faa26d37dc61284858b93488a6ae6537a237540e125cc9ea0ed91d9c0c26e5df6d770d811899e3fb90ff3d667fecf2ae7
@@ -1,3 +1,3 @@
1
1
  module Passninja
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/passninja.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "net/http"
2
2
  require "json"
3
3
 
4
- module Passninja
4
+ module PassNinja
5
5
  class Client
6
6
  def initialize(account_id, api_key)
7
7
  @account_id = account_id
@@ -25,14 +25,20 @@ module Passninja
25
25
 
26
26
  def find(pass_template_key)
27
27
  uri = URI("https://api.passninja.com/v1/pass_templates/#{pass_template_key}")
28
+ puts uri
28
29
  request = Net::HTTP::Get.new(uri)
29
- request.basic_auth(@account_id, @api_key)
30
+ request["X-API-KEY"] = @api_key
31
+ request["X-ACCOUNT-ID"] = @account_id
30
32
 
31
33
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
32
34
  http.request(request)
33
35
  end
34
36
 
35
- JSON.parse(response.body)
37
+ begin
38
+ JSON.parse(response.body)
39
+ rescue JSON::ParserError
40
+ { error: "Unable to parse response" }
41
+ end
36
42
  end
37
43
  end
38
44
 
@@ -47,45 +53,61 @@ module Passninja
47
53
  validate_fields(pass_data, required_fields)
48
54
  uri = URI("https://api.passninja.com/v1/passes")
49
55
  request = Net::HTTP::Post.new(uri)
50
- request.basic_auth(@account_id, @api_key)
56
+ request["X-API-KEY"] = @api_key
57
+ request["X-ACCOUNT-ID"] = @account_id
51
58
  request.content_type = "application/json"
52
- request.body = { passType: pass_type, passData: pass_data }.to_json
59
+ request.body = { passType: pass_type, pass: pass_data }.to_json
53
60
 
54
61
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
55
62
  http.request(request)
56
63
  end
57
64
 
58
- JSON.parse(response.body)
65
+ begin
66
+ JSON.parse(response.body)
67
+ rescue JSON::ParserError
68
+ { error: "Unable to parse response" }
69
+ end
59
70
  end
60
71
 
61
72
  def find(pass_type)
62
- uri = URI("https://api.passninja.com/v1/passes?passType=#{pass_type}")
73
+ uri = URI("https://api.passninja.com/v1/passes/#{pass_type}")
63
74
  request = Net::HTTP::Get.new(uri)
64
- request.basic_auth(@account_id, @api_key)
75
+ request["X-API-KEY"] = @api_key
76
+ request["X-ACCOUNT-ID"] = @account_id
65
77
 
66
78
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
67
79
  http.request(request)
68
80
  end
69
81
 
70
- JSON.parse(response.body)
82
+ begin
83
+ JSON.parse(response.body)
84
+ rescue JSON::ParserError
85
+ { error: "Unable to parse response" }
86
+ end
71
87
  end
72
88
 
73
89
  def get(pass_type, serial_number)
74
90
  uri = URI("https://api.passninja.com/v1/passes/#{pass_type}/#{serial_number}")
75
91
  request = Net::HTTP::Get.new(uri)
76
- request.basic_auth(@account_id, @api_key)
92
+ request["X-API-KEY"] = @api_key
93
+ request["X-ACCOUNT-ID"] = @account_id
77
94
 
78
95
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
79
96
  http.request(request)
80
97
  end
81
98
 
82
- JSON.parse(response.body)
99
+ begin
100
+ JSON.parse(response.body)
101
+ rescue JSON::ParserError
102
+ { error: "Unable to parse response. Server response code: #{response.code}" }
103
+ end
83
104
  end
84
105
 
85
106
  def decrypt(pass_type, payload)
86
107
  uri = URI("https://api.passninja.com/v1/passes/decrypt")
87
108
  request = Net::HTTP::Post.new(uri)
88
- request.basic_auth(@account_id, @api_key)
109
+ request["X-API-KEY"] = @api_key
110
+ request["X-ACCOUNT-ID"] = @account_id
89
111
  request.content_type = "application/json"
90
112
  request.body = { passType: pass_type, payload: payload }.to_json
91
113
 
@@ -93,7 +115,11 @@ module Passninja
93
115
  http.request(request)
94
116
  end
95
117
 
96
- JSON.parse(response.body)
118
+ begin
119
+ JSON.parse(response.body)
120
+ rescue JSON::ParserError
121
+ { error: "Unable to parse response" }
122
+ end
97
123
  end
98
124
 
99
125
  def update(pass_type, serial_number, pass_data)
@@ -101,7 +127,8 @@ module Passninja
101
127
  validate_fields(pass_data, required_fields)
102
128
  uri = URI("https://api.passninja.com/v1/passes/#{pass_type}/#{serial_number}")
103
129
  request = Net::HTTP::Put.new(uri)
104
- request.basic_auth(@account_id, @api_key)
130
+ request["X-API-KEY"] = @api_key
131
+ request["X-ACCOUNT-ID"] = @account_id
105
132
  request.content_type = "application/json"
106
133
  request.body = { passData: pass_data }.to_json
107
134
 
@@ -109,13 +136,18 @@ module Passninja
109
136
  http.request(request)
110
137
  end
111
138
 
112
- JSON.parse(response.body)
139
+ begin
140
+ JSON.parse(response.body)
141
+ rescue JSON::ParserError
142
+ { error: "Unable to parse response" }
143
+ end
113
144
  end
114
145
 
115
146
  def delete(pass_type, serial_number)
116
147
  uri = URI("https://api.passninja.com/v1/passes/#{pass_type}/#{serial_number}")
117
148
  request = Net::HTTP::Delete.new(uri)
118
- request.basic_auth(@account_id, @api_key)
149
+ request["X-API-KEY"] = @api_key
150
+ request["X-ACCOUNT-ID"] = @account_id
119
151
 
120
152
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
121
153
  http.request(request)
@@ -127,19 +159,21 @@ module Passninja
127
159
  private
128
160
 
129
161
  def fetch_required_keys_set(pass_type)
130
- uri = URI("https://api.passninja.com/v1/pass_templates/#{pass_type}/required_fields")
162
+ uri = URI("https://api.passninja.com/v1/passtypes/keys/#{pass_type}")
163
+
131
164
  request = Net::HTTP::Get.new(uri)
132
- request.basic_auth(@account_id, @api_key)
165
+ request["X-API-KEY"] = @api_key
166
+ request["X-ACCOUNT-ID"] = @account_id
133
167
 
134
168
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
135
169
  http.request(request)
136
170
  end
137
171
 
138
- JSON.parse(response.body)["required_fields"].map(&:to_sym)
172
+ JSON.parse(response.body)["keys"]
139
173
  end
140
174
 
141
175
  def validate_fields(fields, required_fields)
142
- missing_fields = required_fields - fields.keys
176
+ missing_fields = required_fields.map(&:to_sym) - fields.keys.map(&:to_sym)
143
177
  unless missing_fields.empty?
144
178
  raise ArgumentError, "Missing required fields: #{missing_fields.join(', ')}"
145
179
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passninja-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Grundy