gifter_hub 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '09f63e0a88503aa16775780f45a00738093f74a2'
4
- data.tar.gz: b39b088c807a2ef5093f12035c3c246c18410837
3
+ metadata.gz: c7defb41a5e8993cf87b5267687a41aee0e9dc49
4
+ data.tar.gz: fa4afb84cfbd7644a8d47c61dc49ec2e73aa630c
5
5
  SHA512:
6
- metadata.gz: c11e55e691effe61d7ec85e88c86d073ba4ca7ad0e56784d00fce12b9bd1a5295768f38cdd202edcd6dcb3d43f278df15e35be33de27aeb31f176fbafaca7912
7
- data.tar.gz: 3f6df7daec9faea4d12932bb3ce302e95ae52a43b84865eb4e4505bc0dcff58fb4b7c811b29a32af24d5778c3479e2eac38159f6e8d18fc318bebecf60f52245
6
+ metadata.gz: 510d7152ffb95850da530658f126bbd14dc4cf1187c802137c02d9dd6966f529a184445840a72c307cbefd6b8c6e337acafdeb044d9b7218bd673dd7c16f8e6c
7
+ data.tar.gz: 11dcb9cf1a4004febf2d7ebfb437760c5cffc01e2087f20cf6e0d1db2c8b0320e32e88a8eb48293be3b230479fd9da4ba39da8333b4b56d027a3ab46ed588f19
@@ -0,0 +1,77 @@
1
+ module GifterHub
2
+ class ApiResource
3
+ include Operations::Get
4
+ attr_accessor :id, :opts
5
+
6
+ def initialize(id=nil, opts={})
7
+ @id = id
8
+ @opts = opts
9
+ @values = {}
10
+ end
11
+
12
+ def self.class_name
13
+ self.name.split('::')[-1]
14
+ end
15
+
16
+ def self.resource_url
17
+ if self == ApiResource
18
+ raise NotImplementedError
19
+ end
20
+ "/api#{CGI.escape(class_name.tableize)}"
21
+ end
22
+
23
+ def self.get(id, opts={})
24
+ instance = self.new(id, opts)
25
+ instance.refresh
26
+ end
27
+
28
+ def resource_url
29
+ "#{self.class.resource_url}/#{CGI.escape(id)}"
30
+ end
31
+
32
+ def refresh
33
+ response = request(:get, resource_url, opts)
34
+ initialize_from(response, opts)
35
+ end
36
+
37
+ private
38
+
39
+ def self.check_id!(id)
40
+ raise TypeError.new('id should be a string') unless id.is_a? String
41
+ id
42
+ end
43
+
44
+ def protected_fields
45
+ []
46
+ end
47
+
48
+ # Convert hash key value pair to method
49
+ def initialize_from(values, opts={})
50
+ @opts = opts
51
+ added = Set.new(values.keys - @values.keys)
52
+ instance_eval do
53
+ add_accessors(added, values)
54
+ end
55
+ self
56
+ end
57
+
58
+ def add_accessors(keys, values)
59
+ f = protected_fields
60
+ metaclass.instance_eval do
61
+ keys.each do |k|
62
+ next if f.include?(k)
63
+ define_method(k) { values[k] }
64
+
65
+ if [FalseClass, TrueClass].include?(values[k].class)
66
+ k_bool = :"#{k}?"
67
+ define_method(k_bool) { values[k] }
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ def metaclass
74
+ class << self; self; end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,6 @@
1
+ module GifterHub
2
+ module Errors
3
+ class ApiConnectionError < BambooError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module GifterHub
2
+ module Errors
3
+ class ApiError < BambooError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,28 @@
1
+ module GifterHub
2
+ module Errors
3
+ class BambooError < StandardError
4
+ attr_reader :message
5
+ attr_reader :http_status
6
+ attr_reader :http_body
7
+ attr_reader :http_headers
8
+ attr_reader :request_id
9
+ attr_reader :json_body
10
+
11
+ def initialize(message=nil, http_status=nil, http_body=nil, json_body=nil,
12
+ http_headers=nil)
13
+ @message = message
14
+ @http_status = http_status
15
+ @http_body = http_body
16
+ @http_headers = http_headers || {}
17
+ @json_body = json_body
18
+ @request_id = @http_headers[:request_id]
19
+ end
20
+
21
+ def to_s
22
+ status_string = @http_status.nil? ? "" : "(Status #{@http_status}) "
23
+ id_string = @request_id.nil? ? "" : "(Request #{@request_id}) "
24
+ "#{status_string}#{id_string}#{@message}"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,14 @@
1
+ module GifterHub
2
+ class GiftCard < ApiResource
3
+ extend Operations::Create
4
+
5
+ def redeem(params)
6
+ response = request(:post, redeem_url, params)
7
+ initialize_from(response)
8
+ end
9
+
10
+ def redeem_url
11
+ resource_url + "/redeem"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module GifterHub
2
+ module Operations
3
+ module Create
4
+ def create(params={}, opts={})
5
+ request(:post, resource_url, params, opts)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,6 +1,6 @@
1
1
  module GifterHub
2
2
  module Operations
3
- module Request
3
+ module Get
4
4
  module ClassMethods
5
5
  def request(method, url, params={}, opts={})
6
6
  GifterHub.request(method, url, params, opts)
@@ -1,3 +1,3 @@
1
1
  module GifterHub
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/gifter_hub.rb CHANGED
@@ -1,16 +1,20 @@
1
1
  require "rest-client"
2
2
  require "byebug"
3
3
  require 'json'
4
+ require 'active_support/inflector'
4
5
 
5
6
 
6
7
  require "gifter_hub/version"
7
8
  require "gifter_hub/util"
8
- require "gifter_hub/operations/request"
9
- require "gifter_hub/gift_cards"
9
+ require "gifter_hub/operations/get"
10
+ require "gifter_hub/operations/create"
11
+
12
+ require "gifter_hub/api_resource"
13
+ require "gifter_hub/gift_card"
10
14
 
11
15
  module GifterHub
12
16
  @api_version = nil
13
- @api_base = 'https://gifter.openfan.net/api'
17
+ @api_base = 'https://gifter.openfan.net'
14
18
  @api_key = nil
15
19
 
16
20
  class << self
@@ -37,7 +41,10 @@ module GifterHub
37
41
  api_base_url = api_base_url || @api_base
38
42
  request_opts = {}
39
43
  url = api_url(url, api_base_url)
40
- params.merge!(company_token: company_token)
44
+
45
+ headers = {
46
+ 'Access-Token' => company_token
47
+ }
41
48
 
42
49
  case method.to_s.downcase.to_sym
43
50
  when :get, :head, :delete
@@ -49,6 +56,7 @@ module GifterHub
49
56
  end
50
57
 
51
58
  request_opts.update(method: method,
59
+ headers: headers,
52
60
  payload: payload,
53
61
  url: url)
54
62
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gifter_hub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Devhub
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-12 00:00:00.000000000 Z
11
+ date: 2018-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -91,8 +91,13 @@ files:
91
91
  - bin/setup
92
92
  - gifter_hub.gemspec
93
93
  - lib/gifter_hub.rb
94
- - lib/gifter_hub/gift_cards.rb
95
- - lib/gifter_hub/operations/request.rb
94
+ - lib/gifter_hub/api_resource.rb
95
+ - lib/gifter_hub/errors/api_connection_error.rb
96
+ - lib/gifter_hub/errors/api_error.rb
97
+ - lib/gifter_hub/errors/bamboo_error.rb
98
+ - lib/gifter_hub/gift_card.rb
99
+ - lib/gifter_hub/operations/create.rb
100
+ - lib/gifter_hub/operations/get.rb
96
101
  - lib/gifter_hub/util.rb
97
102
  - lib/gifter_hub/version.rb
98
103
  homepage: https://www.devhub.co/
@@ -1,29 +0,0 @@
1
- module GifterHub
2
- class GiftCards
3
-
4
- include Operations::Request
5
-
6
- class << self
7
- def purchase(params)
8
- url = request_url + 'purchase'
9
- request(:post, url, {
10
- amount: params[:amount],
11
- purchase_price: params[:purchase_price]
12
- })
13
- end
14
-
15
- def redeem(params)
16
- url = request_url + 'redeem'
17
- request(:post, url, {
18
- amount: params[:amount],
19
- id: params[:id]
20
- })
21
- end
22
-
23
-
24
- def request_url
25
- '/gift_cards/'
26
- end
27
- end
28
- end
29
- end