1 /** 2 * Portions of this software was developed by employees of the National Institute 3 * of Standards and Technology (NIST), an agency of the Federal Government and is 4 * being made available as a public service. Pursuant to title 17 United States 5 * Code Section 105, works of NIST employees are not subject to copyright 6 * protection in the United States. This software may be subject to foreign 7 * copyright. Permission in the United States and in foreign countries, to the 8 * extent that NIST may hold copyright, to use, copy, modify, create derivative 9 * works, and distribute this software and its documentation without fee is hereby 10 * granted on a non-exclusive basis, provided that this notice and disclaimer 11 * of warranty appears in all copies. 12 * 13 * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER 14 * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY 15 * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM 17 * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE 18 * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT 19 * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, 20 * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, 21 * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, 22 * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR 23 * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT 24 * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. 25 */ 26 27 package gov.nist.secauto.swid.client.service; 28 29 public enum Action { 30 31 insert("insert", "POST", "/service/rest/external/swid/list"), 32 update("update", "PUT", "/service/rest/external/swid/list"); 33 34 String action; 35 String method; 36 String endpoint; 37 public static final String WEBSERVICES_DEFAULT_HOSTNAME = "auth.nvd.nist.gov"; 38 39 private Action(String action, String method, String endpoint) { 40 this.action = action; 41 this.method = method; 42 this.endpoint = endpoint; 43 44 } 45 46 /** 47 * Get the action name for the enum 48 * 49 * @return the action name 50 */ 51 public String getAction() { 52 return action; 53 } 54 55 /** 56 * Set the action name 57 * 58 * @param action 59 * the action name 60 */ 61 public void setAction(String action) { 62 this.action = action; 63 } 64 65 /** 66 * Return Action name that matches the name. 67 * 68 * @param name 69 * the action name 70 * 71 * @return the Action enum that matches with the name 72 * 73 */ 74 public static Action findByName(String name) { 75 76 if (name != null) { 77 for (Action actionItem : values()) { 78 if (name.equals(actionItem.getAction())) { 79 return actionItem; 80 } 81 } 82 } 83 return null; 84 } 85 86 public String getMethod() { 87 return method; 88 } 89 90 /** 91 * Set method 92 * 93 * @param method 94 * the http method allowed for the action 95 */ 96 public void setMethod(String method) { 97 this.method = method; 98 } 99 100 /** 101 * Get endpoint URL for the action 102 * 103 * @return the endpoint URL for the action 104 */ 105 public String getEndpoint() { 106 return endpoint; 107 } 108 109 /** 110 * Set endpoint URL for the action 111 * 112 * @param endpoint 113 * the endpoint URL for the action 114 */ 115 public void setEndpoint(String endpoint) { 116 this.endpoint = endpoint; 117 } 118 119 /** 120 * Return endpoint URL 121 * 122 * @return the endpoint URL for the action 123 */ 124 public String fetchEndpoint() { 125 126 return "https://" + getHostName() + endpoint; 127 } 128 129 /** 130 * Use swidHost environment variable value, if provided 131 * 132 * @return the service provider host 133 */ 134 public static String getHostName() { 135 String hostname = WEBSERVICES_DEFAULT_HOSTNAME; 136 String swidHost = System.getenv("swidhost"); 137 if (swidHost != null) { 138 hostname = swidHost; 139 } 140 141 return hostname; 142 } 143 144 }