Class: Netki::NetkiPartner

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(partner_id = nil, api_key = nil, api_url = 'https://api.netki.com') ⇒ NetkiPartner

Returns a new instance of NetkiPartner.



209
210
211
212
213
# File 'lib/netki/netki.rb', line 209

def initialize(partner_id=nil, api_key=nil, api_url='https://api.netki.com')
  @partner_id = partner_id
  @api_key = api_key
  @api_url = api_url
end

Instance Attribute Details

#api_keyObject

Returns the value of attribute api_key.



202
203
204
# File 'lib/netki/netki.rb', line 202

def api_key
  @api_key
end

#api_urlObject

Returns the value of attribute api_url.



203
204
205
# File 'lib/netki/netki.rb', line 203

def api_url
  @api_url
end

#partner_idObject

The Netki object must be initialized with the Partner ID and API Key to be useful

  • Partner ID -> Netki Partner ID is available on your partner API Key Page

  • API Key -> Netki API Key is available only upon API Key creation. Be sure to store it somewhere safe!



201
202
203
# File 'lib/netki/netki.rb', line 201

def partner_id
  @partner_id
end

Instance Method Details

#create_new_domain(domain_name, partner_id = nil) ⇒ Object

Create a new domain

  • domain_name -> Name of new domain to create

  • partner_id -> (optional) Partner that should own the new domain



250
251
252
253
254
255
# File 'lib/netki/netki.rb', line 250

def create_new_domain(domain_name, partner_id=nil)
  api_data = {}
  api_data['partner_id'] = partner_id unless partner_id.nil?
  Netki.process_request(@api_key, @partner_id, "#{@api_url}/v1/partner/domain/#{domain_name}", method='POST', JSON.dump(api_data))
  true
end

#create_new_partner(partner_name) ⇒ Object

Create a new Partner

  • partner_name -> Name of new sub-partner to create



219
220
221
222
223
# File 'lib/netki/netki.rb', line 219

def create_new_partner(partner_name)
  encoded_partner_name = URI.encode(partner_name)
  response = Netki.process_request(@api_key, @partner_id, "#{@api_url}/v1/admin/partner/#{encoded_partner_name}", method='POST')
  response['partner']['id']
end

#create_new_walletname(domain_name, name, wallets = {}, external_id = nil) ⇒ Object

Create a new Wallet Name object using this factory method.

  • domain_name -> The pre-configured domain name you would like to add this new wallet name to

  • name -> The DNS name that you would like this new wallet name to have (ie.. name.domain_name)

  • wallets -> This is a hash where the key is the currency (ie.. btc, ltc, dgc, tusd) and the value is:

    the wallet address OR
    URL of the BIP32 / BIP70 address server OR
    a hash containing an :address and other metadata
    
  • external_id -> Any unique external ID that you may want to use to track this specific wallet name



317
318
319
320
321
# File 'lib/netki/netki.rb', line 317

def create_new_walletname(domain_name, name, wallets={}, external_id=nil)
  new_wn = WalletName.new(domain_name, name, wallets, external_id)
  new_wn.set_api_opts(@api_url, @partner_id, @api_key)
  new_wn
end

#delete_domain(domain_name) ⇒ Object

Delete a Domain

  • domain_name -> Name of delete to delete



301
302
303
304
# File 'lib/netki/netki.rb', line 301

def delete_domain(domain_name)
  Netki.process_request(@api_key, @partner_id, "#{@api_url}/v1/partner/domain/#{domain_name}", method='DELETE')
  true
end

#delete_partner(partner_name) ⇒ Object

Delete a Partner

  • partner_name -> Name of sub-partner to delete

NOTE: You cannot delete your own partner resource



239
240
241
242
243
# File 'lib/netki/netki.rb', line 239

def delete_partner(partner_name)
  encoded_partner_name = URI.encode(partner_name)
  Netki.process_request(@api_key, @partner_id, "#{@api_url}/v1/admin/partner/#{encoded_partner_name}", method='DELETE')
  true
end

#get_domain_dnssec(domain_name) ⇒ Object

Get DNSSEC Status of Domain

  • domain_name -> (Required) Name of domain to get DNSSEC status for

Returns a hash containing the follow DNSSEC-related keys:

  • ds_records (list)

  • public_key_signing_key

  • nextroll_date

  • nameservers (list)



293
294
295
# File 'lib/netki/netki.rb', line 293

def get_domain_dnssec(domain_name)
  Netki.process_request(@api_key, @partner_id, "#{@api_url}/v1/partner/domain/dnssec/#{domain_name}", method='GET')
end

#get_domain_status(domain_name = nil) ⇒ Object

List status of domain resources

  • domain_name -> (Optional) Name of domain to return status for

If domain_name is omitted status is returned for all available domain resources.

Returns a list of Hashes, each containing current status for each domain



274
275
276
277
278
279
280
281
# File 'lib/netki/netki.rb', line 274

def get_domain_status(domain_name=nil)

  uri="#{@api_url}/v1/partner/domain"
  uri << "/#{domain_name}" unless domain_name.nil?

  response = Netki.process_request(@api_key, @partner_id, uri, method='GET')
  response['domains']
end

#get_domainsObject

List available domain resources Returns a list of domain Hashes, each containing a domain_name and tld_type key



261
262
263
264
# File 'lib/netki/netki.rb', line 261

def get_domains()
  response = Netki.process_request(@api_key, @partner_id, "#{@api_url}/api/domain", method='GET')
  response['domains']
end

#get_partnersObject

List current and sub partners Returns a list of partner Hashes, each containing an id and name key



229
230
231
232
# File 'lib/netki/netki.rb', line 229

def get_partners()
  response = Netki.process_request(@api_key, @partner_id, "#{@api_url}/v1/admin/partner", method='GET')
  response['partners']
end

#get_wallet_names(domain_name = nil, external_id = nil) ⇒ Object

Returns an array of WalletName objects based on the given search parameters:

  • domain_name -> The pre-configured domain that you have already been using for wallet names

  • external_id -> The external ID previously given to the single wallet name you want to retrieve



327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
# File 'lib/netki/netki.rb', line 327

def get_wallet_names(domain_name=nil, external_id=nil)
  args = []
  args.push("domain_name=#{domain_name}") if domain_name
  args.push("external_id=#{external_id}") if external_id

  uri = "#{@api_url}/v1/partner/walletname"
  uri = (uri + "?" + args.join("&")) unless args.empty?
  response = Netki.process_request(@api_key, @partner_id, uri, method='GET')

  return [] if !response.has_key? 'wallet_name_count' || response['wallet_name_count'] == 0

  wn_list = []
  response['wallet_names'].each do |wn|
    wallets = {}
    wn['wallets'].each do |wallet|
      wallets[wallet['currency']] = wallet['wallet_address']
    end
    wn_obj = WalletName.new(wn['domain_name'], wn['name'], wallets, wn['external_id'], wn['id'])
    wn_obj.set_api_opts(@api_url, @partner_id, @api_key)
    wn_list.push(wn_obj)
  end
  wn_list
end