Class: PassNinja::Passes

Inherits:
Object
  • Object
show all
Defined in:
lib/passninja.rb

Instance Method Summary collapse

Constructor Details

#initialize(account_id, api_key, host, use_ssl) ⇒ Passes

Returns a new instance of Passes.



55
56
57
58
59
60
# File 'lib/passninja.rb', line 55

def initialize(, api_key, host, use_ssl)
  @account_id = 
  @api_key = api_key
  @host = host
  @use_ssl = use_ssl
end

Instance Method Details

#create(pass_type, pass_data) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/passninja.rb', line 62

def create(pass_type, pass_data)
  required_fields = fetch_required_keys_set(pass_type)
  validate_fields(pass_data, required_fields)
  uri = URI("#{@host}/v1/passes")
  request = Net::HTTP::Post.new(uri)
  request["X-API-KEY"] = @api_key
  request["X-ACCOUNT-ID"] = @account_id
  request.content_type = "application/json"
  request.body = { passTemplate: pass_type, pass: pass_data }.to_json

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
    http.request(request)
  end

  begin
    JSON.parse(response.body)
  rescue JSON::ParserError
    { error: "Unable to parse response" }
  end
end

#decrypt(pass_type, payload) ⇒ Object



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/passninja.rb', line 117

def decrypt(pass_type, payload)
  uri = URI("#{@host}/v1/passes/decrypt")
  request = Net::HTTP::Post.new(uri)
  request["X-API-KEY"] = @api_key
  request["X-ACCOUNT-ID"] = @account_id
  request.content_type = "application/json"
  request.body = { passTemplate: pass_type, payload: payload }.to_json

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
    http.request(request)
  end

  begin
    JSON.parse(response.body)
  rescue JSON::ParserError
    { error: "Unable to parse response" }
  end
end

#delete(pass_type, serial_number) ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/passninja.rb', line 176

def delete(pass_type, serial_number)
  uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
  request = Net::HTTP::Delete.new(uri)
  request["X-API-KEY"] = @api_key
  request["X-ACCOUNT-ID"] = @account_id

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
    http.request(request)
  end

  JSON.parse(response.body)["serialNumber"]
end

#find(pass_type) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/passninja.rb', line 83

def find(pass_type)
  uri = URI("#{@host}/v1/passes/#{pass_type}")
  request = Net::HTTP::Get.new(uri)
  request["X-API-KEY"] = @api_key
  request["X-ACCOUNT-ID"] = @account_id

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
    http.request(request)
  end

  begin
    JSON.parse(response.body)
  rescue JSON::ParserError
    { error: "Unable to parse response" }
  end
end

#get(pass_type, serial_number) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/passninja.rb', line 100

def get(pass_type, serial_number)
  uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
  request = Net::HTTP::Get.new(uri)
  request["X-API-KEY"] = @api_key
  request["X-ACCOUNT-ID"] = @account_id

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
    http.request(request)
  end

  begin
    JSON.parse(response.body)
  rescue JSON::ParserError
    { error: "Unable to parse response. Server response code: #{response.code}" }
  end
end

#patch(pass_type, serial_number, pass_data) ⇒ Object



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/passninja.rb', line 157

def patch(pass_type, serial_number, pass_data)
  uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
  request = Net::HTTP::Patch.new(uri)
  request["X-API-KEY"] = @api_key
  request["X-ACCOUNT-ID"] = @account_id
  request.content_type = "application/json"
  request.body = { pass: pass_data }.to_json

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
    http.request(request)
  end

  begin
    JSON.parse(response.body)
  rescue JSON::ParserError
    { error: "Unable to parse response" }
  end
end

#update(pass_type, serial_number, pass_data) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/passninja.rb', line 136

def update(pass_type, serial_number, pass_data)
  required_fields = fetch_required_keys_set(pass_type)
  validate_fields(pass_data, required_fields)
  uri = URI("#{@host}/v1/passes/#{pass_type}/#{serial_number}")
  request = Net::HTTP::Put.new(uri)
  request["X-API-KEY"] = @api_key
  request["X-ACCOUNT-ID"] = @account_id
  request.content_type = "application/json"
  request.body = { pass: pass_data }.to_json

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: @use_ssl) do |http|
    http.request(request)
  end

  begin
    JSON.parse(response.body)
  rescue JSON::ParserError
    { error: "Unable to parse response" }
  end
end