Module: KoreanZipcodeFinder

Extended by:
Configuration
Defined in:
lib/engine.rb,
lib/korean_zipcode_finder.rb,
lib/korean_zipcode_finder/version.rb,
lib/korean_zipcode_finder/configuration.rb,
app/models/korean_zipcode_finder/zipcode.rb,
app/controllers/korean_zipcode_finder/zipcodes_controller.rb

Defined Under Namespace

Modules: Configuration Classes: Engine, Zipcode, ZipcodesController

Constant Summary collapse

VERSION =
"0.1.0"

Constants included from Configuration

Configuration::URL

Instance Attribute Summary

Attributes included from Configuration

#api_key

Class Method Summary collapse

Methods included from Configuration

configure

Class Method Details

.find_zipcode(dong_name) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/korean_zipcode_finder.rb', line 15

def self.find_zipcode(dong_name)
  iconv = Iconv.new("euc-kr", "utf-8//IGNORE")
  keyword = iconv.conv(dong_name.strip)

  response = Net::HTTP.post_form URI.parse(Configuration::URL), {'regkey' => api_key, 'target' => 'post', 'query' => keyword}
  nodes = Nokogiri::XML(response.body).css("item")

  nodes.map do |node|
    original_address = node.css("address").text
    address = original_address.strip.sub(/\s(\d+)(~?)(\d+)\z/, "")
    zipcode = node.css("postcd").text
    zipcode_01 = zipcode[0..2]
    zipcode_02 = zipcode[-3..-1]

    Struct::KoreanZipcodeFinder.new(zipcode, zipcode_01, zipcode_02, address, original_address)
  end
end