admin_args.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. package api
  2. import (
  3. "encoding/json"
  4. "github.com/ethereum/go-ethereum/common/compiler"
  5. "github.com/ethereum/go-ethereum/rpc/shared"
  6. )
  7. type AddPeerArgs struct {
  8. Url string
  9. }
  10. func (args *AddPeerArgs) UnmarshalJSON(b []byte) (err error) {
  11. var obj []interface{}
  12. if err := json.Unmarshal(b, &obj); err != nil {
  13. return shared.NewDecodeParamError(err.Error())
  14. }
  15. if len(obj) != 1 {
  16. return shared.NewDecodeParamError("Expected enode as argument")
  17. }
  18. urlstr, ok := obj[0].(string)
  19. if !ok {
  20. return shared.NewInvalidTypeError("url", "not a string")
  21. }
  22. args.Url = urlstr
  23. return nil
  24. }
  25. type ImportExportChainArgs struct {
  26. Filename string
  27. }
  28. func (args *ImportExportChainArgs) UnmarshalJSON(b []byte) (err error) {
  29. var obj []interface{}
  30. if err := json.Unmarshal(b, &obj); err != nil {
  31. return shared.NewDecodeParamError(err.Error())
  32. }
  33. if len(obj) != 1 {
  34. return shared.NewDecodeParamError("Expected filename as argument")
  35. }
  36. filename, ok := obj[0].(string)
  37. if !ok {
  38. return shared.NewInvalidTypeError("filename", "not a string")
  39. }
  40. args.Filename = filename
  41. return nil
  42. }
  43. type VerbosityArgs struct {
  44. Level int
  45. }
  46. func (args *VerbosityArgs) UnmarshalJSON(b []byte) (err error) {
  47. var obj []interface{}
  48. if err := json.Unmarshal(b, &obj); err != nil {
  49. return shared.NewDecodeParamError(err.Error())
  50. }
  51. if len(obj) != 1 {
  52. return shared.NewDecodeParamError("Expected enode as argument")
  53. }
  54. level, err := numString(obj[0])
  55. if err == nil {
  56. args.Level = int(level.Int64())
  57. }
  58. return nil
  59. }
  60. type SetSolcArgs struct {
  61. Path string
  62. }
  63. func (args *SetSolcArgs) UnmarshalJSON(b []byte) (err error) {
  64. var obj []interface{}
  65. if err := json.Unmarshal(b, &obj); err != nil {
  66. return shared.NewDecodeParamError(err.Error())
  67. }
  68. if len(obj) != 1 {
  69. return shared.NewDecodeParamError("Expected path as argument")
  70. }
  71. if pathstr, ok := obj[0].(string); ok {
  72. args.Path = pathstr
  73. return nil
  74. }
  75. return shared.NewInvalidTypeError("path", "not a string")
  76. }
  77. type StartRPCArgs struct {
  78. ListenAddress string
  79. ListenPort uint
  80. CorsDomain string
  81. Apis string
  82. }
  83. func (args *StartRPCArgs) UnmarshalJSON(b []byte) (err error) {
  84. var obj []interface{}
  85. if err := json.Unmarshal(b, &obj); err != nil {
  86. return shared.NewDecodeParamError(err.Error())
  87. }
  88. args.ListenAddress = "127.0.0.1"
  89. args.ListenPort = 8545
  90. args.Apis = "net,eth,web3"
  91. if len(obj) >= 1 {
  92. if addr, ok := obj[0].(string); ok {
  93. args.ListenAddress = addr
  94. } else {
  95. return shared.NewInvalidTypeError("listenAddress", "not a string")
  96. }
  97. }
  98. if len(obj) >= 2 {
  99. if port, ok := obj[1].(float64); ok && port >= 0 && port <= 64*1024 {
  100. args.ListenPort = uint(port)
  101. } else {
  102. return shared.NewInvalidTypeError("listenPort", "not a valid port number")
  103. }
  104. }
  105. if len(obj) >= 3 {
  106. if corsDomain, ok := obj[2].(string); ok {
  107. args.CorsDomain = corsDomain
  108. } else {
  109. return shared.NewInvalidTypeError("corsDomain", "not a string")
  110. }
  111. }
  112. if len(obj) >= 4 {
  113. if apis, ok := obj[3].(string); ok {
  114. args.Apis = apis
  115. } else {
  116. return shared.NewInvalidTypeError("apis", "not a string")
  117. }
  118. }
  119. return nil
  120. }
  121. type SleepBlocksArgs struct {
  122. N int64
  123. Timeout int64
  124. }
  125. func (args *SleepBlocksArgs) UnmarshalJSON(b []byte) (err error) {
  126. var obj []interface{}
  127. if err := json.Unmarshal(b, &obj); err != nil {
  128. return shared.NewDecodeParamError(err.Error())
  129. }
  130. args.N = 1
  131. args.Timeout = 0
  132. if len(obj) >= 1 {
  133. if n, ok := obj[0].(int64); ok {
  134. args.N = n
  135. } else {
  136. return shared.NewInvalidTypeError("N", "not an integer")
  137. }
  138. }
  139. if len(obj) >= 2 {
  140. if n, ok := obj[1].(int64); ok {
  141. args.Timeout = n
  142. } else {
  143. return shared.NewInvalidTypeError("N", "not an integer")
  144. }
  145. }
  146. return nil
  147. }
  148. type SetGlobalRegistrarArgs struct {
  149. NameReg string
  150. ContractAddress string
  151. }
  152. func (args *SetGlobalRegistrarArgs) UnmarshalJSON(b []byte) (err error) {
  153. var obj []interface{}
  154. if err := json.Unmarshal(b, &obj); err != nil {
  155. return shared.NewDecodeParamError(err.Error())
  156. }
  157. if len(obj) == 0 {
  158. return shared.NewDecodeParamError("Expected namereg address")
  159. }
  160. if len(obj) >= 1 {
  161. if namereg, ok := obj[0].(string); ok {
  162. args.NameReg = namereg
  163. } else {
  164. return shared.NewInvalidTypeError("NameReg", "not a string")
  165. }
  166. }
  167. if len(obj) >= 2 {
  168. if addr, ok := obj[1].(string); ok {
  169. args.ContractAddress = addr
  170. } else {
  171. return shared.NewInvalidTypeError("ContractAddress", "not a string")
  172. }
  173. }
  174. return nil
  175. }
  176. type SetHashRegArgs struct {
  177. HashReg string
  178. Sender string
  179. }
  180. func (args *SetHashRegArgs) UnmarshalJSON(b []byte) (err error) {
  181. var obj []interface{}
  182. if err := json.Unmarshal(b, &obj); err != nil {
  183. return shared.NewDecodeParamError(err.Error())
  184. }
  185. if len(obj) >= 1 {
  186. if hashreg, ok := obj[0].(string); ok {
  187. args.HashReg = hashreg
  188. } else {
  189. return shared.NewInvalidTypeError("HashReg", "not a string")
  190. }
  191. }
  192. if len(obj) >= 2 {
  193. if sender, ok := obj[1].(string); ok {
  194. args.Sender = sender
  195. } else {
  196. return shared.NewInvalidTypeError("Sender", "not a string")
  197. }
  198. }
  199. return nil
  200. }
  201. type SetUrlHintArgs struct {
  202. UrlHint string
  203. Sender string
  204. }
  205. func (args *SetUrlHintArgs) UnmarshalJSON(b []byte) (err error) {
  206. var obj []interface{}
  207. if err := json.Unmarshal(b, &obj); err != nil {
  208. return shared.NewDecodeParamError(err.Error())
  209. }
  210. if len(obj) >= 1 {
  211. if urlhint, ok := obj[0].(string); ok {
  212. args.UrlHint = urlhint
  213. } else {
  214. return shared.NewInvalidTypeError("UrlHint", "not a string")
  215. }
  216. }
  217. if len(obj) >= 2 {
  218. if sender, ok := obj[1].(string); ok {
  219. args.Sender = sender
  220. } else {
  221. return shared.NewInvalidTypeError("Sender", "not a string")
  222. }
  223. }
  224. return nil
  225. }
  226. type SaveInfoArgs struct {
  227. ContractInfo compiler.ContractInfo
  228. Filename string
  229. }
  230. func (args *SaveInfoArgs) UnmarshalJSON(b []byte) (err error) {
  231. var obj []interface{}
  232. if err := json.Unmarshal(b, &obj); err != nil {
  233. return shared.NewDecodeParamError(err.Error())
  234. }
  235. if len(obj) < 2 {
  236. return shared.NewInsufficientParamsError(len(obj), 2)
  237. }
  238. if jsonraw, err := json.Marshal(obj[0]); err == nil {
  239. if err = json.Unmarshal(jsonraw, &args.ContractInfo); err != nil {
  240. return err
  241. }
  242. } else {
  243. return err
  244. }
  245. if filename, ok := obj[1].(string); ok {
  246. args.Filename = filename
  247. } else {
  248. return shared.NewInvalidTypeError("Filename", "not a string")
  249. }
  250. return nil
  251. }
  252. type RegisterArgs struct {
  253. Sender string
  254. Address string
  255. ContentHashHex string
  256. }
  257. func (args *RegisterArgs) UnmarshalJSON(b []byte) (err error) {
  258. var obj []interface{}
  259. if err := json.Unmarshal(b, &obj); err != nil {
  260. return shared.NewDecodeParamError(err.Error())
  261. }
  262. if len(obj) < 3 {
  263. return shared.NewInsufficientParamsError(len(obj), 3)
  264. }
  265. if len(obj) >= 1 {
  266. if sender, ok := obj[0].(string); ok {
  267. args.Sender = sender
  268. } else {
  269. return shared.NewInvalidTypeError("Sender", "not a string")
  270. }
  271. }
  272. if len(obj) >= 2 {
  273. if address, ok := obj[1].(string); ok {
  274. args.Address = address
  275. } else {
  276. return shared.NewInvalidTypeError("Address", "not a string")
  277. }
  278. }
  279. if len(obj) >= 3 {
  280. if hex, ok := obj[2].(string); ok {
  281. args.ContentHashHex = hex
  282. } else {
  283. return shared.NewInvalidTypeError("ContentHashHex", "not a string")
  284. }
  285. }
  286. return nil
  287. }
  288. type RegisterUrlArgs struct {
  289. Sender string
  290. ContentHash string
  291. Url string
  292. }
  293. func (args *RegisterUrlArgs) UnmarshalJSON(b []byte) (err error) {
  294. var obj []interface{}
  295. if err := json.Unmarshal(b, &obj); err != nil {
  296. return shared.NewDecodeParamError(err.Error())
  297. }
  298. if len(obj) >= 1 {
  299. if sender, ok := obj[1].(string); ok {
  300. args.Sender = sender
  301. } else {
  302. return shared.NewInvalidTypeError("Sender", "not a string")
  303. }
  304. }
  305. if sender, ok := obj[1].(string); ok {
  306. args.ContentHash = sender
  307. } else {
  308. return shared.NewInvalidTypeError("ContentHash", "not a string")
  309. }
  310. if len(obj) >= 3 {
  311. if sender, ok := obj[2].(string); ok {
  312. args.Url = sender
  313. } else {
  314. return shared.NewInvalidTypeError("Url", "not a string")
  315. }
  316. }
  317. return nil
  318. }
  319. type GetContractInfoArgs struct {
  320. Contract string
  321. }
  322. func (args *GetContractInfoArgs) UnmarshalJSON(b []byte) (err error) {
  323. var obj []interface{}
  324. if err := json.Unmarshal(b, &obj); err != nil {
  325. return shared.NewDecodeParamError(err.Error())
  326. }
  327. if len(obj) < 1 {
  328. return shared.NewInsufficientParamsError(len(obj), 1)
  329. }
  330. if len(obj) >= 1 {
  331. if contract, ok := obj[0].(string); ok {
  332. args.Contract = contract
  333. } else {
  334. return shared.NewInvalidTypeError("Contract", "not a string")
  335. }
  336. }
  337. return nil
  338. }
  339. type HttpGetArgs struct {
  340. Uri string
  341. Path string
  342. }
  343. func (args *HttpGetArgs) UnmarshalJSON(b []byte) (err error) {
  344. var obj []interface{}
  345. if err := json.Unmarshal(b, &obj); err != nil {
  346. return shared.NewDecodeParamError(err.Error())
  347. }
  348. if len(obj) < 1 {
  349. return shared.NewInsufficientParamsError(len(obj), 1)
  350. }
  351. if len(obj) >= 1 {
  352. if uri, ok := obj[0].(string); ok {
  353. args.Uri = uri
  354. } else {
  355. return shared.NewInvalidTypeError("Uri", "not a string")
  356. }
  357. }
  358. if len(obj) >= 2 {
  359. if path, ok := obj[1].(string); ok {
  360. args.Path = path
  361. } else {
  362. return shared.NewInvalidTypeError("Path", "not a string")
  363. }
  364. }
  365. return nil
  366. }