Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions lib/chiketto.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ module Chiketto
require 'chiketto/ticket_class'
require 'chiketto/user'
require 'chiketto/venue'
require 'chiketto/contact_list'
require 'chiketto/contact'
require 'chiketto/webhook'
require 'chiketto/order'

class << self
attr_writer :api_key
Expand Down
6 changes: 6 additions & 0 deletions lib/chiketto/attendee.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ module Chiketto
class Attendee < Resource
attr_accessor :quantity,
:status,
:checked_in,
:costs,
:ticket_class_id,
:event_id,
:order_id,
Expand All @@ -15,5 +17,9 @@ class Attendee < Resource
def profile
AttendeeProfile.new @profile.to_h
end

def event
Event.new @event.to_h
end
end
end
2 changes: 2 additions & 0 deletions lib/chiketto/attendee_profile.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ class AttendeeProfile < Resource
:blog,
:gender,
:birth_date,
:home_phone,
:work_phone,
:cell_phone

def addresses
Expand Down
9 changes: 9 additions & 0 deletions lib/chiketto/contact.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module Chiketto
class Contact < Resource
attr_reader :first_name,
:last_name,
:email

attr_date :created
end
end
32 changes: 32 additions & 0 deletions lib/chiketto/contact_list.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
module Chiketto
class ContactList < Resource
attr_reader :name,
:user_id

def contacts
raise Exception.new("ContactList must have an id and user_id to get its Contacts") unless id && user_id

contacts = self.class.paginated(:contacts, id, { user_id: user_id })
contacts.map { |c| Contact.new c }
end

def add_contact(params)
raise Exception.new("ContactList must have an id and user_id to add a Contact") unless id && user_id
response = self.class.post("users/#{user_id}/contact_lists/#{id}/contacts", params)
response["created"]
end

def delete_contact(email)
raise Exception.new("ContactList must have an id and user_id to delete its Contacts") unless id && user_id
response = self.class.delete("users/#{user_id}/contact_lists/#{id}/contacts", { email: email })
response["deleted"]
end

private

def self.find_contacts(id, params)
user_id = params.delete(:user_id)
get "users/#{user_id}/contact_lists/#{id}/contacts", params
end
end
end
4 changes: 2 additions & 2 deletions lib/chiketto/event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ def self.create(params)
Event.new response
end

def self.find(id)
event = get "events/#{id}"
def self.find(id, params = {})
event = get "events/#{id}", params
Event.new event
end

Expand Down
27 changes: 27 additions & 0 deletions lib/chiketto/order.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module Chiketto
class Order < Resource
attr_accessor :name,
:first_name,
:last_name,
:email,
:costs,
:status,
:event_id

attr_date :created,
:changed

def event
Event.new @event.to_h
end

def attendees
@attendees.map { |attendee| Attendee.new attendee }
end

def self.find(id, params = {})
order = get "orders/#{id}", params
Order.new order
end
end
end
15 changes: 9 additions & 6 deletions lib/chiketto/resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,28 @@ def self.get(uri, params = {})
end

def self.post(uri, params = {})
uri = URI.parse endpoint(uri) + query(params)
resource = open_post uri
JSON.parse resource
http_call(Net::HTTP::Post, uri, params)
end

def self.delete(uri, params = {})
http_call(Net::HTTP::Delete, uri, params)
end

def self.endpoint(uri)
ENDPOINT + uri + token
end

def self.open_post(uri)
def self.http_call(type, uri, params)
uri = URI.parse endpoint(uri) + query(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request = type.new(uri.request_uri)
request.add_field 'Authorization', "Bearer #{Chiketto.api_key}"
response = http.request(request)
if response.code !~ /20\d/
raise Chiketto::Exception, JSON.parse(response.body)
end
response.body
JSON.parse response.body
end

def self.query(params)
Expand Down
19 changes: 19 additions & 0 deletions lib/chiketto/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,21 @@ def organizers
organizers['organizers'].map { |o| Organizer.new o }
end

def contact_lists(params = {})
contact_lists = User.paginated(:contact_lists, @id, params)
contact_lists.map { |cl| ContactList.new cl }
end

def find_contact_list(contact_list_id)
contact_list = User.get "users/#{@id}/contact_lists/#{contact_list_id}"
ContactList.new contact_list
end

def create_contact_list(params)
response = User.post "users/#{@id}/contact_lists/", params
ContactList.new response
end

private

def self.find_attendees(id, params)
Expand All @@ -46,6 +61,10 @@ def self.find_organizers(id)
get "users/#{id}/organizers"
end

def self.find_contact_lists(id, params)
get "users/#{id}/contact_lists", params
end

def self.paginated_events(id, params)
paginated(:events, id, params)
end
Expand Down
31 changes: 31 additions & 0 deletions lib/chiketto/webhook.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
module Chiketto
class Webhook < Resource
attr_accessor :endpoint_url,
:actions,
:user_id,
:event_id

attr_date :created

def delete
response = Webhook.delete "webhooks/#{id}"
response["success"]
end

def self.all(params = {})
hooks = paginated(:webhooks, nil, params)
hooks.map { |wh| Webhook.new wh }
end

def self.create(params)
webhook = post 'webhooks', params
Webhook.new webhook
end

private

def self.find_webhooks(id, params)
get 'webhooks', params
end
end
end
2 changes: 2 additions & 0 deletions test/attendee_profile_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ def test_exposes_data
assert_respond_to attendee_profile, :blog
assert_respond_to attendee_profile, :gender
assert_respond_to attendee_profile, :birth_date
assert_respond_to attendee_profile, :home_phone
assert_respond_to attendee_profile, :work_phone
assert_respond_to attendee_profile, :cell_phone
assert_respond_to attendee_profile, :addresses
end
Expand Down
7 changes: 7 additions & 0 deletions test/attendee_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ def test_exposes_data
assert_respond_to attendee, :ticket_class_id
assert_respond_to attendee, :quantity
assert_respond_to attendee, :status
assert_respond_to attendee, :checked_in
assert_respond_to attendee, :costs
assert_respond_to attendee, :profile
assert_respond_to attendee, :event_id
assert_respond_to attendee, :order_id
Expand All @@ -26,6 +28,11 @@ def test_attendee_returns_profile
assert_kind_of Chiketto::AttendeeProfile, attendee.profile
end

def test_attendee_returns_event
attendee = Chiketto::Attendee.new
assert_kind_of Chiketto::Event, attendee.event
end

def test_assigned_number_is_handled
attendee = Chiketto::Attendee.new assigned_number: 1
assert_equal attendee.assigned_number, 1
Expand Down
54 changes: 54 additions & 0 deletions test/contact_list_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
require 'test_helper'

class ContactListTest < MiniTest::Test
USER_ID = 56727857661
CONTACT_LIST_ID = 859438

def test_contact_list_exposes_data
contact_list = Chiketto::ContactList.new
assert_respond_to contact_list, :name
end

def test_contact_list_has_contacts
contact_list = Chiketto::ContactList.new({ id: CONTACT_LIST_ID, user_id: USER_ID })
VCR.use_cassette 'contact-list-contacts' do
assert_kind_of Chiketto::Contact, contact_list.contacts.first
end
end

def test_contact_list_without_user_id_contacts_raises_error
contact_list = Chiketto::ContactList.new({ id: CONTACT_LIST_ID })
assert_raises Chiketto::Exception do
contact_list.contacts
end
end

def test_contact_list_add_contact_returns_true
contact_list = Chiketto::ContactList.new({ id: CONTACT_LIST_ID, user_id: USER_ID })
params = { "contact.email" => "foo@bar.com", "contact.first_name" => "foo", "contact.last_name" => "bar" }
VCR.use_cassette 'contact-list-add-contact' do
assert_kind_of TrueClass, contact_list.add_contact(params)
end
end

def test_contact_list_without_user_id_add_contact_raises_error
contact_list = Chiketto::ContactList.new({ id: CONTACT_LIST_ID })
assert_raises Chiketto::Exception do
contact_list.add_contact({})
end
end

def test_contact_list_delete_contact_returns_true
contact_list = Chiketto::ContactList.new({ id: CONTACT_LIST_ID, user_id: USER_ID })
VCR.use_cassette 'contact-list-delete-contact' do
assert_kind_of TrueClass, contact_list.delete_contact("foo@bar.com")
end
end

def test_contact_list_without_user_id_delete_contact_raises_error
contact_list = Chiketto::ContactList.new({ id: CONTACT_LIST_ID })
assert_raises Chiketto::Exception do
contact_list.delete_contact("")
end
end
end
16 changes: 16 additions & 0 deletions test/contact_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
require 'test_helper'

class ContactTest < MiniTest::Test
def test_exposes_data
contact = Chiketto::Contact.new
assert_respond_to contact, :first_name
assert_respond_to contact, :last_name
assert_respond_to contact, :email
assert_respond_to contact, :created
end

def test_attr_date_types
contact = Chiketto::Contact.new created: "2014-02-11T02:52:10Z"
assert_kind_of DateTime, contact.created
end
end
43 changes: 43 additions & 0 deletions test/order_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
require 'test_helper'

class OrderTest < MiniTest::Test
ORDER_ID = 431012219

def find_order
VCR.use_cassette 'order-find' do
Chiketto::Order.find ORDER_ID
end
end

def test_exposes_data
order = Chiketto::Order.new
assert_respond_to order, :id
assert_respond_to order, :name
assert_respond_to order, :first_name
assert_respond_to order, :last_name
assert_respond_to order, :email
assert_respond_to order, :costs
assert_respond_to order, :status
assert_respond_to order, :event_id
end

def test_attr_date_types
order = Chiketto::Order.new created: "2014-02-11T02:52:10Z", changed: "2014-02-11T02:52:10Z"
assert_kind_of DateTime, order.created
assert_kind_of DateTime, order.changed
end

def test_order_find
assert_kind_of Chiketto::Order, find_order
end

def test_order_has_event
order = find_order
assert_kind_of Chiketto::Event, order.event
end

def test_order_has_attendees
order = find_order
assert_kind_of Chiketto::Attendee, order.attendees.first
end
end
Loading