admin_args.go 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  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 && obj[0] != nil {
  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 && obj[1] != nil {
  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 && obj[2] != nil {
  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 && obj[3] != nil {
  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 SleepArgs struct {
  122. S int
  123. }
  124. func (args *SleepArgs) UnmarshalJSON(b []byte) (err error) {
  125. var obj []interface{}
  126. if err := json.Unmarshal(b, &obj); err != nil {
  127. return shared.NewDecodeParamError(err.Error())
  128. }
  129. if len(obj) >= 1 {
  130. if obj[0] != nil {
  131. if n, err := numString(obj[0]); err == nil {
  132. args.S = int(n.Int64())
  133. } else {
  134. return shared.NewInvalidTypeError("N", "not an integer: "+err.Error())
  135. }
  136. } else {
  137. return shared.NewInsufficientParamsError(0, 1)
  138. }
  139. }
  140. return nil
  141. }
  142. type SleepBlocksArgs struct {
  143. N int64
  144. Timeout int64
  145. }
  146. func (args *SleepBlocksArgs) UnmarshalJSON(b []byte) (err error) {
  147. var obj []interface{}
  148. if err := json.Unmarshal(b, &obj); err != nil {
  149. return shared.NewDecodeParamError(err.Error())
  150. }
  151. args.N = 1
  152. args.Timeout = 0
  153. if len(obj) >= 1 && obj[0] != nil {
  154. if n, err := numString(obj[0]); err == nil {
  155. args.N = n.Int64()
  156. } else {
  157. return shared.NewInvalidTypeError("N", "not an integer: "+err.Error())
  158. }
  159. }
  160. if len(obj) >= 2 && obj[1] != nil {
  161. if n, err := numString(obj[1]); err == nil {
  162. args.Timeout = n.Int64()
  163. } else {
  164. return shared.NewInvalidTypeError("Timeout", "not an integer: "+err.Error())
  165. }
  166. }
  167. return nil
  168. }
  169. type SetGlobalRegistrarArgs struct {
  170. NameReg string
  171. ContractAddress string
  172. }
  173. func (args *SetGlobalRegistrarArgs) UnmarshalJSON(b []byte) (err error) {
  174. var obj []interface{}
  175. if err := json.Unmarshal(b, &obj); err != nil {
  176. return shared.NewDecodeParamError(err.Error())
  177. }
  178. if len(obj) == 0 {
  179. return shared.NewDecodeParamError("Expected namereg address")
  180. }
  181. if len(obj) >= 1 {
  182. if namereg, ok := obj[0].(string); ok {
  183. args.NameReg = namereg
  184. } else {
  185. return shared.NewInvalidTypeError("NameReg", "not a string")
  186. }
  187. }
  188. if len(obj) >= 2 && obj[1] != nil {
  189. if addr, ok := obj[1].(string); ok {
  190. args.ContractAddress = addr
  191. } else {
  192. return shared.NewInvalidTypeError("ContractAddress", "not a string")
  193. }
  194. }
  195. return nil
  196. }
  197. type SetHashRegArgs struct {
  198. HashReg string
  199. Sender string
  200. }
  201. func (args *SetHashRegArgs) UnmarshalJSON(b []byte) (err error) {
  202. var obj []interface{}
  203. if err := json.Unmarshal(b, &obj); err != nil {
  204. return shared.NewDecodeParamError(err.Error())
  205. }
  206. if len(obj) >= 1 && obj[0] != nil {
  207. if hashreg, ok := obj[0].(string); ok {
  208. args.HashReg = hashreg
  209. } else {
  210. return shared.NewInvalidTypeError("HashReg", "not a string")
  211. }
  212. }
  213. if len(obj) >= 2 && obj[1] != nil {
  214. if sender, ok := obj[1].(string); ok {
  215. args.Sender = sender
  216. } else {
  217. return shared.NewInvalidTypeError("Sender", "not a string")
  218. }
  219. }
  220. return nil
  221. }
  222. type SetUrlHintArgs struct {
  223. UrlHint string
  224. Sender string
  225. }
  226. func (args *SetUrlHintArgs) UnmarshalJSON(b []byte) (err error) {
  227. var obj []interface{}
  228. if err := json.Unmarshal(b, &obj); err != nil {
  229. return shared.NewDecodeParamError(err.Error())
  230. }
  231. if len(obj) >= 1 && obj[0] != nil {
  232. if urlhint, ok := obj[0].(string); ok {
  233. args.UrlHint = urlhint
  234. } else {
  235. return shared.NewInvalidTypeError("UrlHint", "not a string")
  236. }
  237. }
  238. if len(obj) >= 2 && obj[1] != nil {
  239. if sender, ok := obj[1].(string); ok {
  240. args.Sender = sender
  241. } else {
  242. return shared.NewInvalidTypeError("Sender", "not a string")
  243. }
  244. }
  245. return nil
  246. }
  247. type SaveInfoArgs struct {
  248. ContractInfo compiler.ContractInfo
  249. Filename string
  250. }
  251. func (args *SaveInfoArgs) UnmarshalJSON(b []byte) (err error) {
  252. var obj []interface{}
  253. if err := json.Unmarshal(b, &obj); err != nil {
  254. return shared.NewDecodeParamError(err.Error())
  255. }
  256. if len(obj) < 2 {
  257. return shared.NewInsufficientParamsError(len(obj), 2)
  258. }
  259. if jsonraw, err := json.Marshal(obj[0]); err == nil {
  260. if err = json.Unmarshal(jsonraw, &args.ContractInfo); err != nil {
  261. return err
  262. }
  263. } else {
  264. return err
  265. }
  266. if filename, ok := obj[1].(string); ok {
  267. args.Filename = filename
  268. } else {
  269. return shared.NewInvalidTypeError("Filename", "not a string")
  270. }
  271. return nil
  272. }
  273. type RegisterArgs struct {
  274. Sender string
  275. Address string
  276. ContentHashHex string
  277. }
  278. func (args *RegisterArgs) UnmarshalJSON(b []byte) (err error) {
  279. var obj []interface{}
  280. if err := json.Unmarshal(b, &obj); err != nil {
  281. return shared.NewDecodeParamError(err.Error())
  282. }
  283. if len(obj) < 3 {
  284. return shared.NewInsufficientParamsError(len(obj), 3)
  285. }
  286. if len(obj) >= 1 {
  287. if sender, ok := obj[0].(string); ok {
  288. args.Sender = sender
  289. } else {
  290. return shared.NewInvalidTypeError("Sender", "not a string")
  291. }
  292. }
  293. if len(obj) >= 2 {
  294. if address, ok := obj[1].(string); ok {
  295. args.Address = address
  296. } else {
  297. return shared.NewInvalidTypeError("Address", "not a string")
  298. }
  299. }
  300. if len(obj) >= 3 {
  301. if hex, ok := obj[2].(string); ok {
  302. args.ContentHashHex = hex
  303. } else {
  304. return shared.NewInvalidTypeError("ContentHashHex", "not a string")
  305. }
  306. }
  307. return nil
  308. }
  309. type RegisterUrlArgs struct {
  310. Sender string
  311. ContentHash string
  312. Url string
  313. }
  314. func (args *RegisterUrlArgs) UnmarshalJSON(b []byte) (err error) {
  315. var obj []interface{}
  316. if err := json.Unmarshal(b, &obj); err != nil {
  317. return shared.NewDecodeParamError(err.Error())
  318. }
  319. if len(obj) >= 1 {
  320. if sender, ok := obj[0].(string); ok {
  321. args.Sender = sender
  322. } else {
  323. return shared.NewInvalidTypeError("Sender", "not a string")
  324. }
  325. }
  326. if len(obj) >= 2 {
  327. if sender, ok := obj[1].(string); ok {
  328. args.ContentHash = sender
  329. } else {
  330. return shared.NewInvalidTypeError("ContentHash", "not a string")
  331. }
  332. }
  333. if len(obj) >= 3 {
  334. if sender, ok := obj[2].(string); ok {
  335. args.Url = sender
  336. } else {
  337. return shared.NewInvalidTypeError("Url", "not a string")
  338. }
  339. }
  340. return nil
  341. }
  342. type GetContractInfoArgs struct {
  343. Contract string
  344. }
  345. func (args *GetContractInfoArgs) UnmarshalJSON(b []byte) (err error) {
  346. var obj []interface{}
  347. if err := json.Unmarshal(b, &obj); err != nil {
  348. return shared.NewDecodeParamError(err.Error())
  349. }
  350. if len(obj) < 1 {
  351. return shared.NewInsufficientParamsError(len(obj), 1)
  352. }
  353. if len(obj) >= 1 {
  354. if contract, ok := obj[0].(string); ok {
  355. args.Contract = contract
  356. } else {
  357. return shared.NewInvalidTypeError("Contract", "not a string")
  358. }
  359. }
  360. return nil
  361. }
  362. type HttpGetArgs struct {
  363. Uri string
  364. Path string
  365. }
  366. func (args *HttpGetArgs) UnmarshalJSON(b []byte) (err error) {
  367. var obj []interface{}
  368. if err := json.Unmarshal(b, &obj); err != nil {
  369. return shared.NewDecodeParamError(err.Error())
  370. }
  371. if len(obj) < 1 {
  372. return shared.NewInsufficientParamsError(len(obj), 1)
  373. }
  374. if len(obj) >= 1 {
  375. if uri, ok := obj[0].(string); ok {
  376. args.Uri = uri
  377. } else {
  378. return shared.NewInvalidTypeError("Uri", "not a string")
  379. }
  380. }
  381. if len(obj) >= 2 && obj[1] != nil {
  382. if path, ok := obj[1].(string); ok {
  383. args.Path = path
  384. } else {
  385. return shared.NewInvalidTypeError("Path", "not a string")
  386. }
  387. }
  388. return nil
  389. }