-
Notifications
You must be signed in to change notification settings - Fork 137
/
protocol.rb
129 lines (96 loc) · 3.76 KB
/
protocol.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
module Parse
# A module which encapsulates the specifics of Parse's REST API.
module Protocol
# Basics
# ----------------------------------------
# The default hostname for communication with the Parse API.
HOST = "api.parse.com"
# The version of the REST API implemented by this module.
VERSION = 1
# HTTP Headers
# ----------------------------------------
# The HTTP header used for passing your application ID to the
# Parse API.
HEADER_APP_ID = "X-Parse-Application-Id"
# The HTTP header used for passing your API key to the
# Parse API.
HEADER_API_KEY = "X-Parse-REST-API-Key"
# JSON Keys
# ----------------------------------------
# The JSON key used to store the class name of an object
# in a Pointer datatype.
KEY_CLASS_NAME = "className"
# The JSON key used to store the ID of Parse objects
# in their JSON representation.
KEY_OBJECT_ID = "objectId"
# The JSON key used to store the creation timestamp of
# Parse objects in their JSON representation.
KEY_CREATED_AT = "createdAt"
# The JSON key used to store the last modified timestamp
# of Parse objects in their JSON representation.
KEY_UPDATED_AT = "updatedAt"
# The JSON key used in the top-level response object
# to indicate that the response contains an array of objects.
RESPONSE_KEY_RESULTS = "results"
KEY_RESULTS = RESPONSE_KEY_RESULTS
# The JSON key used to identify an operator in the increment/decrement
# API call.
KEY_OP = "__op"
KEY_INCREMENT = "Increment"
KEY_DECREMENT = "Decrement"
# The JSON key used to identify the datatype of a special value.
KEY_TYPE = "__type"
# The JSON key used to specify the numerical value in the
# increment/decrement API call.
KEY_AMOUNT = "amount"
RESERVED_KEYS = [ KEY_CLASS_NAME, KEY_CREATED_AT, KEY_OBJECT_ID ]
# Other Constants
# ----------------------------------------
# Operation name for incrementing an objects field value remotely
OP_INCREMENT = "Increment"
# Operation name for decrementing an objects field value remotely
OP_DECREMENT = "Decrement"
# The data type name for special JSON objects representing a reference
# to another Parse object.
TYPE_POINTER = "Pointer"
# The data type name for special JSON objects containing an array of
# encoded bytes.
TYPE_BYTES = "Bytes"
# The data type name for special JSON objects representing a date/time.
TYPE_DATE = "Date"
# The data type name for special JSON objects representing a
# location specified as a latitude/longitude pair.
TYPE_GEOPOINT = "GeoPoint"
# The data type name for special JSON objects representing
# a file.
TYPE_FILE = "File"
# The class name for User objects, when referenced by a Pointer.
CLASS_USER = "_User"
USER_LOGIN_URI = "/#{VERSION}/login"
KEY_USER_SESSION_TOKEN = "sessionToken"
# URI Helpers
# ----------------------------------------
# Construct a uri referencing a given Parse object
# class or instance (of object_id is non-nil).
def Protocol.class_uri(class_name, object_id = nil)
if object_id
"/#{VERSION}/classes/#{class_name}/#{object_id}"
else
"/#{VERSION}/classes/#{class_name}"
end
end
# Construct a uri referencing a given Parse user
# instance or the users category.
def Protocol.user_uri(user_id = nil)
if user_id
"/#{VERSION}/users/#{user_id}"
else
"/#{VERSION}/users"
end
end
# Construct a uri referencing a file stored by the API.
def Protocol.file_uri(file_name)
"/#{VERSION}/files/#{file_name}"
end
end
end