libepp_nicbr
AsnReserveFunctions.H
Go to the documentation of this file.
1 /* ${copyright}$ */
2 /* $Id: AsnReserveFunctions.H 1245 2014-11-17 16:50:01Z rafael $ */
6 #ifndef __ASN_RESERVE_FUNCTIONS_H__
7 #define __ASN_RESERVE_FUNCTIONS_H__
9 
10 #include "AsnReserveCreate.H"
11 #include "AsnReserveDelete.H"
12 
14 
19 int cmd_asn_reserve_help(string error_msg, string specific = "")
20 {
21  if (error_msg != "") {
22  printf("error: %s\n", error_msg.c_str());
23  }
24 
25  printf("asnreserve command syntax help:\n");
26  printf("\n");
27 
28  if (specific == "" || specific == "create") {
29  printf(" create <-o organization> <-start value> [-end value] "
30  "[-comment value]\n");
31  printf("\n");
32  }
33  if (specific == "" || specific == "delete") {
34  printf(" delete <id>\n");
35  printf("\n");
36  }
37 
38  if (error_msg != "") {
39  return -1;
40  }
41 
42  return 0;
43 }
44 
46 
50 int cmd_asn_reserve_create(vector<string> &args)
51 {
52  string cmd_name = "create";
53 
54  AsnReserveCreate act;
55  AsnReserveCreateCmd *cmd = act.get_command();
56 
57  if (args.empty()) {
58  return cmd_asn_reserve_help("no arguments specified", cmd_name);
59  }
60 
61  bool hasStart = false;
62  bool hasEnd = false;
63  bool hasOrganization = false;
64  bool hasComment = false;
65 
66  while (!args.empty()) {
67  if (args[0] == "-start") {
68  //set start of the range
69  if (hasStart) {
70  return cmd_asn_reserve_help("only one Start ASN allowed per command",
71  cmd_name);
72  } else {
73  hasStart = true;
74  }
75  args.erase(args.begin());
76  if (args.empty()) {
77  return cmd_asn_reserve_help("start parameter missing", cmd_name);
78  }
79 
80  int start = atoi(args[0].c_str());
81  if (start <= 0) {
82  return cmd_asn_reserve_help("invalid Start ASN: '" + args[0] + "'",
83  cmd_name);
84  }
85 
86  cmd->set_start_asn(start);
87  args.erase(args.begin());
88  } else if (args[0] == "-end") {
89  //set end of the range
90  if (hasEnd) {
91  return cmd_asn_reserve_help("only one End ASN allowed per command",
92  cmd_name);
93  } else {
94  hasEnd = true;
95  }
96  args.erase(args.begin());
97  if (args.empty()) {
98  return cmd_asn_reserve_help("end parameter missing", cmd_name);
99  }
100 
101  int end = atoi(args[0].c_str());
102  if (end <= 0) {
103  return cmd_asn_reserve_help("invalid End ASN: '" + args[0] + "'",
104  cmd_name);
105  }
106 
107  cmd->set_end_asn(end);
108  args.erase(args.begin());
109  } else if (args[0] == "-o") {
110  //set organization
111  if (hasOrganization) {
112  return cmd_asn_reserve_help("only one organization allowed per command",
113  cmd_name);
114  } else {
115  hasOrganization = true;
116  }
117  args.erase(args.begin());
118  if (args.empty()) {
119  return cmd_asn_reserve_help("organization parameter missing", cmd_name);
120  }
121  cmd->set_organization(args[0]);
122  args.erase(args.begin());
123  } else if (args[0] == "-comment") {
124  args.erase(args.begin());
125  if (args.empty()) {
126  return cmd_asn_reserve_help("comment parameter missing", cmd_name);
127  }
128 
129  string comment = args[0];
130  args.erase(args.begin());
131 
132  if (SheppStrUtil::quote_gathering(args, comment) != 0) {
133  return cmd_asn_reserve_help("error setting comment", cmd_name);
134  }
135 
136  cmd->set_comment(comment);
137 
138  } else {
139  return cmd_asn_reserve_help("invalid syntax near \"" + args[0] + "\"",
140  cmd_name);
141  }
142  }
143 
144  if (!hasOrganization) {
145  return cmd_asn_reserve_help("no organization specified", cmd_name);
146  }
147 
148  if (!hasStart) {
149  return cmd_asn_reserve_help("no start ASN specified", cmd_name);
150  }
151 
152  if (hasStart && !hasEnd) {
153  cmd->set_end_asn(cmd->get_start_asn());
154  }
155 
156  if (_debug) {
157  printf("ASN Reserve to be created: [%d-%d]\n", cmd->get_start_asn(),
158  cmd->get_end_asn());
159  printf("organization: [%s]\n", cmd->get_organization().c_str());
160 
161  if (cmd->get_comment() != "") {
162  printf("comment: [%s]\n", cmd->get_comment().c_str());
163  }
164  } // _debug
165 
166  if (process_action(act) != 0) {
167  return -1;
168  }
169 
170  return 0;
171 }
172 
174 
178 int cmd_asn_reserve_delete(vector<string> &args)
179 {
180  string cmd_name = "delete";
181 
182  AsnReserveDelete act;
183  AsnReserveDeleteCmd *cmd = act.get_command();
184 
185  if (args.size() != 1) {
186  return cmd_asn_reserve_help("exactly one ASN Reserve id must be specified", cmd_name);
187  }
188 
189  int id = atoi(args[0].c_str());
190  if (id <= 0) {
191  return cmd_asn_reserve_help("invalid ASN: '" + args[0] + "'", cmd_name);
192  }
193 
194  cmd->set_id(id);
195 
196  if (_debug) {
197  printf("ASN Reserve to be deleted: [%d]\n", cmd->get_id());
198  } // _debug
199 
200  if (process_action(act) != 0) {
201  return -1;
202  }
203 
204  return 0;
205 }
206 
208 
212 int cmd_asn_reserve(vector<string> &args)
213 {
214  // asn reserve command processing
215  if (!args.empty() && !(args[0] == "help")) {
216  if (args[0] == "create") {
217  args.erase(args.begin());
218  return cmd_asn_reserve_create(args);
219  } else if (args[0] == "delete") {
220  args.erase(args.begin());
221  return cmd_asn_reserve_delete(args);
222  } else {
223  return cmd_asn_reserve_help("invalid command: asnreserve " + args[0]);
224  }
225  }
226 
227  return cmd_asn_reserve_help("");
228 }
229 
230 #endif //__ASN_RESERVE_FUNCTIONS_H__
int cmd_asn_reserve_help(string error_msg, string specific="")
print asn reserve command usage info
Definition: AsnReserveFunctions.H:19
int get_start_asn() const
Returns start of the asn range.
Definition: AsnReserveCreateCmd.H:49
void set_comment(const string &comment)
Sets comment.
Definition: AsnReserveCreateCmd.H:94
EPP AsnReserveCreate Class.
Definition: AsnReserveCreateCmd.H:25
string get_organization() const
Returns organization associated with the reservation.
Definition: AsnReserveCreateCmd.H:85
int get_id() const
Returns object id.
Definition: AsnReserveDeleteCmd.H:41
void set_organization(const string &organization)
Sets organization.
Definition: AsnReserveCreateCmd.H:76
int cmd_asn_reserve_delete(vector< string > &args)
asn reserve delete function
Definition: AsnReserveFunctions.H:178
int cmd_asn_reserve(vector< string > &args)
main asn reserve command
Definition: AsnReserveFunctions.H:212
EPP AsnReserveDelete Class.
EPP AsnReserveCreate Class.
void set_id(const int id)
Sets id.
Definition: AsnReserveDeleteCmd.H:32
EPP AsnReserveDelete Class.
Definition: AsnReserveDeleteCmd.H:17
int cmd_asn_reserve_create(vector< string > &args)
asn create command function
Definition: AsnReserveFunctions.H:50
int process_action(Action &act)
Send and EPP Action.
Definition: SheppCommandFunctions.H:871
AsnReserveCreateCmd * get_command()
Returns raw pointer to the command.
Definition: AsnReserveCreate.H:54
int get_end_asn() const
Returns end of the asn range.
Definition: AsnReserveCreateCmd.H:67
string get_comment() const
Returns comment about reservation.
Definition: AsnReserveCreateCmd.H:103
void set_start_asn(const int asn)
Sets start of the asn range.
Definition: AsnReserveCreateCmd.H:40
EPP AsnReserveCreate Class.
Definition: AsnReserveCreate.H:21
EPP command-line shell client command functions include file.
static int quote_gathering(vector< string > &words, string &gather)
Gathers command-line arguments bounded by quotes in a string.
Definition: SheppStrUtil.H:152
void set_end_asn(const int asn)
Sets start of the asn range.
Definition: AsnReserveCreateCmd.H:58
AsnReserveDeleteCmd * get_command()
Returns raw pointer to the command.
Definition: AsnReserveDelete.H:53
EPP AsnReserveDelete Class.
Definition: AsnReserveDelete.H:20