fosbury 0.9.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.
Files changed (3) hide show
  1. data/lib/fosbury/client.rb +165 -0
  2. data/lib/fosbury.rb +11 -0
  3. metadata +95 -0
@@ -0,0 +1,165 @@
1
+ require 'rest_client'
2
+ require 'json'
3
+
4
+ module Fosbury
5
+ class Client
6
+
7
+ @endpoint
8
+
9
+ def initialize
10
+ @endpoint = Fosbury.endpoint || "https://app.fosbury.co/api/v1/"
11
+ end
12
+
13
+ def get_templates
14
+ get "#{@endpoint}templates"
15
+ end
16
+
17
+ def get_campaigns
18
+ get "#{@endpoint}campaigns"
19
+ end
20
+
21
+ def get_passes
22
+ get "#{@endpoint}passes"
23
+ end
24
+
25
+ def get_template id
26
+ get "#{@endpoint}templates/#{id}"
27
+ end
28
+
29
+ def get_campaign id
30
+ get "#{@endpoint}campaigns/#{id}"
31
+ end
32
+
33
+ def get_pass id
34
+ get "#{@endpoint}passes/#{id}"
35
+ end
36
+
37
+ def create_template name, style, options={}
38
+ options[:name] = name
39
+ options[:style] = style
40
+
41
+ post "#{@endpoint}templates", options
42
+ end
43
+
44
+ def create_campaign template_id, options={}
45
+ options[:template_id] = template_id
46
+ post "#{@endpoint}campaigns", options
47
+ end
48
+
49
+ def create_pass campaign_id, options={}
50
+ raise "Please provide a campaign_id" if campaign_id.nil?
51
+ options[:campaign_id] = campaign_id
52
+ post "#{@endpoint}passes", options
53
+ end
54
+
55
+ def update_template template_id, options={}
56
+ raise "Please provide a template_id" if template_id.nil?
57
+ put "#{@endpoint}tempates/#{template_id}", options
58
+ end
59
+
60
+ def update_campaign campaign_id, options={}
61
+ raise "Please provide a campaign_id" if campaign_id.nil?
62
+ put "#{@endpoint}campaigns/#{campaign_id}", options
63
+ end
64
+
65
+ def update_pass pass_id, options={}
66
+ put "#{@endpoint}passes/#{pass_id}", options
67
+ end
68
+
69
+ # NOTE: Deprecated: Use update_pass instead, still here for legacy reasons
70
+ def update pass_id, options={}
71
+ update_pass(pass_id, options)
72
+ end
73
+
74
+ def delete_template teplate_id
75
+ delete "#{@endpoint}tempates/#{template_id}"
76
+ end
77
+
78
+ def delete_campaign campaign_id
79
+ delete "#{@endpoint}campaigns/#{campaign_id}"
80
+ end
81
+
82
+ def delete_pass pass_id
83
+ delete "#{@endpoint}passes/#{pass_id}"
84
+ end
85
+
86
+ # NOTE: Deprecated: Use push_pass instead, still here for legacy reasons
87
+ def push pass_id, options={}
88
+ push_pass(pass_id, options)
89
+ end
90
+
91
+ def push_pass pass_id, options={}
92
+ put "#{@endpoint}passes/#{pass_id}/push", options
93
+ end
94
+
95
+ def distribute_campaign campaign_id
96
+ raise "Please provide a campaign_id" if campaign_id.nil?
97
+ post "#{@endpoint}campaigns/#{campaign_id}/distribute"
98
+ end
99
+
100
+ def get_campaign_locations campaign_id
101
+ raise "Please provide a campaign_id" if campaign_id.nil?
102
+ get "#{@endpoint}/campaigns/#{campaign_id}/locations"
103
+ end
104
+
105
+ def create_campaign_location campaign_id, lat, long, name, address=''
106
+ raise "Please provide a campaign_id" if campaign_id.nil?
107
+ options = { campaign_id: campaign_id, lat: lat, long: long, name: name, address: address }
108
+ post "#{@endpoint}campaigns/#{campaign_id}/locations", options
109
+ end
110
+
111
+ def delete_campaign_location campaign_id, location_id
112
+ raise "Please provide a campaign_id" if campaign_id.nil?
113
+ raise "Please provide a location_id" if location_id.nil?
114
+ delete "#{@endpoint}/campaigns/#{campaign_id}/locations/#{location_id}"
115
+ end
116
+
117
+ def get_campaign_backfields campaign_id
118
+ raise "Please provide a campaign_id" if campaign_id.nil?
119
+ get "#{@endpoint}/campaigns/#{campaign_id}/backfields"
120
+ end
121
+
122
+ def create_campaign_backfield campaign_id, title, description
123
+ raise "Please provide a campaign_id" if campaign_id.nil?
124
+ options = { title: title, description: description }
125
+ post "#{@endpoint}campaigns/#{campaign_id}/backfields", options
126
+ end
127
+
128
+ def delete_campaign_backfield campaign_id, backfield_id
129
+ raise "Please provide a campaign_id" if campaign_id.nil?
130
+ raise "Please provide a backfield_id" if backfield_id.nil?
131
+ delete "#{@endpoint}/campaigns/#{campaign_id}/backfields/#{location_id}"
132
+ end
133
+
134
+ private
135
+
136
+ def get url
137
+ response = RestClient.get url, get_headers
138
+ parse(response.to_s)
139
+ end
140
+
141
+ def post url, payload=''
142
+ response = RestClient.post url, payload, get_headers
143
+ parse(response.to_s)
144
+ end
145
+
146
+ def put url, payload=''
147
+ response = RestClient.put url, payload, get_headers
148
+ parse(response.to_s)
149
+ end
150
+
151
+ def delete url
152
+ RestClient.delete url, get_headers
153
+ end
154
+
155
+ def parse json_str
156
+ return nil if json_str.empty?
157
+ JSON.parse(json_str)
158
+ end
159
+
160
+ def get_headers
161
+ raise "No authentication token provided. Use Fosbury.authentication_token = 'yourtoken' first" if Fosbury.authentication_token.nil?
162
+ {'X-Fosbury-Token' => Fosbury.authentication_token}
163
+ end
164
+ end
165
+ end
data/lib/fosbury.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'fosbury/client'
2
+ require 'active_support/core_ext/module/attribute_accessors'
3
+
4
+ module Fosbury
5
+
6
+ mattr_accessor :authentication_token, :endpoint
7
+
8
+ def self.configure
9
+ yield self
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fosbury
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Willem Spruijt
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.6.7
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.6.7
30
+ - !ruby/object:Gem::Dependency
31
+ name: activesupport
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 3.2.13
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 3.2.13
46
+ - !ruby/object:Gem::Dependency
47
+ name: json
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.8.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.0
62
+ description: Fosbury (http://www.fosbury.co) API client for Ruby. Fosbury is a platform
63
+ to create and manage iOS Passbook campaigns.
64
+ email: willem@fosbury.co
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - lib/fosbury.rb
70
+ - lib/fosbury/client.rb
71
+ homepage: http://rubygems.org/gems/fosbury
72
+ licenses: []
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.25
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: Fosbury API client
95
+ test_files: []