fosbury 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
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: []