f0981069ff2633314e633516b4db999222ac7da7
[jFCPlib.git] / src / main / java / net / pterodactylus / fcp / AddPeer.java
1 /*
2  * jFCPlib - AddPeer.java - Copyright © 2008 David Roden
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17  */
18
19 package net.pterodactylus.fcp;
20
21 import java.net.URL;
22
23 /**
24  * The “AddPeer” request adds a peer to the node.
25  *
26  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
27  */
28 public class AddPeer extends FcpMessage {
29
30         /**
31          * Creates a new “AddPeer” request.
32          */
33         private AddPeer() {
34                 super("AddPeer");
35         }
36
37         /**
38          * Creates a new “AddPeer” request that reads the noderef of the peer from
39          * the given file.
40          *
41          * @param file
42          *            The file to read the noderef from
43          */
44         public AddPeer(String file) {
45                 this();
46                 setField("File", file);
47         }
48
49         /**
50          * Creates a new “AddPeer” request that reads the noderef of the peer from
51          * the given URL.
52          *
53          * @param url
54          *            The URL to read the noderef from
55          */
56         public AddPeer(URL url) {
57                 this();
58                 setField("URL", String.valueOf(url));
59         }
60
61         /**
62          * Creates a new “AddPeer” request that adds the peer given by the noderef.
63          *
64          * @param nodeRef
65          *            The noderef of the peer
66          */
67         public AddPeer(NodeRef nodeRef) {
68                 this();
69                 setNodeRef(nodeRef);
70         }
71
72         //
73         // PRIVATE METHODS
74         //
75
76         /**
77          * Sets the noderef of the peer to add.
78          *
79          * @param nodeRef
80          *            The noderef of the peer
81          */
82         private void setNodeRef(NodeRef nodeRef) {
83                 setField("lastGoodVersion", String.valueOf(nodeRef.getLastGoodVersion()));
84                 setField("opennet", String.valueOf(nodeRef.isOpennet()));
85                 setField("identity", nodeRef.getIdentity());
86                 setField("myName", nodeRef.getMyName());
87                 setField("location", String.valueOf(nodeRef.getLocation()));
88                 setField("testnet", String.valueOf(nodeRef.isTestnet()));
89                 setField("version", String.valueOf(nodeRef.getVersion()));
90                 setField("physical.udp", nodeRef.getPhysicalUDP());
91                 setField("ark.pubURI", nodeRef.getARK().getPublicURI());
92                 setField("ark.number", String.valueOf(nodeRef.getARK().getNumber()));
93                 setField("dsaPubKey.y", nodeRef.getDSAPublicKey());
94                 setField("dsaGroup.g", nodeRef.getDSAGroup().getBase());
95                 setField("dsaGroup.p", nodeRef.getDSAGroup().getPrime());
96                 setField("dsaGroup.q", nodeRef.getDSAGroup().getSubprime());
97                 setField("auth.negTypes", FcpUtils.encodeMultiIntegerField(nodeRef.getNegotiationTypes()));
98                 setField("sig", nodeRef.getSignature());
99         }
100
101 }