dozens_jp_cli 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1706ff1a218d2ef56b41174d5899823376b04ea4
4
- data.tar.gz: 0458587b0c3ebd027ba54cae004474d8bdb7b4e8
3
+ metadata.gz: 69873f95bad988bdda884bffd178c28441e724b5
4
+ data.tar.gz: ad6d2f2de81244e51598d62f00107ab82564dceb
5
5
  SHA512:
6
- metadata.gz: 6d1c4cee3e11362c7e083ce49f941ac531881ef2463590732bf99ca84f3de2a8fe3cf679fc1a466e0b7daf69ec9bb0bb91c9b5d2b2c2b7d75fcb5f3a5db11d99
7
- data.tar.gz: ab2c68e244d6984f0fdf2e93016508ce66e38ea9dd503e508fdff8791675e5e8574e854581fb2ea86325d7fd583470447cba1a6765b047a63f9be8dbda7a5cbb
6
+ metadata.gz: 17e0f353f306e65a22e5356975591d1d876929b4d4c5612e0e1f4318f2d07cfa86b90e0771a9cb32da83be38a07f2d0cd976d5c80b6982872dbf004c08cdded3
7
+ data.tar.gz: e69c0f020ce2abd299501570ef8534e3f2301c4e440cb95a4b96c2618d2d25e1f8ea45772c9487f39f728a51910cd564199ffd2c09feb2af4b2623d18b96a011
@@ -1,3 +1,3 @@
1
1
  module DozensJpCli
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/dozens_jp_cli.rb CHANGED
@@ -1,8 +1,11 @@
1
+ require 'mechanize'
2
+
1
3
  require "dozens_jp_cli/version"
2
4
 
3
5
 
4
6
  class Dozens
5
7
  attr_accessor :ua
8
+ API_BASE_URI = "http://dozens.jp/api"
6
9
 
7
10
  def initialize(user,auth_key)
8
11
  @user = user
@@ -15,11 +18,24 @@ class Dozens
15
18
  def post(uri,header=nil,params=[])
16
19
  self.request(:post,uri,header,params)
17
20
  end
21
+ def delete(uri,header=nil,params={})
22
+ self.request(:delete,uri,header,params)
23
+ end
18
24
  def request(method,uri,header=nil,params=[])
19
- header = {"X-Auth-Token"=> @auth_token } unless header
20
- begin
21
- ua.get(uri, params,nil,header) if method == :get
22
- ua.post(uri,params,header) if method == :post
25
+ header = {"X-Auth-Token"=> self.auth_token } if header.nil?
26
+ begin
27
+ if method == :get then
28
+ ua.get(uri, params,nil,header)
29
+ end
30
+
31
+ if method == :post then
32
+ header["Content-type"] = "application/json"
33
+ ua.post(uri,params,header)
34
+ end
35
+ if method == :delete then
36
+ ua.delete(uri,params,header)
37
+ end
38
+
23
39
  rescue =>e
24
40
  raise e
25
41
  end
@@ -29,52 +45,100 @@ class Dozens
29
45
  if @auth_token && @expires && @expires > Time.now then
30
46
  return @auth_token
31
47
  end
32
- begin
33
- self.get("http://dozens.jp/api/authorize.json",{"X-Auth-User"=>@user,"X-Auth-Key"=>@auth_key})
34
- rescue =>e
35
- raise e
36
- end
48
+
49
+ uri = API_BASE_URI+"/authorize.json"
50
+ self.get(uri ,{"X-Auth-User"=>@user,"X-Auth-Key"=>@auth_key})
51
+
37
52
  @auth_token = JSON.parse(ua.page.body)["auth_token"]
38
53
  @expires = Time.now+60*60*24
39
54
  @auth_token
40
55
  end
41
56
 
57
+ def zone_delete(name_or_id)
58
+ zone_id = ( name_or_id =~ /\d+/ ) ? name_or_id : self.find_zone_id(name_or_id)
59
+ url = API_BASE_URI+"/zone/delete/#{zone_id}.json"
60
+ self.delete(url)
61
+ end
62
+ def zone_create_new(name,email)
63
+ params_str = {name:name, mailaddress:email, add_google_apps:false}.to_json
64
+ url = API_BASE_URI+"/zone/create.json"
65
+ self.post(url,nil,params_str)
66
+ end
67
+
42
68
  def zone_list
43
- uri = "http://dozens.jp/api/zone.json"
69
+ uri = API_BASE_URI+"/zone.json"
44
70
  ret = self.get(uri)
45
71
  @domains = JSON.parse(ret)["domain"]
46
72
  end
47
73
  def record_list(zone_name)
48
- uri = "http://dozens.jp/api/record/#{zone_name}.json"
74
+ uri = API_BASE_URI+"/record/#{zone_name}.json"
49
75
  ret = self.get(uri)
50
76
  @records = JSON.parse(ret)["record"]
51
77
  end
78
+ def find_zone_id(name)
79
+ zone = self.zone_list.find{|e|
80
+ name =~/#{e["name"]}/
81
+ }
82
+ return nil unless zone
83
+ return zone["id"]
84
+ end
85
+ def zone_exists?(name)
86
+ self.find_zone_id(name)!=nil
87
+ end
88
+
52
89
  def find_record_id(name)
53
90
  zone = self.zone_list.find{|e|
54
91
  name =~/#{e["name"]}/
55
- }
92
+ }
56
93
  return nil unless zone
57
94
  record = self.record_list(zone["name"]).find{|e|
58
95
  name =~/#{e["name"]}/
59
96
  }
60
97
  return nil unless record
61
98
  record["id"]
99
+ end
100
+ def record_exists?(record_name)
101
+ self.find_record_id(record_name)!=nil
102
+ end
103
+ def record_delete(name_or_id)
104
+ record_id = ( name_or_id =~ /\d+/ ) ? name_or_id : self.find_record_id(name_or_id)
105
+ url = API_BASE_URI+"/record/delete/#{record_id}.json"
106
+ self.delete(url)
107
+ end
108
+ def record_create(name,zone,content=nil,type="A",prio=10,ttl=7200)
109
+ if name =~/#{zone}/ then
110
+ name = name.gsub(/\.#{zone}/,"" )
111
+ end
112
+ content ||= self.current_global_ip
113
+ raise unless self.zone_exists? zone
114
+
115
+ param = {
116
+ domain: zone,
117
+ name: name,
118
+ type: type,
119
+ prio: prio,
120
+ content: content,
121
+ ttl: ttl,
122
+ }.to_json
123
+
124
+ url = API_BASE_URI+"/record/create.json"
125
+ self.post(url,nil,param)
126
+
127
+
128
+
62
129
  end
63
130
  def record_update(record_id,prio=10,content=nil,ttl=7200)
64
131
  content = self.current_global_ip unless content
65
132
  params = {"prio"=>prio,"content"=>content,"ttl"=>ttl}.to_json
66
- url = "http://dozens.jp/api/record/update/#{record_id}.json"
133
+ url = API_BASE_URI+"/record/update/#{record_id}.json"
67
134
  ret = self.post(url,nil,params)
68
- @records = JSON.parse(ret)["record"]
135
+ JSON.parse(ret)["record"]
69
136
  end
70
137
 
71
138
  def current_global_ip
72
139
  url = "http://myexternalip.com/json"
73
- ret = self.get(url)
140
+ ret = self.get(url,{},[])
74
141
  ret = JSON.parse(ret)["ip"]
75
142
  end
76
143
 
77
-
78
-
79
-
80
144
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dozens_jp_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - takuya
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-26 00:00:00.000000000 Z
11
+ date: 2015-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler