akaynak 0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d7fe3caa63a3856d56e7d3b087f255ce76eec7cb
4
+ data.tar.gz: a7dff720bc31349977b6016e0755b12a581fcb69
5
+ SHA512:
6
+ metadata.gz: dfed44018e581fce8ccec15d0ffbb3eecdd975f2a60b559bfdab9b4aa82cf573205fba9d23f28730485b9db52ed60343c7012e3b0279344d3010533008312cfb
7
+ data.tar.gz: 57384214846b5aa6c837e11be149fa2e33807f6f3933bdc195112dc3461d07dc88d11964a29cbab9cdf30424932b02e9bd8e111a3d9ba81db36bda5664222935
@@ -0,0 +1,15 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'core-ext/hash'
4
+
5
+ require 'akaynak/configuration'
6
+ require 'akaynak/data'
7
+ require 'akaynak/date'
8
+ require 'akaynak/xml_body'
9
+
10
+ module AKaynak
11
+ def self.root
12
+ File.expand_path('../..', __FILE__)
13
+ end
14
+ end
15
+
@@ -0,0 +1,23 @@
1
+ module AKaynak
2
+ # Used to set up and modify settings for the notifier.
3
+ class Configuration
4
+ attr_accessor :host
5
+ attr_accessor :port
6
+ attr_accessor :usercode
7
+ attr_accessor :password
8
+
9
+ def initialize
10
+ @host = 'data.altinkaynak.com'
11
+ @port = 80
12
+ end
13
+ end
14
+
15
+ class << self
16
+ attr_accessor :configuration
17
+ end
18
+
19
+ def self.configure
20
+ self.configuration ||= Configuration.new
21
+ yield configuration
22
+ end
23
+ end
@@ -0,0 +1,65 @@
1
+ module AKaynak
2
+ class Data
3
+ def self.get_currency(opts={})
4
+ final_result = {status: false, error_code: nil, error_message: nil}
5
+ #valid_options = opts.only(:from, :start_date, :stop_date, :turkish)
6
+ #valid_options.merge!(:start_date => NetGSM::DATE.now) unless valid_options[:start_date]
7
+ #valid_options.merge!(:stop_date => NetGSM::DATE.n_hour_from_now(1)) unless valid_options[:stop_date]
8
+
9
+ body = AKaynak::XmlBody.get_currency()
10
+
11
+ response = send_request(body)
12
+
13
+ result = parse_response(response)
14
+ if result
15
+ final_result[:status] = true
16
+ final_result[:result] = result
17
+ end
18
+ return final_result
19
+ end
20
+
21
+ def sms_status
22
+ 'OK status'
23
+ end
24
+
25
+ def check_balance
26
+ 'OK Balance'
27
+ end
28
+
29
+ def initialize(auth_options={})
30
+ @auth_options = auth_options
31
+ end
32
+
33
+ def self.send_request(body)
34
+ header = {
35
+ "Content-Type" => "text/xml; charset=utf-8",
36
+ "Content-Length" => body.bytesize.to_s,
37
+ "Accept" => "*/*"
38
+ }
39
+
40
+ request = Net::HTTP::Post.new('/DataService.asmx', header)
41
+ request.body = body
42
+ #puts "Request #{@header} #{request.body} "
43
+ response = Net::HTTP.new(AKaynak.configuration.host, AKaynak.configuration.port).start {|http| http.request(request) }
44
+ #puts "Response #{response.code} #{response.message}: #{response.body}"
45
+
46
+ # parser = XMLRPC::XMLParser::REXMLStreamParser::StreamListener.new
47
+ # parser.parse(response.body)
48
+
49
+ return response.body
50
+ end
51
+
52
+ def self.parse_response(body)
53
+ require 'active_support/core_ext/hash/conversions'
54
+ begin
55
+ result_hash = Hash.from_xml(body)
56
+ result_xml = result_hash["Envelope"]['Body']["GetCurrencyResponse"]["GetCurrencyResult"]
57
+ currency_hash = Hash.from_xml(result_xml)
58
+ return currency_hash
59
+ rescue Exception => e
60
+ puts "ERROR: #{e.message}"
61
+ return nil
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,15 @@
1
+ module AKaynak
2
+ class DATE
3
+ def self.now
4
+ format_date(Time.now)
5
+ end
6
+
7
+ def self.n_hour_from_now(duration)
8
+ format_date(Time.now + duration*60*60)
9
+ end
10
+
11
+ def self.format_date(date)
12
+ date.strftime('%d%m%Y%H%M')
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,36 @@
1
+ module AKaynak
2
+ class XmlBody
3
+ def self.get_currency()
4
+ result = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:data='http://data.altinkaynak.com/'>
5
+ <soapenv:Header>
6
+ <data:AuthHeader>
7
+ <data:Username>#{AKaynak.configuration.usercode}</data:Username>
8
+ <data:Password>#{AKaynak.configuration.password}</data:Password>
9
+ </data:AuthHeader>
10
+ </soapenv:Header>
11
+ <soapenv:Body>
12
+ <data:GetCurrency/>
13
+ </soapenv:Body>
14
+ </soapenv:Envelope>"
15
+
16
+ return result
17
+ end
18
+
19
+ def self.get_gold()
20
+ result = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:data='http://data.altinkaynak.com/'>
21
+ <soapenv:Header>
22
+ <data:AuthHeader>
23
+ <data:Username>#{AKaynak.configuration.usercode}</data:Username>
24
+ <data:Password>#{AKaynak.configuration.password}</data:Password>
25
+ </data:AuthHeader>
26
+ </soapenv:Header>
27
+ <soapenv:Body>
28
+ <data:GetGold/>
29
+ </soapenv:Body>
30
+ </soapenv:Envelope>"
31
+
32
+ #puts result
33
+ return result
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,16 @@
1
+ class Hash
2
+ # https://raw.github.com/lukeredpath/clickatell/master/lib/core-ext/hash.rb
3
+ # Returns a new hash containing only the keys specified
4
+ # that exist in the current hash.
5
+ #
6
+ # {:a => '1', :b => '2', :c => '3'}.only(:a, :c)
7
+ # # => {:a => '1', :c => '3'}
8
+ #
9
+ # Keys that do not exist in the original hash are ignored.
10
+ def only(*keys)
11
+ inject( {} ) do |new_hash, (key, value)|
12
+ new_hash[key] = value if keys.include?(key)
13
+ new_hash
14
+ end
15
+ end
16
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: akaynak
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.0'
5
+ platform: ruby
6
+ authors:
7
+ - IPOS - Huseyin Gomleksizoglu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-24 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This gem is for getting currency data from data.altinkaynak.com
14
+ email: huseyin.gomleksizoglu@ipos.com.tr
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/akaynak.rb
20
+ - lib/core-ext/hash.rb
21
+ - lib/akaynak/configuration.rb
22
+ - lib/akaynak/data.rb
23
+ - lib/akaynak/date.rb
24
+ - lib/akaynak/xml_body.rb
25
+ homepage: http://rubygems.org/gems/akaynak
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.1.11
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Get Currency data from data.altinkaynak.com
49
+ test_files: []
50
+ has_rdoc: