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 }