class Blinkbox::User

Attributes

accepted_terms_and_conditions[RW]
allow_marketing_communications[RW]
first_name[RW]
grant_type[RW]
last_name[RW]
password[RW]
username[RW]

Public Class Methods

new(params, auth_client = ZuulClient, cc_service_client = CreditCardServiceClient) click to toggle source
# File lib/blinkbox/user.rb, line 12
def initialize(params, auth_client = ZuulClient, cc_service_client = CreditCardServiceClient)
  @grant_type = params[:grant_type] || "password"
  @username = params[:username]
  @password = params[:password]

  # Default parameters only used when attempting to register
  @first_name = params[:first_name] || "Testy"
  @last_name = params[:last_name] || "McTesterson"
  @accepted_terms_and_conditions = params[:accepted_terms_and_conditions] || true
  @allow_marketing_communications = params[:allow_marketing_communications] || false

  auth_server_uri = params[:server_uri] || "https://auth.dev.bbbtest2.com"
  @auth_client = auth_client.new(auth_server_uri, params[:proxy_uri])

  credit_card_service_uri = params[:credit_card_service_uri] || "https://api.dev.bbbtest2.com"
  @cc_service_client = cc_service_client.new(credit_card_service_uri, params[:proxy_uri])
end

Public Instance Methods

add_default_credit_card(opts = {}) click to toggle source
# File lib/blinkbox/user.rb, line 69
def add_default_credit_card(opts = {})
  # setting up defaults
  opts[:braintree_env] ||= ENV['SERVER'] || 'dev_int'
  opts[:card_type] ||= 'mastercard'

  braintree_public_key = BRAINTREE_KEYS[opts[:braintree_env].to_sym]

  card_number_map = {
      'mastercard' => '5555555555554444',
      'visa' => '4111111111111111',
      'amex' => '378282246310005',
      'discover' => '6011111111111117',
      'jcb' => '3530111333300000'
  }
  card_number = card_number_map[opts[:card_type]]
  fail "Unrecognised card_type: #{opts[:card_type]}. Please use one of #{card_number_map.keys}" if card_number.nil?

  cvv = opts[:card_type].eql?('amex') ? '1234' : '123'

  @encrypted_card_number ||= BraintreeEncryption.encrypt(card_number, braintree_public_key)
  @encrypted_cvv ||= BraintreeEncryption.encrypt(cvv, braintree_public_key)
  @encrypted_expiration_month ||= BraintreeEncryption.encrypt('8', braintree_public_key)
  @encrypted_expiration_year ||= BraintreeEncryption.encrypt('2020', braintree_public_key)

  card_details = {
      default: true,
      number: @encrypted_card_number,
      cvv: @encrypted_cvv,
      expirationMonth: @encrypted_expiration_month,
      expirationYear: @encrypted_expiration_year,
      cardholderName: 'Jimmy Jib',
      billingAddress: { line1: "48 dollis rd", locality: "London", postcode: "n3 1rd" }
  }

  @cc_service_client.add_credit_card(@access_token, card_details)
end
authenticate() click to toggle source
# File lib/blinkbox/user.rb, line 34
def authenticate
  @auth_client.authenticate(user_credentials)
  res = @auth_client.last_response(:format => "json")

  res.keys.each do |key|
    instance_eval %Q{
      @#{key} = "#{res[key]}"
      User.class_eval{ attr_reader key.to_sym }
  }
  end
end
deregister_all_devices() click to toggle source
# File lib/blinkbox/user.rb, line 63
def deregister_all_devices
  get_devices.each do |device|
    deregister_device(device)
  end
end
deregister_device(device) click to toggle source
# File lib/blinkbox/user.rb, line 59
def deregister_device(device)
  @auth_client.deregister_client(device.id, @access_token)
end
get_devices() click to toggle source
# File lib/blinkbox/user.rb, line 46
def get_devices
  @auth_client.get_clients_info @access_token
  @device_clients = []
  @auth_client.last_response(:format => "json")['clients'].each do |dc|
    @device_clients.push(Device.new(dc))
  end
  @device_clients
end
register(client_options = {}) click to toggle source
# File lib/blinkbox/user.rb, line 30
def register(client_options = {})
  @auth_client.register_user(self, client_options)
end
register_device(params) click to toggle source
# File lib/blinkbox/user.rb, line 55
def register_device(params)
  @auth_client.register_client(Blinkbox::Device.new(params), @access_token)
end

Private Instance Methods

user_credentials() click to toggle source
# File lib/blinkbox/user.rb, line 108
def user_credentials
  { grant_type: @grant_type, username: @username, password: @password }
end