Class: Camdram::Client

Inherits:
Object
  • Object
show all
Includes:
API
Defined in:
lib/camdram/client.rb

Instance Attribute Summary collapse

Attributes included from API

#http

Instance Method Summary collapse

Methods included from API

#update!

Constructor Details

#initializeCamdram::Client

Initializes a new Client object using a block



21
22
23
24
25
26
27
# File 'lib/camdram/client.rb', line 21

def initialize
  if !block_given?
    warn 'Camdram::Client instantiated without config block - did you mean to add an API key?'
  else
    yield(self)
  end
end

Instance Attribute Details

#api_tokenObject

Returns the value of attribute api_token.



16
17
18
# File 'lib/camdram/client.rb', line 16

def api_token
  @api_token
end

Instance Method Details

#api_token?Boolean

Returns true if the API access token is set

Returns:

  • (Boolean)

    Whether the API token is set or not.



32
33
34
# File 'lib/camdram/client.rb', line 32

def api_token?
  HTTP.instance.api_token?
end

#base_urlString

Returns the API URL that each HTTP request is sent to

Returns:

  • (String)

    The API hostname to send requests to.



47
48
49
# File 'lib/camdram/client.rb', line 47

def base_url
  HTTP.instance.base_url
end

#base_url=(url) ⇒ String

Sets the API URL that each HTTP request is sent to

Parameters:

  • url (String)

    The API hostname to send requests to.

Returns:

  • (String)

    The url itself.



55
56
57
# File 'lib/camdram/client.rb', line 55

def base_url=(url)
  HTTP.instance.base_url = url
end

#diary(start_date = nil, end_date = nil) ⇒ Camdram::Diary

Gets a diary object which contains an array of upcoming calendar events

Returns:



200
201
202
203
204
205
206
207
# File 'lib/camdram/client.rb', line 200

def diary(start_date=nil, end_date=nil)
  url = "/diary.json"
  if start_date && end_date
    url = "/diary/#{start_date}.json?end=#{end_date}"
  end
  response = get(url)
  Diary.new(response)
end

#get_org(id) ⇒ Camdram::Organisation

Lookup an organisation by its ID or slug

Parameters:

  • id (Integer)

    The numeric ID of the organisation.

  • id (String)

    The slug of the organisation.

Returns:

Raises:

  • (ArgumentError)

    Error raised when an integer or string is not provided.



109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/camdram/client.rb', line 109

def get_org(id)
  url = nil
  if id.is_a? Integer
    url = "#{Organisation.url}/by-id/#{id}.json"
  elsif id.is_a? String
    url = "#{Organisation.url}/#{id}.json"
  else
    raise ArgumentError.new 'id must be an integer, or slug must be a string'
  end
  response = get(url)
  Organisation.new(response)
end

#get_orgsArray

Returns an array of all registered organisations

Returns:

  • (Array)

    An array of Organisation objects.



163
164
165
166
167
# File 'lib/camdram/client.rb', line 163

def get_orgs
  url = "#{Organisation.url}.json"
  response = get(url)
  split_object( response, Organisation )
end

#get_peopleArray

Returns an array containing a sample of people taking part in shows this week

Returns:

  • (Array)

    An array of Role objects.



181
182
183
184
185
# File 'lib/camdram/client.rb', line 181

def get_people
  url = "#{Person.url}.json"
  response = get(url)
  split_object( response, Role )
end

#get_person(id) ⇒ Camdram::Person

Lookup a person by their ID or slug

Parameters:

  • id (Integer)

    The numeric ID of the person.

  • id (String)

    The person’s slug.

Returns:

Raises:

  • (ArgumentError)

    Error raised when an integer or string is not provided.



147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/camdram/client.rb', line 147

def get_person(id)
  url = nil
  if id.is_a? Integer
    url = "#{Person.url}/by-id/#{id}.json"
  elsif id.is_a? String
    url = "#{Person.url}/#{id}.json"
  else
    raise ArgumentError.new 'id must be an integer, or slug must be a string'
  end
  response = get(url)
  Person.new(response)
end

#get_show(id) ⇒ Camdram::Show

Lookup a show by its ID or slug

Parameters:

  • id (Integer)

    The numeric ID of the show.

  • id (String)

    The slug of the show.

Returns:

Raises:

  • (ArgumentError)

    Error raised when an integer or string is not provided.



90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/camdram/client.rb', line 90

def get_show(id)
  url = nil
  if id.is_a? Integer
    url = "#{Show.url}/by-id/#{id}.json"
  elsif id.is_a? String
    url = "#{Show.url}/#{id}.json"
  else
    raise ArgumentError.new 'id must be an integer, or slug must be a string'
  end
  response = get(url)
  return Show.new(response)
end

#get_venue(id) ⇒ Camdram::Venue

Lookup a venue by its ID or slug

Parameters:

  • id (Integer)

    The numeric ID of the venue.

  • id (String)

    The slug of the venue.

Returns:

Raises:

  • (ArgumentError)

    Error raised when an integer or string is not provided.



128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/camdram/client.rb', line 128

def get_venue(id)
  url = nil
  if id.is_a? Integer
    url = "#{Venue.url}/by-id/#{id}.json"
  elsif id.is_a? String
    url = "#{Venue.url}/#{id}.json"
  else
    raise ArgumentError.new 'id must be an integer, or slug must be a string'
  end
  response = get(url)
  Venue.new(response)
end

#get_venuesArray

Returns an array of all registered venues

Returns:

  • (Array)

    An array of Venue objects.



172
173
174
175
176
# File 'lib/camdram/client.rb', line 172

def get_venues
  url = "#{Venue.url}.json"
  response = get(url)
  split_object( response, Venue )
end

#search(query, limit = 10, page = 1) ⇒ Array

Return an array of search entity results based on a search string

Parameters:

  • query (String)

    The query string to search with.

Returns:

  • (Array)

    An array of Search objects.



191
192
193
194
195
# File 'lib/camdram/client.rb', line 191

def search(query, limit=10, page=1)
  url = "/search.json?q=#{query}&limit=#{limit}&page=#{page}"
  response = get(url)
  split_object( response, Search )
end

#termly_diary(year, term = nil) ⇒ Camdram::Diary

Gets a diary object which contains an array of events occuring in the given year/term

Returns:



212
213
214
215
216
217
218
# File 'lib/camdram/client.rb', line 212

def termly_diary(year, term=nil)
  url = "/diary/#{year}"
  url << "/#{term}" if term
  url << ".json"
  response = get(url)
  Diary.new(response)
end

#userCamdram::User

Returns the user associated with the API token if set, otherwise raises an exception

Returns:

Raises:

  • (StandardError)

    Error raised when the API token is not set.



78
79
80
81
82
# File 'lib/camdram/client.rb', line 78

def user
  slug = "/auth/account.json"
  response = get(slug)
  User.new(response)
end

#user_agentString

Returns the user agent header sent in each HTTP request

Returns:

  • (String)

    The user agent header to send with HTTP requests.



62
63
64
# File 'lib/camdram/client.rb', line 62

def user_agent
  HTTP.instance.user_agent
end

#user_agent=(agent) ⇒ String

Sets the user agent header sent in each HTTP request

Parameters:

  • agent (String)

    The user agent header to send with HTTP requests.

Returns:

  • (String)

    The agent string itself.



70
71
72
# File 'lib/camdram/client.rb', line 70

def user_agent=(agent)
  HTTP.instance.user_agent = agent
end

#versionString

Returns the program version that is currently running

Returns:

  • (String)

    The version of camdram-ruby that is currently running.



223
224
225
# File 'lib/camdram/client.rb', line 223

def version
  Camdram::VERSION
end