mtgsy 0.0.1 → 0.1.0
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 +4 -4
- data/lib/mtgsy/api_client.rb +96 -17
- data/lib/mtgsy/version.rb +1 -1
- data/lib/mtgsy.rb +14 -0
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5eb81b3ca3aa7b5260a4ac6ffdaa495443a50c07
         | 
| 4 | 
            +
              data.tar.gz: 3c3bc8c0a0606530490ba26b4957f685d3edf2d6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ceec4d977f42565e3623d94045ee0414ea21240d15fbde873aadd9fd673785af1cb817436d8526f9ddf6e1243a9083bec77fcf2292309e131611a00048141381
         | 
| 7 | 
            +
              data.tar.gz: 592b20fd9d189d2356419eb84b467154d691c2aacf9e9c5c8198a59043a24b02c99a3ec34916f70b0924e6b55b4b41d6a55544db8392e637826e1027c507bc87
         | 
    
        data/lib/mtgsy/api_client.rb
    CHANGED
    
    | @@ -6,15 +6,18 @@ module Mtgsy | |
| 6 6 | 
             
                def initialize(options = {})
         | 
| 7 7 | 
             
                  @agent        = Mechanize.new
         | 
| 8 8 | 
             
                  @api_endpoint = "https://www.mtgsy.net/dns/api.php"
         | 
| 9 | 
            +
                  @record_types = [ 'A', 'AAAA', 'CNAME', 'HINFO', 'MX', 'NS', 'PTR', 'RP', 'SRV', 'TXT' ]
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  @debug        = options[:debug] ? options[:debug] : false
         | 
| 9 12 |  | 
| 10 13 | 
             
                  # attr_accessor
         | 
| 11 14 | 
             
                  @domainname = options[:domainname] ? options[:domainname] : nil
         | 
| 12 15 | 
             
                  @username   = options[:username]   ? options[:username]   : nil
         | 
| 16 | 
            +
                  @ttl        = options[:ttl]        ? options[:ttl]        : 900
         | 
| 13 17 | 
             
                  @aux = 0
         | 
| 14 | 
            -
                  @ttl = 1800
         | 
| 15 18 |  | 
| 16 19 | 
             
                  # attr_writer
         | 
| 17 | 
            -
                  @password | 
| 20 | 
            +
                  @password     = options[:password]   ? options[:password]   : nil
         | 
| 18 21 | 
             
                end
         | 
| 19 22 |  | 
| 20 23 | 
             
                attr_accessor :domainname, :username, :aux, :ttl
         | 
| @@ -28,33 +31,109 @@ module Mtgsy | |
| 28 31 | 
             
                  aux     = options[:aux ] ? options[:aux].to_s  : @aux.to_s
         | 
| 29 32 | 
             
                  ttl     = options[:ttl ] ? options[:ttl].to_s  : @ttl.to_s
         | 
| 30 33 |  | 
| 31 | 
            -
                   | 
| 32 | 
            -
                    [ 'command'    ,command     ],
         | 
| 33 | 
            -
                    [ 'username'   ,@username   ],
         | 
| 34 | 
            -
                    [ 'password'   ,@password   ],
         | 
| 35 | 
            -
                    [ 'domainname' ,@domainname ],
         | 
| 36 | 
            -
                    [ 'name'       ,name        ],
         | 
| 37 | 
            -
                    [ 'type'       ,type        ],
         | 
| 38 | 
            -
                    [ 'data'       ,data        ],
         | 
| 39 | 
            -
                    [ 'aux'        ,aux         ],
         | 
| 40 | 
            -
                    [ 'ttl'        ,ttl         ]
         | 
| 41 | 
            -
                  ])
         | 
| 34 | 
            +
                  post_to_mtgsy([ command, name, type, data, aux, ttl ])
         | 
| 42 35 |  | 
| 36 | 
            +
                  what_happened?(@agent, command)
         | 
| 43 37 | 
             
                end
         | 
| 44 38 |  | 
| 45 39 | 
             
                def delete_record(options={})
         | 
| 46 40 | 
             
                  command = "deleterecord"
         | 
| 47 | 
            -
                   | 
| 41 | 
            +
                  name    = options[:name] ? options[:name].to_s : (raise "delete_record requires :name")
         | 
| 42 | 
            +
                  type    = options[:type] ? options[:type].to_s : nil
         | 
| 43 | 
            +
                  data    = options[:data] ? options[:data].to_s : nil
         | 
| 44 | 
            +
                  aux     = options[:aux ] ? options[:aux].to_s  : nil
         | 
| 45 | 
            +
                  ttl     = options[:ttl ] ? options[:ttl].to_s  : nil
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  post_to_mtgsy([ command, name, type, data, aux, ttl ])
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  what_happened?(@agent, command)
         | 
| 48 50 | 
             
                end
         | 
| 49 51 |  | 
| 50 52 | 
             
                def update_record(options={})
         | 
| 51 53 | 
             
                  command = "updaterecord"
         | 
| 52 | 
            -
                   | 
| 54 | 
            +
                  name    = options[:name] ? options[:name].to_s : (raise "update_record requires :name")
         | 
| 55 | 
            +
                  type    = options[:type] ? options[:type].to_s : nil
         | 
| 56 | 
            +
                  data    = options[:data] ? options[:data].to_s : nil
         | 
| 57 | 
            +
                  aux     = options[:aux ] ? options[:aux].to_s  : nil
         | 
| 58 | 
            +
                  ttl     = options[:ttl ] ? options[:ttl].to_s  : nil
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  post_to_mtgsy([ command, name, type, data, aux, ttl ])
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  what_happened?(@agent, command)
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                def refresh!
         | 
| 66 | 
            +
                  command = "listrecords"
         | 
| 67 | 
            +
                  post_to_mtgsy([ command ])
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  @records_ALL = @agent.page.body.split('<br>')
         | 
| 70 | 
            +
                  @records_ALL.pop
         | 
| 71 | 
            +
                  @records_ALL.collect! { |i| i.split(",") }
         | 
| 72 | 
            +
             | 
| 73 | 
            +
             | 
| 74 | 
            +
                  @record_types.each do |x|
         | 
| 75 | 
            +
                    tmp_placeholder = []
         | 
| 76 | 
            +
                    @records_ALL.each do |record|
         | 
| 77 | 
            +
                      tmp_placeholder << record if record[RECORD_TYPE] == x
         | 
| 78 | 
            +
                    end
         | 
| 79 | 
            +
                    instance_variable_set("@records_#{x}", tmp_placeholder)
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                def records(type="ALL")
         | 
| 84 | 
            +
                  self.refresh! unless @records_ALL
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  eval("@records_#{type}")
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                def record_types?
         | 
| 90 | 
            +
                  @record_types
         | 
| 53 91 | 
             
                end
         | 
| 54 92 |  | 
| 55 93 | 
             
                private
         | 
| 56 | 
            -
                  def  | 
| 57 | 
            -
                     | 
| 94 | 
            +
                  def post_to_mtgsy(params)
         | 
| 95 | 
            +
                    command = params[Mtgsy::POST_COMMAND]
         | 
| 96 | 
            +
                    name    = params[Mtgsy::POST_NAME]
         | 
| 97 | 
            +
                    type    = params[Mtgsy::POST_TYPE]
         | 
| 98 | 
            +
                    data    = params[Mtgsy::POST_DATA]
         | 
| 99 | 
            +
                    aux     = params[Mtgsy::POST_AUX]
         | 
| 100 | 
            +
                    data    = params[Mtgsy::POST_TTL]
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                    post_data = []
         | 
| 103 | 
            +
                    post_data << [ 'command'    ,command ]     if command
         | 
| 104 | 
            +
                    post_data << [ 'username'   ,@username ]   if @username
         | 
| 105 | 
            +
                    post_data << [ 'password'   ,@password ]   if @password
         | 
| 106 | 
            +
                    post_data << [ 'domainname' ,@domainname ] if @domainname
         | 
| 107 | 
            +
                    post_data << [ 'name'       ,name ]        if name
         | 
| 108 | 
            +
                    post_data << [ 'type'       ,type ]        if type
         | 
| 109 | 
            +
                    post_data << [ 'data'       ,data ]        if data
         | 
| 110 | 
            +
                    post_data << [ 'aux'        ,aux ]         if aux
         | 
| 111 | 
            +
                    post_data << [ 'ttl'        ,ttl ]         if ttl
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                    p post_data if @debug
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                    @agent.post(@api_endpoint, post_data)
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                  def what_happened?(mechanize_instance, command)
         | 
| 119 | 
            +
                    mtgsy_return_code = mechanize_instance.page.body.match(/[0-9]+/)[0].to_i
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                    case mtgsy_return_code
         | 
| 122 | 
            +
                    when 800
         | 
| 123 | 
            +
                        puts "OK"
         | 
| 124 | 
            +
                    when 400
         | 
| 125 | 
            +
                      $stderr.puts "No domain name specified"
         | 
| 126 | 
            +
                    when 100
         | 
| 127 | 
            +
                      $stderr.puts "Balance insufficcient"
         | 
| 128 | 
            +
                    when 300
         | 
| 129 | 
            +
                      $stderr.puts "Invalid login information supplied"
         | 
| 130 | 
            +
                    when 305
         | 
| 131 | 
            +
                      $stderr.puts "Domain not found"
         | 
| 132 | 
            +
                    when 310
         | 
| 133 | 
            +
                      $stderr.puts "Record not found / problem adding record"
         | 
| 134 | 
            +
                    when 200
         | 
| 135 | 
            +
                      $stderr.puts "Insufficcient information supplied"
         | 
| 136 | 
            +
                    end
         | 
| 58 137 | 
             
                  end
         | 
| 59 138 | 
             
              end
         | 
| 60 139 | 
             
            end
         | 
    
        data/lib/mtgsy/version.rb
    CHANGED
    
    
    
        data/lib/mtgsy.rb
    CHANGED
    
    | @@ -2,4 +2,18 @@ require "mtgsy/version" | |
| 2 2 | 
             
            require "mtgsy/api_client"
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Mtgsy
         | 
| 5 | 
            +
              # e.g. post_to_mtgsy([ command, name, type, data, aux, ttl ])
         | 
| 6 | 
            +
              POST_COMMAND = 0
         | 
| 7 | 
            +
              POST_NAME    = 1
         | 
| 8 | 
            +
              POST_TYPE    = 2
         | 
| 9 | 
            +
              POST_DATA    = 3
         | 
| 10 | 
            +
              POST_AUX     = 4
         | 
| 11 | 
            +
              POST_TTL     = 5
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              # For the record types, e.g. ["vc32staging", "A", "50.56.9.191", "0", "123"]
         | 
| 14 | 
            +
              RECORD_NAME = 0
         | 
| 15 | 
            +
              RECORD_TYPE = 1
         | 
| 16 | 
            +
              RECORD_DATA = 2
         | 
| 17 | 
            +
              RECORD_AUX  = 3
         | 
| 18 | 
            +
              RECORD_TTL  = 4
         | 
| 5 19 | 
             
            end
         |