infobip-twofactor 1.0.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5e31fd0716a9b302a593c60f0eadbdb5dcd04a7
4
- data.tar.gz: 2ab4169ba41545cc68366f3f5f9e5801b3873676
3
+ metadata.gz: cfbd3770741ba8e91f7360ef0950e720e6fee09d
4
+ data.tar.gz: 8f0f0b96891ca2a5142aaa4ef0089d56806bcde0
5
5
  SHA512:
6
- metadata.gz: a60e6bfbf5a5ee6051b196daf0b3e9b3c92c576bcea52cdc851a2c03de90f51396a7982bc80f6eccbfb9424a0ba092bcc6fe5f75ba0db9de56b8f1e5d737d24a
7
- data.tar.gz: bb8d091f16eea12c75b945aebd83c0c2633c044cadefe8eb37bac8a10eafc937900eb9d48fef1951905969dc97f0f79c4f8a35b38e268af5bd84336363cbbab0
6
+ metadata.gz: 2a6b51186e3a88c83da88ad069a82748e804279c1322f5d6a5a289108d9c3c5a83cb976c1e05e61827d96352ce5e1fdc7155fb4d66be6131a13a127ea6c746e9
7
+ data.tar.gz: ec8b79b164a173dece4aadfd8333cd6554583b06c9d436185087c277b3df1d3fc564811522c8f5bec09a6326879486269df9e72070bf6dbbab59d1197983179c
data/Guardfile CHANGED
@@ -10,7 +10,7 @@ guard :bundler do
10
10
  files.each { |file| watch(helper.real_path(file)) }
11
11
  end
12
12
 
13
- guard :rspec, cmd: "bundle exec rspec" do
13
+ guard :rspec, cmd: "bundle exec rspec --fail-fast" do
14
14
  require "guard/rspec/dsl"
15
15
  dsl = Guard::RSpec::Dsl.new(self)
16
16
 
data/Rakefile CHANGED
@@ -1,2 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
+ task :console do
4
+ exec "irb -r twofactor -I ./lib/infobip"
5
+ end
@@ -19,8 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- # spec.add_runtime_dependency "blanket_wrapper"
23
- spec.add_runtime_dependency "crib"
24
22
 
25
23
  spec.add_development_dependency "bundler", "~> 1.7"
26
24
  spec.add_development_dependency "rake", "~> 10.0"
@@ -31,6 +29,5 @@ Gem::Specification.new do |spec|
31
29
  spec.add_development_dependency "guard-bundler"
32
30
  spec.add_development_dependency "terminal-notifier-guard"
33
31
  spec.add_development_dependency "fakeweb"
34
- # spec.add_development_dependency "pry-nav"
35
32
 
36
33
  end
@@ -1,5 +1,6 @@
1
- require 'crib'
2
- require 'base64'
1
+ require 'net/https'
2
+ require 'uri'
3
+ require 'JSON'
3
4
 
4
5
  module Infobip
5
6
  module Twofactor
@@ -12,41 +13,44 @@ module Infobip
12
13
  def initialize(username, password, url, message_id, application_id)
13
14
  raise "Missing message_id" unless message_id
14
15
  raise "Missing application_id" unless application_id
15
- #send auth reqest
16
- @authorization_string = Base64.strict_encode64("#{username}:#{password}")
17
16
  @message_id = message_id
18
17
  @application_id = application_id
19
-
20
- @auth = Crib.api(url) do |http|
21
- http.headers[:authorization] = "Basic #{@authorization_string}"
22
- end
23
-
24
- #get and save api key
25
- @api_key = @auth.send("api-key")._post.gsub('"','')
26
- @api = Crib.api(url) do |http|
27
- http.headers[:authorization] = "App #{@api_key}"
28
- http.headers["content-type"] = "application/json"
29
- end
30
-
18
+ @url = url
19
+ uri = URI.parse(@url+"/api-key")
20
+ @http = Net::HTTP.new(uri.host, 443)
21
+ @http.use_ssl = true
22
+ request = Net::HTTP::Post.new(uri.path)
23
+ request.basic_auth(username,password)
24
+ request["content-type"] = "application/json"
25
+ @api_key = @http.request(request).body.gsub('"','')
31
26
  end
32
27
 
33
-
34
28
  def send_pin(phone)
35
29
  raise "Missing phone number" unless phone
36
30
  raise "Missing message_id" unless @message_id
37
31
  raise "Missing application_id" unless @application_id
38
- response = @api.pin._post(applicationId: @application_id, messageId: @message_id, to: phone)
39
- raise "Malformed two factor API response - no sms status field" unless (response.respond_to?(:smsStatus))
40
- raise "Malformed two factor API response - no pin Id field" unless (response.respond_to?(:pinId))
41
- raise "SMS not sent" unless (response.smsStatus == "MESSAGE_SENT")
42
- @pin_id = response[:pinId]
32
+ uri = URI.parse(@url+"/pin")
33
+ request = Net::HTTP::Post.new(uri.path)
34
+ request["authorization"] = "App #{@api_key}"
35
+ request["content-type"] = "application/json"
36
+ request.body = {applicationId: @application_id, messageId: @message_id, to: phone}.to_json
37
+ response = JSON.parse @http.request(request).body
38
+ raise "Malformed two factor API response - no sms status field. Response was: #{response.inspect}" if (response["smsStatus"].nil?)
39
+ raise "Malformed two factor API response - no pin Id field. Response was: #{response.inspect}" if (response["pinId"].nil?)
40
+ raise "SMS not sent" unless (response["smsStatus"] == "MESSAGE_SENT")
41
+ @pin_id = response["pinId"]
43
42
  response
44
43
  end
45
44
 
46
45
  def verify_pin(pin_id, pin)
47
46
  raise "Missing pin id" unless pin_id
48
- response = @api.pin(pin_id).verify._post(pin: pin)
49
- raise "Malformed two factor API response - no verified field" unless (response.respond_to?(:verified))
47
+ uri = URI.parse(@url+"/pin/#{pin_id}/verify")
48
+ request = Net::HTTP::Post.new(uri.path)
49
+ request["content-type"] = "application/json"
50
+ request["authorization"] = "App #{@api_key}"
51
+ request.body = {pin: pin}.to_json
52
+ response = JSON.parse @http.request(request).body
53
+ raise "Malformed two factor API response - no verified field. Response was: #{response.inspect}" if (response["verified"].nil?)
50
54
  response
51
55
  end
52
56
 
@@ -1,5 +1,5 @@
1
1
  module Infobip
2
2
  module Twofactor
3
- VERSION = "1.0.1"
3
+ VERSION = "1.0.3"
4
4
  end
5
5
  end
@@ -9,10 +9,9 @@ describe Infobip::Twofactor::API do
9
9
  before do
10
10
  @configuration = YAML.load_file("configuration.yml")
11
11
 
12
- FakeWeb.register_uri(:post, "http://ippdok:4%40SkK2*_@oneapi-test.infobip.com/2fa/1/api-key", status: ["200", "OK"], body: api_key_response_body)
13
- FakeWeb.register_uri(:post, "http://oneapi-test.infobip.com/2fa/1/pin", response: api_send_pin_response)
14
- FakeWeb.register_uri(:post, "http://oneapi-test.infobip.com/2fa/1/pin/2B29B71922B37D3C93F8CEBB85B9E3CF/verify", response: api_verify_pin_response)
15
-
12
+ FakeWeb.register_uri(:post, "https://ippdok:4%40SkK2*_@oneapi.infobip.com/2fa/1/api-key", status: ["200", "OK"], body: api_key_response_body)
13
+ FakeWeb.register_uri(:post, "https://oneapi.infobip.com/2fa/1/pin", response: api_send_pin_response)
14
+ FakeWeb.register_uri(:post, "https://oneapi.infobip.com/2fa/1/pin/2B29B71922B37D3C93F8CEBB85B9E3CF/verify", response: api_verify_pin_response)
16
15
  @twofactor = Infobip::Twofactor::API.new(@configuration["username"], @configuration["password"], @configuration["url"], @configuration["message_id"], @configuration["application_id"])
17
16
  end
18
17
 
@@ -25,13 +24,13 @@ describe Infobip::Twofactor::API do
25
24
 
26
25
  it "should create a valid Send PIN request, given valid params" do
27
26
  response = subject.send_pin("48790809242")
28
- expect(response[:smsStatus]).to eq "MESSAGE_SENT"
27
+ expect(response["smsStatus"]).to eq "MESSAGE_SENT"
29
28
  end
30
29
 
31
30
  it "should create a valid Verify PIN request, given valid params" do
32
31
  response = subject.send_pin("48790809242")
33
32
  response = subject.verify_pin("2B29B71922B37D3C93F8CEBB85B9E3CF", "1234")
34
- expect(response[:verified]).to eq true
33
+ expect(response["verified"]).to eq true
35
34
  end
36
35
 
37
36
  context "error handling" do
@@ -48,4 +47,4 @@ describe Infobip::Twofactor::API do
48
47
 
49
48
  end
50
49
 
51
- end
50
+ end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infobip-twofactor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - knx
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-22 00:00:00.000000000 Z
11
+ date: 2015-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: crib
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement