/ src / names.js
names.js
 1  let Names = {};
 2  
 3  Names.Providers = {};
 4  Names.noProviderError = 'Name system provider not set; e.g EmbarkJS.Names.setProvider("ens")';
 5  
 6  Names.registerProvider = function(providerName, obj) {
 7    Names.Providers[providerName] = obj;
 8  };
 9  
10  Names.setProvider = function(providerName, options) {
11    let provider = this.Providers[providerName];
12  
13    if (!provider) {
14      throw new Error('Unknown name system provider');
15    }
16  
17    this.currentProviderName = providerName;
18    this.currentNameSystems = provider;
19  
20    return provider.setProvider(options);
21  };
22  
23  // resolve resolves a name into an identifier of some kind
24  Names.resolve = function(name, callback) {
25    if (!this.currentNameSystems) {
26      throw new Error(this.noProviderError);
27    }
28    return this.currentNameSystems.resolve(name, callback);
29  };
30  
31  // the reverse of resolve, resolves using an identifier to get to a name
32  Names.lookup = function(identifier, callback) {
33    if (!this.currentNameSystems) {
34      throw new Error(this.noProviderError);
35    }
36    return this.currentNameSystems.lookup(identifier, callback);
37  };
38  
39  Names.isAvailable = function() {
40    if (!this.currentNameSystems) {
41      return false;
42    }
43    return this.currentNameSystems.isAvailable();
44  };
45  
46  Names.registerSubDomain = function(name, address, callback) {
47    if (!this.currentNameSystems) {
48      throw new Error(this.noProviderError);
49    }
50    return this.currentNameSystems.registerSubDomain(name, address, callback);
51  };
52  
53  export default Names;