You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by mr...@apache.org on 2016/09/02 17:40:23 UTC
[42/45] usergrid git commit: Moving older SDKs to a difference
location and updating main README to link to new SDK locations.
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGClient.m
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGClient.m b/sdks/ios/UGAPI/UGClient.m
deleted file mode 100755
index 9d6407a..0000000
--- a/sdks/ios/UGAPI/UGClient.m
+++ /dev/null
@@ -1,1252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "UGClient.h"
-#import "UGHTTPManager.h"
-#import "SBJson.h"
-#import "UGMultiStepAction.h"
-#import "SSKeychain.h"
-
-NSString *g_deviceUUID = nil;
-
-@implementation UGClient
-{
- // the delegate for asynch callbacks
- id m_delegate;
-
- // the mutex to protect the delegate variable
- NSRecursiveLock *m_delegateLock;
-
- // a growing array of UGHTTPManager instances. See
- // "HTTPMANAGER POOLING" further down in this file.
- NSMutableArray *m_httpManagerPool;
-
- // the base URL for the service
- NSString *m_baseURL;
-
- // the appID for the specific app
- NSString *m_appID;
-
- // the appID for the specific app
- NSString *m_orgID;
-
- // the cached auth token
- UGUser *m_loggedInUser;
-
- // the auth code
- NSString *m_auth;
-
- // the list of currently pending multi-step actions
- NSMutableArray *m_pendingMultiStepActions;
-
- // logging state
- BOOL m_bLogging;
-}
-
-/************************** ACCESSORS *******************************/
-/************************** ACCESSORS *******************************/
-/************************** ACCESSORS *******************************/
-+(NSString *) version
-{
- return @"0.1.1";
-}
-
--(NSString *)getAccessToken
-{
- return m_auth;
-}
-
--(UGUser *)getLoggedInUser
-{
- return m_loggedInUser;
-}
-
--(id) getDelegate
-{
- return m_delegate;
-}
-
-/******************************* INIT *************************************/
-/******************************* INIT *************************************/
-/******************************* INIT *************************************/
--(id)init
-{
- // you are not allowed to init without an organization id and application id
- // you can't init with [UGClient new]. You must call
- // [[UGClient alloc] initWithOrganizationId: <your UG org id> withApplicationId:<your UG app id>]
- assert(0);
- return nil;
-}
-
--(id) initWithOrganizationId: (NSString *)organizationID withApplicationID:(NSString *)applicationID
-{
- self = [super init];
- if ( self )
- {
- m_delegate = nil;
- m_httpManagerPool = [NSMutableArray new];
- m_delegateLock = [NSRecursiveLock new];
- m_appID = applicationID;
- m_orgID = organizationID;
- m_baseURL = @"http://api.usergrid.com";
- m_pendingMultiStepActions = [NSMutableArray new];
- m_loggedInUser = nil;
- m_bLogging = NO;
- }
- return self;
-}
-
--(id) initWithOrganizationId: (NSString *)organizationID withApplicationID:(NSString *)applicationID baseURL:(NSString *)baseURL
-{
- self = [super init];
- if ( self )
- {
- m_delegate = nil;
- m_httpManagerPool = [NSMutableArray new];
- m_delegateLock = [NSRecursiveLock new];
- m_appID = applicationID;
- m_orgID = organizationID;
- m_baseURL = baseURL;
- }
- return self;
-}
-
--(BOOL) setDelegate:(id)delegate
-{
- // first off, clear any pending transactions
- for ( int i=0 ; i<[m_httpManagerPool count] ; i++ )
- {
- UGHTTPManager *mgr = [m_httpManagerPool objectAtIndex:i];
-
- // it's safe to call cancel at all times.
- [mgr cancel];
- }
-
- // nil is a valid answer. It means we're synchronous now.
- if ( delegate == nil )
- {
- [m_delegateLock lock];
- m_delegate = nil;
- [m_delegateLock unlock];
- return YES;
- }
-
- // if it's not nil, it has to have the delegation function
- if ( ![delegate respondsToSelector:@selector(ugClientResponse:)] )
- {
- return NO;
- }
-
- // if we're here, it means the delegate is valid
- [m_delegateLock lock];
- m_delegate = delegate;
- [m_delegateLock unlock];
- return YES;
-}
-
-/************************* HTTPMANAGER POOLING *******************************/
-/************************* HTTPMANAGER POOLING *******************************/
-/************************* HTTPMANAGER POOLING *******************************/
-
-// any given instance of UGHTTPManager can only manage one transaction at a time,
-// but we want the client to be able to have as many going at once as he likes.
-// so we have a pool of UGHTTPManagers as needed.
--(UGHTTPManager *)getHTTPManager;
-{
- // find the first unused HTTPManager
- for ( int i=0 ; i<[m_httpManagerPool count] ; i++ )
- {
- UGHTTPManager *mgr = [m_httpManagerPool objectAtIndex:i];
- if ( [mgr isAvailable] )
- {
- // tag this guy as available
- [mgr setAvailable:NO];
-
- // return him
- return mgr;
- }
- }
-
- // if we're here, we didn't find any available managers
- // so we'll need to make a new one
- UGHTTPManager *newMgr = [UGHTTPManager new];
-
- // mark it as in-use (we're about to return it)
- [newMgr setAvailable:NO];
-
- // tell it the auth to use
- [newMgr setAuth:m_auth];
-
- // add it to the array
- [m_httpManagerPool addObject:newMgr];
-
- // return it
- return newMgr;
-}
-
--(void)releaseHTTPManager:(UGHTTPManager *)toRelease
-{
- [toRelease setAvailable:YES];
-}
-
--(void)setAuth:(NSString *)auth
-{
- // note the auth for ourselves
- m_auth = auth;
-
- // update all our managers
- for ( int i=0 ; i<[m_httpManagerPool count] ; i++ )
- {
- UGHTTPManager *mgr = [m_httpManagerPool objectAtIndex:i];
- [mgr setAuth:m_auth];
- }
-}
-
-/************************* GENERAL WORKHORSES *******************************/
-/************************* GENERAL WORKHORSES *******************************/
-/************************* GENERAL WORKHORSES *******************************/
-// url: the URL to hit
-// op: a kUGHTTP constant. Example: kUGHTTPPost
-// opData: The data to send along with the operation. Can be nil
--(UGClientResponse *)httpTransaction:(NSString *)url op:(int)op opData:(NSString *)opData
-{
- // get an http manager to do this transaction
- UGHTTPManager *mgr = [self getHTTPManager];
-
- if ( m_delegate )
- {
- if ( m_bLogging )
- {
- NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
- NSLog(@"Asynch outgoing call: '%@'", url);
- }
-
- // asynch transaction
- int transactionID = [mgr asyncTransaction:url operation:op operationData:opData delegate:self];
-
- if ( m_bLogging )
- {
- NSLog(@"Transaction ID:%d", transactionID);
- NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n");
- }
-
- if ( transactionID == -1 )
- {
- if ( m_bLogging )
- {
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
- NSLog(@"Response: ERROR: %@", [mgr getLastError]);
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
- }
-
- // there was an immediate failure in the transaction
- UGClientResponse *response = [UGClientResponse new];
- [response setTransactionID:-1];
- [response setTransactionState:kUGClientResponseFailure];
- [response setResponse:[mgr getLastError]];
- [response setRawResponse:nil];
- return response;
- }
- else
- {
- // the transaction is in progress and pending
- UGClientResponse *response = [UGClientResponse new];
- [response setTransactionID:transactionID];
- [response setTransactionState:kUGClientResponsePending];
- [response setResponse:nil];
- [response setRawResponse:nil];
- return response;
- }
- }
- else
- {
- if ( m_bLogging )
- {
- NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
- NSLog(@"Synch outgoing call: '%@'", url);
- NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n");
- }
-
- // synch transaction
- NSString *result = [mgr syncTransaction:url operation:op operationData:opData];
-
- if ( m_bLogging )
- {
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
- if ( result )
- {
- NSLog(@"Response:\n%@", result);
- }
- else
- {
- NSLog(@"Response: ERROR: %@", [mgr getLastError]);
- }
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
- }
-
- // since we're doing a synch transaction, we are now done with this manager.
- [self releaseHTTPManager:mgr];
-
- if ( result )
- {
- // got a valid result
- UGClientResponse *response = [self createResponse:-1 jsonStr:result];
- return response;
- }
- else
- {
- // there was an error. Note the failure state, set the response to
- // be the error string
- UGClientResponse *response = [UGClientResponse new];
- [response setTransactionID:-1];
- [response setTransactionState:kUGClientResponseFailure];
- [response setResponse:[mgr getLastError]];
- [response setRawResponse:nil];
- return response;
- }
- }
-}
-
--(UGClientResponse *)createResponse:(int)transactionID jsonStr:(NSString *)jsonStr
-{
- UGClientResponse *response = [UGClientResponse new];
-
- // set the raw response and transaction id
- [response setRawResponse:jsonStr];
- [response setTransactionID:transactionID];
-
- // parse the json
- SBJsonParser *parser = [SBJsonParser new];
- NSError *error;
- id result = [parser objectWithString:jsonStr error:&error];
-
- if ( result )
- {
- // first off, if the result is NOT an NSDictionary, something went wrong.
- // there should never be an array response
- if ( ![result isKindOfClass:[NSDictionary class]] )
- {
- [response setTransactionState:kUGClientResponseFailure];
- [response setResponse:@"Internal error: Response parsed to something other than NSDictionary"];
- return response;
- }
-
- // it successfully parsed. Though the result might still be an error.
- // it could be the server returning an error in perfectly formated json.
- NSString *err = [result valueForKey:@"error"];
- if ( err )
- {
- // there was an error. See if there's a more detailed description.
- // if there is, we'll use that. If not, we'll use the error value
- // itself.
- NSString *errDesc = [result valueForKey:@"error_description"];
- NSString *toReport = errDesc;
- if ( !toReport ) toReport = err;
-
- [response setTransactionState:kUGClientResponseFailure];
- [response setResponse:toReport];
- return response;
- }
-
- // if we're here we have a good auth. make note of it
- NSString *auth = [result valueForKey:@"access_token"];
- if ( auth )
- {
- [self setAuth: auth];
-
- // if there's an access token, there might be a user
- NSDictionary *dict = [result objectForKey:@"user"];
- if ( dict )
- {
- // get the fields for the user
- m_loggedInUser = [UGUser new];
- [m_loggedInUser setUsername:[dict valueForKey:@"username"]];
- [m_loggedInUser setUuid:[dict valueForKey:@"uuid"]];
- [m_loggedInUser setEmail:[dict valueForKey:@"email"]];
- [m_loggedInUser setPicture:[dict valueForKey:@"picture"]];
- }
- }
-
- [response setTransactionState:kUGClientResponseSuccess];
- [response setResponse:result];
- return response;
- }
- else
- {
- // there was an error during json parsing.
- [response setTransactionState:kUGClientResponseFailure];
- [response setResponse:[error localizedDescription]];
- return response;
- }
-}
-
-// basic URL assembly functions. For convenience
--(NSMutableString *)createURL:(NSString *)append1
-{
- NSMutableString *ret = [NSMutableString new];
- [ret appendFormat:@"%@/%@/%@/%@", m_baseURL, m_orgID, m_appID, append1];
- return ret;
-}
-
--(NSMutableString *)createURL:(NSString *)append1 append2:(NSString *)append2
-{
- NSMutableString *ret = [NSMutableString new];
- [ret appendFormat:@"%@/%@/%@/%@/%@", m_baseURL, m_orgID, m_appID, append1, append2];
- return ret;
-}
-
--(NSMutableString *)createURL:(NSString *)append1 append2:(NSString *)append2 append3:(NSString *)append3
-{
- NSMutableString *ret = [NSMutableString new];
- [ret appendFormat:@"%@/%@/%@/%@/%@/%@", m_baseURL, m_orgID, m_appID, append1, append2, append3];
- return ret;
-}
-
--(NSMutableString *)createURL:(NSString *)append1 append2:(NSString *)append2 append3:(NSString *)append3 append4:(NSString *)append4
-{
- NSMutableString *ret = [NSMutableString new];
- [ret appendFormat:@"%@/%@/%@/%@/%@/%@/%@", m_baseURL, m_orgID, m_appID, append1, append2, append3, append4];
- return ret;
-}
-
--(NSMutableString *)createURL:(NSString *)append1 append2:(NSString *)append2 append3:(NSString *)append3 append4:(NSString *)append4 append5:(NSString *)append5
-{
- NSMutableString *ret = [NSMutableString new];
- [ret appendFormat:@"%@/%@/%@/%@/%@/%@/%@/%@", m_baseURL, m_orgID, m_appID, append1, append2, append3, append4, append5];
- return ret;
-}
-
--(void)appendQueryToURL:(NSMutableString *)url query:(UGQuery *)query
-{
- if ( query )
- {
- [url appendFormat:@"%@", [query getURLAppend]];
- }
-}
-
--(NSString *)createJSON:(NSDictionary *)data
-{
- NSString *ret = [self createJSON:data error:nil];
-
- // the only way for ret to be nil here is for an internal
- // function to have a bug.
- assert(ret);
- return ret;
-}
-
--(NSString *)createJSON:(NSDictionary *)data error:(NSString **)error
-{
- SBJsonWriter *writer = [SBJsonWriter new];
- NSError *jsonError;
- NSString *jsonStr = [writer stringWithObject:data error:&jsonError];
-
- if ( jsonStr )
- {
- return jsonStr;
- }
-
- // if we're here, there was an assembly error
- if ( error )
- {
- *error = [jsonError localizedDescription];
- }
- return nil;
-}
-
-/************************** UGHTTPMANAGER DELEGATES *******************************/
-/************************** UGHTTPMANAGER DELEGATES *******************************/
-/************************** UGHTTPMANAGER DELEGATES *******************************/
--(void)httpManagerError:(UGHTTPManager *)manager error:(NSString *)error
-{
- // prep an error response
- UGClientResponse *response = [UGClientResponse new];
- [response setTransactionID:[manager getTransactionID]];
- [response setTransactionState:kUGClientResponseFailure];
- [response setResponse:error];
- [response setRawResponse:nil];
-
- if ( m_bLogging )
- {
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
- NSLog(@"Response: ERROR: %@", error);
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
- }
-
- // fire it off. Wrap in mutex locks to ensure we don't get
- // race conditions that cause us to fire it off to Mr. Nil.
- [m_delegateLock lock];
- if ( m_delegate )
- {
- [m_delegate performSelector:@selector(ugClientResponse:) withObject:response];
- }
- [m_delegateLock unlock];
-
- // now that the callback is complete, it's safe to release this manager
- [self releaseHTTPManager:manager];
-}
-
--(void)httpManagerResponse:(UGHTTPManager *)manager response:(NSString *)response
-{
- if ( m_bLogging )
- {
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
- NSLog(@"Response (Transaction ID %d):\n%@", [manager getTransactionID], response);
- NSLog(@"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
- }
-
- // form up the response
- UGClientResponse *ugResponse = [self createResponse:[manager getTransactionID] jsonStr:response];
-
- // if this is part of a multi-step call, we press on.
- for ( int i=0 ; i<[m_pendingMultiStepActions count] ; i++ )
- {
- UGMultiStepAction *action = [m_pendingMultiStepActions objectAtIndex:i];
- if ( [action transactionID] == [ugResponse transactionID] )
- {
- // multi-step call. Fire off the action.
- ugResponse = [self doMultiStepAction:action mostRecentResponse:ugResponse];
- if ( ![action reportToClient] )
- {
- // the action is still pending. We do not report this
- // to the user. We're done with the httpmanager we were using,
- // though.
- [self releaseHTTPManager:manager];
- return;
- }
-
- // when the action is complete, we want to immediately break
- // from this loop, then fall through to the normal reporting
- // to the user.
- break;
- }
- }
-
- // fire it off
- [m_delegateLock lock];
- if ( m_delegate )
- {
- [m_delegate performSelector:@selector(ugClientResponse:) withObject:ugResponse];
- }
- [m_delegateLock unlock];
-
- // now that the callback is complete, it's safe to release this manager
- [self releaseHTTPManager:manager];
-}
-
-// multi-step follow-up function
--(UGClientResponse *)multiStepAction: (UGMultiStepAction *)action
-{
- // different behavior if synch or asynch
- if ( m_delegate )
- {
- // asynch. Fire it off and we're done
- return [self doMultiStepAction:action mostRecentResponse:nil];
- }
- else
- {
- // synchronous. keep calling until it finished or fails
- UGClientResponse *response = nil;
- do
- {
- response = [self doMultiStepAction:action mostRecentResponse:response];
- if ( [action reportToClient] )
- {
- // done
- return response;
- }
- } while ([response transactionState] == kUGClientResponseSuccess);
-
- // if we're here, there was an error
- return response;
- }
-}
-
--(UGClientResponse *)doMultiStepAction: (UGMultiStepAction *)action mostRecentResponse:(UGClientResponse *)mostRecentResponse
-{
- // clear the pending array of this object
- [m_pendingMultiStepActions removeObject:action];
-
- // assume we aren't reporting to the client
- [action setReportToClient:NO];
-
- if ( mostRecentResponse )
- {
- // we don't care about pending responses
- if ( [mostRecentResponse transactionState] == kUGClientResponsePending )
- {
- // put ourselves back in the list
- [m_pendingMultiStepActions addObject:action];
- return mostRecentResponse;
- }
-
- // any failure is an immediate game ender
- if ( [mostRecentResponse transactionState] == kUGClientResponseFailure )
- {
- [mostRecentResponse setTransactionID:[action transactionID]];
- return mostRecentResponse;
- }
- }
-
- // if mostRecentRespons is nil, that means it's the first call to initiate
- // the chain. So we continue on with processing.
-
- // so either we are reacting to a success or we are starting off the chain
- UGClientResponse *result = nil;
- if ( [action nextAction] == kMultiStepCreateActivity )
- {
- // create the activity
- result = [self createActivity:[action activity]];
-
- // advance ourselves to the next step
- [action setNextAction:kMultiStepPostActivity];
- }
- else if ( [action nextAction] == kMultiStepCreateGroupActivity )
- {
- // create the activity
- result = [self createActivity:[action activity]];
-
- // advance ourselves to the next step
- [action setNextAction:kMultiStepPostGroupActivity];
- }
- else if ( [action nextAction] == kMultiStepPostActivity )
- {
- // we just created an activity, now we need to associate it with a user.
- // first, we'll need the activity's uuid
- NSDictionary *dict = [mostRecentResponse response]; // dictionary for the response
- NSArray *entities = [dict objectForKey:@"entities"]; // array for the entities
- NSDictionary *activity = [entities objectAtIndex:0]; // dict for the activity
- NSString *activityUUID = [activity valueForKey:@"uuid"]; // and finally the uuid string
-
- // fire off the next step
- result = [self postUserActivityByUUID:[action userID] activity:activityUUID];
-
- // advance the action
- [action setNextAction:kMultiStepCleanup];
- }
- else if ( [action nextAction] == kMultiStepPostGroupActivity )
- {
- // we just created an activity, now we need to associate it with a user.
- // first, we'll need the activity's uuid
- NSDictionary *dict = [mostRecentResponse response]; // dictionary for the response
- NSArray *entities = [dict objectForKey:@"entities"]; // array for the entities
- NSDictionary *activity = [entities objectAtIndex:0]; // dict for the activity
- NSString *activityUUID = [activity valueForKey:@"uuid"]; // and finally the uuid string
-
- // fire off the next step
- result = [self postGroupActivityByUUID:[action groupID] activity:activityUUID];
-
- // advance the action
- [action setNextAction:kMultiStepCleanup];
- }
- else if ( [action nextAction] == kMultiStepCleanup )
- {
- // all we do in cleanup is update the transaction ID of the
- // response that was sent in. We do this to ensure that the transaction
- // id is constant across the entire transaction
- result = mostRecentResponse;
- [result setTransactionID:[action outwardTransactionID]];
- [action setReportToClient:YES];
- }
-
- if ( !mostRecentResponse )
- {
- // if mostRecentResponse is nil, it means we're on the first step. That means
- // we need to adopt a unique outward transaction ID. We'll simply use
- // the ID given back by the first transaction in the chain. This also means
- // we can simply return the first transaction pending response without modification.
- [action setOutwardTransactionID:[result transactionID]];
- }
-
- // wherever we landed, if it's a pending transaction, the action needs to
- // know that transaction ID. Also, we need to go in to the pending array
- if ( [result transactionState] == kUGClientResponsePending )
- {
- [action setTransactionID:[result transactionID]];
- [m_pendingMultiStepActions addObject:action];
- }
-
- // result is now properly set up and ready to be handed to the user.
- return result;
-}
-
-/*************************** LOGIN / LOGOUT ****************************/
-/*************************** LOGIN / LOGOUT ****************************/
-/*************************** LOGIN / LOGOUT ****************************/
--(UGClientResponse *)logInUser: (NSString *)userName password:(NSString *)password
-{
- return [self logIn:@"password" userKey:@"username" userValue:userName pwdKey:@"password" pwdValue:password];
-}
-
--(UGClientResponse *)logInUserWithPin: (NSString *)userName pin:(NSString *)pin
-{
- return [self logIn:@"pin" userKey:@"username" userValue:userName pwdKey:@"pin" pwdValue:pin];
-}
-
--(UGClientResponse *)logInUserWithFacebook: (NSString *)facebookToken
-{
- NSMutableString *url = [self createURL:@"auth/facebook"];
- UGQuery *query = [[UGQuery alloc] init];
- [query addURLTerm:@"fb_access_token" equals:facebookToken];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)logInAdmin: (NSString *)adminUserName secret:(NSString *)adminSecret
-{
- return [self logIn:@"client_credentials" userKey:@"client_id" userValue:adminUserName pwdKey:@"client_secret" pwdValue:adminSecret];
-}
-
--(void)logOut
-{
- // clear out auth
- [self setAuth: nil];
-}
-
-// general workhorse for auth logins
--(UGClientResponse *)logIn:(NSString *)grantType userKey:(NSString *)userKey userValue:(NSString *)userValue pwdKey:(NSString *)pwdKey pwdValue:(NSString *)pwdValue
-{
- // create the URL
- NSString *url = [self createURL:@"token"];
-
- // because it's read as form data, we need to escape special characters.
- NSString *escapedUserValue = [UGHTTPManager escapeSpecials:userValue];
- NSString *escapedPwdValue = [UGHTTPManager escapeSpecials:pwdValue];
-
- // create the post data. For auth functions, we don't use json,
- // but instead use web form style data
- NSMutableString *postData = [NSMutableString new];
- [postData appendFormat:@"grant_type=%@&%@=%@&%@=%@", grantType, userKey, escapedUserValue, pwdKey, escapedPwdValue];
-
- // fire off the request
- return [self httpTransaction:url op:kUGHTTPPostAuth opData:postData];
-}
-/*************************** USER MANAGEMENT ***************************/
-/*************************** USER MANAGEMENT ***************************/
-/*************************** USER MANAGEMENT ***************************/
--(UGClientResponse *)addUser:(NSString *)username email:(NSString *)email name:(NSString *)name password:(NSString *)password
-{
- // make the URL we'll be posting to
- NSString *url = [self createURL:@"users"];
-
- // make the post data we'll be sending along with it.
- NSMutableDictionary *toPost = [NSMutableDictionary new];
- [toPost setObject:username forKey:@"username"];
- [toPost setObject:name forKey:@"name"];
- [toPost setObject:email forKey:@"email"];
- [toPost setObject:password forKey:@"password"];
- NSString *toPostStr = [self createJSON:toPost];
-
- // fire it off
- return [self httpTransaction:url op:kUGHTTPPost opData:toPostStr];
-}
-
-// updates a user's password
--(UGClientResponse *)updateUserPassword:(NSString *)usernameOrEmail oldPassword:(NSString *)oldPassword newPassword:(NSString *)newPassword
-{
- // make the URL we'll be posting to
- NSString *url = [self createURL:@"users" append2:usernameOrEmail append3:@"password"];
-
- // make the post data we'll be sending along with it.
- NSMutableDictionary *toPost = [NSMutableDictionary new];
- [toPost setObject:oldPassword forKey:@"oldpassword"];
- [toPost setObject:newPassword forKey:@"newpassword"];
- NSString *toPostStr = [self createJSON:toPost];
-
- // fire it off
- return [self httpTransaction:url op:kUGHTTPPost opData:toPostStr];
-}
-
--(UGClientResponse *)getGroupsForUser: (NSString *)userID;
-{
- // make the URL, and fire off the get
- NSString *url = [self createURL:@"users" append2:userID append3:@"groups"];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)getUsers: (UGQuery *)query
-{
- // create the URL
- NSMutableString *url = [self createURL:@"users"];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
-/************************** ACTIVITY MANAGEMENT **************************/
-/************************** ACTIVITY MANAGEMENT **************************/
-/************************** ACTIVITY MANAGEMENT **************************/
--(UGClientResponse *)createActivity: (NSDictionary *)activity
-{
- // make the URL
- NSString *url = [self createURL:@"activity"];
-
- // get the json to send.
- // we have to json-ify a dictionary that was sent
- // in by the client. So naturally, we can't just trust it
- // to work. Therefore we can't use our internal convenience
- // function for making the json. We go straight to SBJson, so
- // we can identify and report any errors.
- SBJsonWriter *writer = [SBJsonWriter new];
- NSError *jsonError;
- NSString *toPostStr = [writer stringWithObject:activity error:&jsonError];
-
- if ( !toPostStr )
- {
- // error during json assembly
- UGClientResponse *ret = [UGClientResponse new];
- [ret setTransactionState:kUGClientResponseFailure];
- [ret setTransactionID:-1];
- [ret setResponse:[jsonError localizedDescription]];
- [ret setRawResponse:nil];
- return ret;
- }
-
- // fire it off
- return [self httpTransaction:url op:kUGHTTPPost opData:toPostStr];
-}
-
-// create an activity and post it to a user in a single step
--(UGClientResponse *)postUserActivity: (NSString *)userID activity:(NSDictionary *)activity
-{
- // prep a multi-step action
- UGMultiStepAction *action = [UGMultiStepAction new];
-
- // set it up to start the create activity / post to user chain
- [action setNextAction:kMultiStepCreateActivity];
- [action setUserID:userID];
- [action setActivity:activity];
-
- // fire it off
- return [self multiStepAction:action];
-}
-
--(UGClientResponse *)postUserActivityByUUID: (NSString *)userID activity:(NSString *)activityUUID
-{
- // make the URL and fire off the post. there is no data
- NSString *url = [self createURL:@"users" append2:userID append3:@"activities" append4:activityUUID];
- return [self httpTransaction:url op:kUGHTTPPost opData:nil];
-}
-
--(UGClientResponse *)postGroupActivity:(NSString *)groupID activity:(NSDictionary *)activity
-{
- // prep a multi-step action
- UGMultiStepAction *action = [UGMultiStepAction new];
-
- // set it up to start the create activity / post to user chain
- [action setNextAction:kMultiStepCreateGroupActivity];
- [action setGroupID:groupID];
- [action setActivity:activity];
-
- // fire it off
- return [self multiStepAction:action];
-}
-
--(UGClientResponse *)postGroupActivityByUUID: (NSString *)groupID activity:(NSString *)activityUUID
-{
- // make the URL and fire off the post. there is no data
- NSString *url = [self createURL:@"groups" append2:groupID append3:@"activities" append4:activityUUID];
- return [self httpTransaction:url op:kUGHTTPPost opData:nil];
-}
-
--(UGClientResponse *)getActivitiesForUser: (NSString *)userID query:(UGQuery *)query
-{
- NSMutableString *url = [self createURL:@"users" append2:userID append3:@"activities"];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)getActivityFeedForUser: (NSString *)userID query:(UGQuery *)query
-{
- NSMutableString *url = [self createURL:@"users" append2:userID append3:@"feed"];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)getActivitiesForGroup: (NSString *)groupID query:(UGQuery *)query
-{
- NSMutableString *url = [self createURL:@"groups" append2:groupID append3:@"activities"];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)getActivityFeedForGroup: (NSString *)groupID query:(UGQuery *)query
-{
- NSMutableString *url = [self createURL:@"groups" append2:groupID append3:@"feed"];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)removeActivity:(NSString *)activityUUID
-{
- NSString *url = [self createURL:@"activities" append2:activityUUID];
- return [self httpTransaction:url op:kUGHTTPDelete opData:nil];
-}
-
-/************************** GROUP MANAGEMENT **************************/
-/************************** GROUP MANAGEMENT **************************/
-/************************** GROUP MANAGEMENT **************************/
--(UGClientResponse *)createGroup:(NSString *)groupPath groupTitle:(NSString *)groupTitle
-{
- // make the URL
- NSString *url = [self createURL:@"groups"];
-
- // make the post data we'll be sending along with it.
- NSMutableDictionary *toPost = [NSMutableDictionary new];
- [toPost setObject:groupPath forKey:@"path"];
- if ( groupTitle )
- {
- [toPost setObject:groupTitle forKey:@"title"];
- }
- NSString *toPostStr = [self createJSON:toPost];
-
- // fire it off
- return [self httpTransaction:url op:kUGHTTPPost opData:toPostStr];
-}
-
--(UGClientResponse *)addUserToGroup:(NSString *)userID group:(NSString *)groupID
-{
- // make the URL
- NSString *url = [self createURL:@"groups" append2:groupID append3:@"users" append4:userID];
-
- // fire it off. This is a data-less POST
- return [self httpTransaction:url op:kUGHTTPPost opData:nil];
-}
-
--(UGClientResponse *)removeUserFromGroup:(NSString *)userID group:(NSString *)groupID
-{
- // this is identical to addUserToGroup, except we use the DELETE method instead of POST
- // make the URL
- NSString *url = [self createURL:@"groups" append2:groupID append3:@"users" append4:userID];
-
- // fire it off. This is a data-less POST
- return [self httpTransaction:url op:kUGHTTPDelete opData:nil];}
-
--(UGClientResponse *)getUsersForGroup:(NSString *)groupID query:(UGQuery *)query
-{
- // create the URL
- NSMutableString *url = [self createURL:@"groups" append2:groupID append3:@"users"];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
-/************************** ENTITY MANAGEMENT **************************/
-/************************** ENTITY MANAGEMENT **************************/
-/************************** ENTITY MANAGEMENT **************************/
-// jsonify the entity. If there's an error, it creates a UGClientResponse and
-// returns it. If there's no error, it returns nil, and the outJson field and
-// the type field will be set correctly.
-// yes, it's odd to have a function return nil on success, but it's internal.
--(UGClientResponse *)validateEntity:(NSDictionary *)newEntity outJson:(NSString **)jsonStr outType:(NSString **)type
-{
- // validation
- NSString *error = nil;
-
- // the entity must exist
- if ( !newEntity )
- {
- error =@"entity is nil";
- }
-
- // the entity must have a "type" field
- *type = [newEntity valueForKey:@"type"];
- if ( !*type )
- {
- error = @"entity is missing a type field";
- }
-
- // make sure it can parse to a json
- SBJsonWriter *writer = [SBJsonWriter new];
- NSError *jsonError;
- *jsonStr = [writer stringWithObject:newEntity error:&jsonError];
- if ( !*jsonStr )
- {
- error = [jsonError localizedDescription];
- }
-
- // if error got set to anything, it means we failed
- if ( error )
- {
- UGClientResponse *ret = [UGClientResponse new];
- [ret setTransactionState:kUGClientResponseFailure];
- [ret setTransactionID:-1];
- [ret setResponse:error];
- [ret setRawResponse:nil];
- return ret;
- }
-
- // if we're here, it's a good json and we're done
- return nil;
-}
-
--(UGClientResponse *)createEntity:(NSDictionary *)newEntity
-{
- NSString *jsonStr;
- NSString *type;
- UGClientResponse *errorRet = [self validateEntity:newEntity outJson:&jsonStr outType:&type];
- if ( errorRet ) return errorRet;
-
- // we have a valid entity, ready to post. Make the URL
- NSString *url = [self createURL:type];
-
- // post it
- return [self httpTransaction:url op:kUGHTTPPost opData:jsonStr];
-}
-
--(UGClientResponse *)getEntities: (NSString *)type query:(UGQuery *)query
-{
- NSMutableString *url = [self createURL:type];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)updateEntity: (NSString *)entityID entity:(NSDictionary *)updatedEntity
-{
- NSString *jsonStr;
- NSString *type;
- UGClientResponse *errorRet = [self validateEntity:updatedEntity outJson:&jsonStr outType:&type];
- if ( errorRet ) return errorRet;
-
- // we have a valid entity, ready to post. Make the URL
- NSString *url = [self createURL:type append2:entityID];
-
- // post it
- return [self httpTransaction:url op:kUGHTTPPut opData:jsonStr];
-}
-
--(UGClientResponse *)removeEntity: (NSString *)type entityID:(NSString *)entityID
-{
- // Make the URL, then fire off the delete
- NSString *url = [self createURL:type append2:entityID];
- return [self httpTransaction:url op:kUGHTTPDelete opData:nil];
-}
-
-
--(UGClientResponse *)connectEntities: (NSString *)connectorType connectorID:(NSString *)connectorID connectionType:(NSString *)connectionType connecteeType:(NSString *)connecteeType connecteeID:(NSString *)connecteeID
-{
- NSString *url = [self createURL:connectorType append2:connectorID append3:connectionType append4:connecteeType append5:connecteeID];
- return [self httpTransaction:url op:kUGHTTPPost opData:nil];
-}
-
--(UGClientResponse *)connectEntities: (NSString *)connectorType connectorID:(NSString *)connectorID type:(NSString *)connectionType connecteeID:(NSString *)connecteeID
-{
- NSString *url = [self createURL:connectorType append2:connectorID append3:connectionType append4:connecteeID];
- return [self httpTransaction:url op:kUGHTTPPost opData:nil];
-}
-
--(UGClientResponse *)disconnectEntities: (NSString *)connectorType connectorID:(NSString *)connectorID type:(NSString *)connectionType connecteeID:(NSString *)connecteeID
-{
- NSString *url = [self createURL:connectorType append2:connectorID append3:connectionType append4:connecteeID];
- return [self httpTransaction:url op:kUGHTTPDelete opData:nil];
-}
-
--(UGClientResponse *)getEntityConnections: (NSString *)connectorType connectorID:(NSString *)connectorID connectionType:(NSString *)connectionType query:(UGQuery *)query
-{
- NSMutableString *url = [self createURL:connectorType append2:connectorID append3:connectionType];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPPost opData:nil];
-}
-
-/************************** MESSAGE MANAGEMENT **************************/
-/************************** MESSAGE MANAGEMENT **************************/
-/************************** MESSAGE MANAGEMENT **************************/
--(UGClientResponse *)postMessage: (NSString *)queuePath message:(NSDictionary *)message
-{
- // because the NSDictionary is from the client, we can't trust it. We need
- // to go through full error checking
- NSString *error;
- NSString *jsonStr = [self createJSON:message error:&error];
-
- if ( !jsonStr )
- {
- // report the error
- UGClientResponse *ret = [UGClientResponse new];
- [ret setTransactionID:-1];
- [ret setTransactionState:kUGClientResponseFailure];
- [ret setResponse:error];
- [ret setRawResponse:nil];
- return ret;
- }
-
- // make the path and fire it off
- NSString *url = [self createURL:@"queues" append2:queuePath];
- return [self httpTransaction:url op:kUGHTTPPost opData:jsonStr];
-}
-
--(UGClientResponse *)getMessages: (NSString *)queuePath query:(UGQuery *)query;
-{
- NSMutableString *url = [self createURL:@"queues" append2:queuePath];
- [self appendQueryToURL:url query:query];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
--(UGClientResponse *)addSubscriber: (NSString *)queuePath subscriberPath:(NSString *)subscriberPath
-{
- NSString *url = [self createURL:@"queues" append2:queuePath append3:@"subscribers" append4:subscriberPath];
- return [self httpTransaction:url op:kUGHTTPPost opData:nil];
-}
-
--(UGClientResponse *)removeSubscriber: (NSString *)queuePath subscriberPath:(NSString *)subscriberPath
-{
- NSString *url = [self createURL:@"queues" append2:queuePath append3:@"subscribers" append4:subscriberPath];
- return [self httpTransaction:url op:kUGHTTPDelete opData:nil];
-}
-
-/*************************** REMOTE PUSH NOTIFICATIONS ***************************/
-/*************************** REMOTE PUSH NOTIFICATIONS ***************************/
-/*************************** REMOTE PUSH NOTIFICATIONS ***************************/
-
-- (UGClientResponse *)setDevicePushToken:(NSData *)newDeviceToken forNotifier:(NSString *)notifier
-{
- // Pull the push token string out of the device token data
- NSString *tokenString = [[[newDeviceToken description]
- stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
- stringByReplacingOccurrencesOfString:@" " withString:@""];
-
- // Register device and push token to App Services
- NSString *deviceId = [UGClient getUniqueDeviceID];
-
- // create/update device - use deviceId for App Services entity UUID
- NSMutableDictionary *entity = [[NSMutableDictionary alloc] init];
- [entity setObject: @"device" forKey: @"type"];
- [entity setObject: deviceId forKey: @"uuid"];
-
- NSString *notifierKey = [notifier stringByAppendingString: @".notifier.id"];
- [entity setObject: tokenString forKey: notifierKey];
-
- return [self updateEntity: deviceId entity: entity];
-}
-
-- (UGClientResponse *)pushAlert:(NSString *)message
- withSound:(NSString *)sound
- to:(NSString *)path
- usingNotifier:(NSString *)notifier
-{
- NSDictionary *apsDict = [NSDictionary dictionaryWithObjectsAndKeys:
- message, @"alert",
- sound, @"sound",
- nil];
-
- NSDictionary *notifierDict = [NSDictionary dictionaryWithObjectsAndKeys:
- apsDict, @"aps",
- nil];
-
- NSDictionary *payloadsDict = [NSDictionary dictionaryWithObjectsAndKeys:
- notifierDict, notifier,
- nil];
-
- NSString *notificationsPath = [path stringByAppendingString: @"/notifications"];
-
- NSMutableDictionary *entity = [[NSMutableDictionary alloc] init];
- [entity setObject: notificationsPath forKey: @"type"];
- [entity setObject: payloadsDict forKey: @"payloads"];
-
- return [self createEntity: entity];
-}
-
-
-/*************************** SERVER-SIDE STORAGE ***************************/
-/*************************** SERVER-SIDE STORAGE ***************************/
-/*************************** SERVER-SIDE STORAGE ***************************/
-+(NSString *)getUniqueDeviceID
-{
- // cached?
- if (g_deviceUUID) return g_deviceUUID;
-
- // in our keychain?
- g_deviceUUID = [SSKeychain passwordForService:@"Usergrid" account:@"DeviceUUID"];
- if (g_deviceUUID) return g_deviceUUID;
-
- // in the (legacy) app defaults?
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- g_deviceUUID = [defaults valueForKey:@"UGClientDeviceUUID"];
-
- // if none found in storage, generate one
- if (!g_deviceUUID) {
-
- if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
- // use identifierForVendor where possible
- g_deviceUUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
- }
- else {
- // otherwise, create a UUID (legacy method)
- CFUUIDRef uuidRef = CFUUIDCreate(nil);
- CFStringRef uuidStringRef = CFUUIDCreateString(nil, uuidRef);
- CFRelease(uuidRef);
- g_deviceUUID = [NSString stringWithString:(__bridge NSString *)uuidStringRef];
- }
- }
-
- // store in keychain for future reference
- [SSKeychain setPassword:g_deviceUUID forService:@"Usergrid" account:@"DeviceUUID"];
-
- return g_deviceUUID;
-}
-
--(UGClientResponse *)setRemoteStorage: (NSDictionary *)data
-{
- // prep and validate the sent-in dict
- NSString *error;
- NSString *jsonStr = [self createJSON:data error:&error];
- if ( !jsonStr )
- {
- // report the error
- UGClientResponse *ret = [UGClientResponse new];
- [ret setTransactionID:-1];
- [ret setTransactionState:kUGClientResponseFailure];
- [ret setResponse:error];
- [ret setRawResponse:nil];
- return ret;
- }
-
- NSString *handsetUUID = [UGClient getUniqueDeviceID];
- NSString *url = [self createURL:@"devices" append2:handsetUUID];
-
- // this is a put. We replace whatever was there before
- return [self httpTransaction:url op:kUGHTTPPut opData:jsonStr];
-}
-
--(UGClientResponse *)getRemoteStorage
-{
- NSString *handsetUUID = [UGClient getUniqueDeviceID];
- NSString *url = [self createURL:@"devices" append2:handsetUUID];
- return [self httpTransaction:url op:kUGHTTPGet opData:nil];
-}
-
-/***************************** OBLIQUE USAGE ******************************/
--(UGClientResponse *)apiRequest: (NSString *)url operation:(NSString *)op data:(NSString *)opData
-{
- // work out the op to use
- int opID = kUGHTTPGet;
- if ( [op isEqualToString:@"GET"] ) opID = kUGHTTPGet;
- if ( [op isEqualToString:@"POST"] ) opID = kUGHTTPPost;
- if ( [op isEqualToString:@"POSTFORM"] ) opID = kUGHTTPPostAuth;
- if ( [op isEqualToString:@"PUT"] ) opID = kUGHTTPPut;
- if ( [op isEqualToString:@"DELETE"] ) opID = kUGHTTPDelete;
-
- // fire it off. The data, formatting, etc. is all the client's problem.
- // That's the way oblique functionality is.
- return [self httpTransaction:url op:opID opData:opData];
-}
-
-/**************************** LOGGING ************************************/
--(void)setLogging: (BOOL)loggingState
-{
- m_bLogging = loggingState;
-}
-
-@end
-
-
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGClientDelegate.h
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGClientDelegate.h b/sdks/ios/UGAPI/UGClientDelegate.h
deleted file mode 100644
index 28bc996..0000000
--- a/sdks/ios/UGAPI/UGClientDelegate.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-#import "UGClientResponse.h"
-
-/******************************A NOTE ON THIS DELEGATE********************************
-Objects conform to this protocol to take advantage of the Asynchronus SDK functionality.
-The setDelegate method needs to be called on the current UGClient for this function to
-be called on an implemented delegate.
-
-If you do not set a delegate, all functions will run synchronously, blocking
-until a response has been received or an error detected.
-*************************************************************************************/
-@protocol UGClientDelegate <NSObject>
-
-//This method is called after every request to the UserGrid API.
-//It passes in the response to the API request, and returns nothing.
--(void)ugClientResponse:(UGClientResponse *)response;
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGClientResponse.h
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGClientResponse.h b/sdks/ios/UGAPI/UGClientResponse.h
deleted file mode 100755
index 01bc5a1..0000000
--- a/sdks/ios/UGAPI/UGClientResponse.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-
-// response states
-enum
-{
- kUGClientResponseSuccess = 0,
- kUGClientResponseFailure = 1,
- kUGClientResponsePending = 2
-};
-
-
-@interface UGClientResponse : NSObject
-
-// this will be a unique ID for this transaction. If you have
-// multiple transactions in progress, you can keep track of them
-// with this value. Note: The transaction ID of a synchronous
-// call response is always -1.
-@property int transactionID;
-
-// this will be one of three possible valuse:
-// kUGClientResponseSuccess: The operation is complete and was successful. response will
-// be valid, as will rawResponse
-//
-// kUGClientResponseFailure: There was an error with the operation. No further
-// processing will be done. response will be an NSString with
-// a plain-text description of what went wrong. rawResponse
-// will be valid if the error occurred after receiving data from
-// the service. If it occurred before, rawResponse will be nil.
-//
-// kUGClientResponsePending: The call is being handled asynchronously and not yet complete.
-// response will be nil. rawResponse will also be nil
-@property int transactionState;
-
-// This is the response. The type of this variable is dependant on the call that caused
-// this response.
-@property id response;
-
-// This is the raw text that was returned by the server.
-@property NSString *rawResponse;
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGClientResponse.m
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGClientResponse.m b/sdks/ios/UGAPI/UGClientResponse.m
deleted file mode 100755
index dc49fb4..0000000
--- a/sdks/ios/UGAPI/UGClientResponse.m
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "UGClientResponse.h"
-
-@implementation UGClientResponse
-
-@synthesize transactionID;
-@synthesize transactionState;
-@synthesize response;
-@synthesize rawResponse;
-
--(id)init
-{
- self = [super init];
- if ( self )
- {
- transactionID = -1;
- transactionState = -1;
- response = nil;
- rawResponse = nil;
- }
- return self;
-}
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGHTTPManager.h
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGHTTPManager.h b/sdks/ios/UGAPI/UGHTTPManager.h
deleted file mode 100755
index d6c1822..0000000
--- a/sdks/ios/UGAPI/UGHTTPManager.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-enum
-{
- kUGHTTPGet = 0,
- kUGHTTPPost = 1,
- kUGHTTPPostAuth = 2,
- kUGHTTPPut = 3,
- kUGHTTPDelete = 4
-};
-
-@interface UGHTTPManager : NSObject
-
-// blocks until a response is received, or until there's an error.
-// in the event of a response, it's returned. If there's an error,
-// the funciton returns nil and you can call getLastError to see what
-// went wrong.
--(NSString *)syncTransaction:(NSString *)url operation:(int)op operationData:(NSString *)opData;
-
-// sets up the transaction asynchronously. The delegate that's sent in
-// must have the following functions:
-//
-// -(void)httpManagerError:(UGHTTPManager *)manager error:(NSString *)error
-// -(void)httpManagerResponse:(UGHTTPManager *)manager response:(NSString *)response
-//
-// In all cases, it returns a transaction ID. A return value
-// of -1 means there was an error.
-// You can call getLastError to find out what went wrong.
--(int)asyncTransaction:(NSString *)url operation:(int)op operationData:(NSString *)opData delegate:(id)delegate;
-
-// get the current transactionID
--(int)getTransactionID;
-
-// sets the auth key
--(void)setAuth: (NSString *)auth;
-
-// cancel a pending transaction. The delegate will not be called and the results
-// will be ignored. Though the server side will still have happened.
--(void)cancel;
-
-// returns YES if this instance is available. NO if this instance is currently
-// in use as part of an asynchronous transaction.
--(BOOL)isAvailable;
-
-// sets the availability flag of this instance. This is done by UGClient
--(void)setAvailable:(BOOL)available;
-
-// a helpful utility function to make a string comform to URL
-// rules. It will escape all the special characters.
-+(NSString *)escapeSpecials:(NSString *)raw;
-
-// At all times, this will return the plain-text explanation of the last
-// thing that went wrong. It is cleared to "No Error" at the beginnign of
-// each new transaction.
--(NSString *)getLastError;
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGHTTPManager.m
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGHTTPManager.m b/sdks/ios/UGAPI/UGHTTPManager.m
deleted file mode 100755
index 5d62fe9..0000000
--- a/sdks/ios/UGAPI/UGHTTPManager.m
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "UGHTTPManager.h"
-
-// all transaction IDs are unique across all UGHTTPManagers.
-// this global increases every time there's an asynchronous
-// transaction.
-static int g_nextTransactionID = 1;
-
-// a mutex to protect against multiple threads getting
-// IDs at the same time, and possibly getting the same ID
-// because of it
-NSRecursiveLock *g_transactionIDLock = nil;
-
-@implementation UGHTTPManager
-{
- // data management for collecting incoming HTTP data
- // during asynch transactions
- NSMutableData *m_receivedData;
-
- // a general error string
- NSString *m_lastError;
-
- // the delegate sent in to the asynch method
- id m_delegate;
-
- // the transaction ID of the current (or most recent) transaction
- int m_transactionID;
-
- // availability of this instance. Managed by UGClient
- BOOL m_bAvailable;
-
- // mutex used to ensure the delegate is not changed
- // in a way that would cause a race condition.
- NSRecursiveLock *m_delegateLock;
-
- // the auth key to send along to requests
- NSString *m_auth;
-}
-
--(id)init
-{
- self = [super init];
- if ( self )
- {
- m_lastError = @"No error";
- m_receivedData = [NSMutableData data];
- m_bAvailable = YES;
- m_delegateLock = [NSRecursiveLock new];
- m_transactionID = -1;
- m_auth = nil;
-
- // lazy-init the transaction lock
- if ( !g_transactionIDLock )
- {
- g_transactionIDLock = [NSRecursiveLock new];
- }
- }
- return self;
-}
-
--(void)setAuth: (NSString *)auth
-{
- m_auth = auth;
-}
-
--(NSString *)getLastError
-{
- return m_lastError;
-}
-
--(int)getNextTransactionID
-{
- // make sure we can use this lock
- assert(g_transactionIDLock);
-
- [g_transactionIDLock lock];
- int ret = g_nextTransactionID++;
- [g_transactionIDLock unlock];
-
- return ret;
-}
-
--(int)getTransactionID
-{
- return m_transactionID;
-}
-
-
-//----------------------- SYNCHRONOUS CALLING ------------------------
--(NSString *)syncTransaction:(NSString *)url operation:(int)op operationData:(NSString *)opData;
-{
- // clear the transaction ID
- m_transactionID = -1;
-
- // use the synchronous funcitonality of NSURLConnection
- // clear the error
- m_lastError = @"No error";
-
- // formulate the request
- NSURLRequest *req = [self getRequest:url operation:op operationData:opData];
-
- NSURLResponse *response;
- NSError *error;
- NSData *resultData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
-
- if ( resultData )
- {
- // we got results
- NSString *resultString = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
- return resultString;
- }
-
- // if we're here, it means we got nil as the result
- m_lastError = [error localizedDescription];
- return nil;
-}
-
-//----------------------- ASYNCHRONOUS CALLING ------------------------
--(int)asyncTransaction:(NSString *)url operation:(int)op operationData:(NSString *)opData delegate:(id)delegate;
-{
- // clear the transaction ID
- m_transactionID = -1;
-
- // clear the error
- m_lastError = @"No error";
-
- if ( !delegate )
- {
- // an asynch transaction with no delegate has no meaning
- m_lastError = @"Delegate was nil";
- return -1;
- }
-
- // make sure the delegate responds to the various messages that
- // are required
- if ( ![delegate respondsToSelector:@selector(httpManagerError:error:)] )
- {
- m_lastError = @"Delegate does not have httpManagerError:error: method";
- return -1;
- }
- if ( ![delegate respondsToSelector:@selector(httpManagerResponse:response:)] )
- {
- m_lastError = @"Delegate does not have httpManagerResponse:response: method";
- return -1;
- }
-
- // only once we're assured everything is right do we set the internal value
- [m_delegateLock lock];
- m_delegate = delegate;
- [m_delegateLock unlock];
-
- // prep a transaction ID for this transaction
- m_transactionID = [self getNextTransactionID];
-
- // formulate the request
- NSURLRequest *req = [self getRequest:url operation:op operationData:opData];
-
- // fire it off
- NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
-
- // Note failure
- if ( !conn )
- {
- // failed to connect
- m_lastError = @"Unable to initiate connection.";
- return -1;
- }
-
- // success
- return m_transactionID;
-}
-
--(BOOL)isAvailable
-{
- return m_bAvailable;
-}
-
--(void)setAvailable:(BOOL)available
-{
- m_bAvailable = available;
-}
-
--(void)cancel
-{
- // we wrap this in a lock to ensure that the client can
- // call it at any time. It will not cause a race condition in
- // any callback thread.
- [m_delegateLock lock];
- m_delegate = nil;
- [m_delegateLock unlock];
-
- // note that we do not modify the "in use" flag. If we werei n use,
- // we remain in use until we receive a response or error. This ensures
- // no confusion on any subsequent transaction. We don't want the case
- // where a transaction is started, then cancelled, then a new transaction begun
- // before the first transaction's result comes in. That would lead to the second
- // transaction being answered with the first's reply. We avoid that possibility by
- // simply remaining "in use" until we get the reply or error.
-}
-
-// general helper function form aking escaped-strings
-+(NSString *)escapeSpecials:(NSString *)raw;
-{
- NSString *converted = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)raw, nil, CFSTR(";/?:@&=$+{}<>"), kCFStringEncodingUTF8);
- return converted;
-}
-
-// INTERNAL function for forming the request
--(NSURLRequest *)getRequest:(NSString *)url operation:(int)op operationData:(NSString *)opStr;
-{
- // make the url
- NSURL *nsurl = [NSURL URLWithString:url];
-
- NSMutableURLRequest *req = [NSMutableURLRequest new];
- [req setURL:nsurl];
-
- switch ( op )
- {
- case kUGHTTPGet: [req setHTTPMethod:@"GET"]; break;
- case kUGHTTPPost: [req setHTTPMethod:@"POST"]; break;
- case kUGHTTPPostAuth: [req setHTTPMethod:@"POST"]; break;
- case kUGHTTPPut: [req setHTTPMethod:@"PUT"]; break;
- case kUGHTTPDelete: [req setHTTPMethod:@"DELETE"]; break;
- }
-
- // set the auth, if any is available
- if ( m_auth )
- {
- NSMutableString *authStr = [NSMutableString new];
- [authStr appendFormat:@"Bearer %@", m_auth];
- [req setValue:authStr forHTTPHeaderField:@"Authorization"];
- }
-
- // if they sent an opStr, we make that the content
- if ( opStr )
- {
- // prep the post data
- NSData *opData = [opStr dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
-
- // make a string that tells the length of the post data. We'll need that for the HTTP header setup
- NSString *opLength = [NSString stringWithFormat:@"%d", [opData length]];
-
- [req setValue:opLength forHTTPHeaderField:@"Content-Length"];
-
- // PostAuth uses form encoding. All other operations use json
- if ( op == kUGHTTPPostAuth )
- {
- [req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
- }
- else
- {
- [req setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
- }
-
- [req setHTTPBody:opData];
- }
-
- // all set up and ready for use
- return req;
-
-}
-
-//------------------------------------------------------------------------------------------
-//-------------------------- NSURLCONNECTION DELEGATE METHODS ------------------------------
-//------------------------------------------------------------------------------------------
--(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
-{
- // got a response. clear out the data
- [m_receivedData setLength:0];
-}
-
--(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
-{
- // got some data. Append it.
- [m_receivedData appendData:data];
-}
-
--(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
-{
- // connection failed. Note the error
- m_lastError = [error localizedDescription];
-
- // send the error to the delegate. We wrap this in
- // send the result to the delegate.
- // wrap this in mutex locks, then check for validity of m_delegate inside.
- // this ensures no race conditions and allows arbitrary cancellation of callbacks
- [m_delegateLock lock];
- if ( m_delegate )
- {
- [m_delegate performSelector:@selector(httpManagerError:error:) withObject:self withObject:m_lastError];
- }
- m_delegate = nil;
- [m_delegateLock unlock];
-}
-
--(void)connectionDidFinishLoading:(NSURLConnection*)connection
-{
- // all done. Let's turn it in to a string
- NSString *resultString = [[NSString alloc] initWithData:m_receivedData encoding:NSUTF8StringEncoding];
-
- // send it to the delegate. See connection:didFailWithError: for an explanation
- // of the mutex locks
- [m_delegateLock lock];
- if ( m_delegate )
- {
- [m_delegate performSelector:@selector(httpManagerResponse:response:) withObject:self withObject:resultString];
- }
- m_delegate = nil;
- [m_delegateLock unlock];
-}
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGMultiStepAction.h
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGMultiStepAction.h b/sdks/ios/UGAPI/UGMultiStepAction.h
deleted file mode 100755
index fbc1259..0000000
--- a/sdks/ios/UGAPI/UGMultiStepAction.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-// an enumeration for multi-step processes.
-enum
-{
- kMultiStepNone = 0,
- kMultiStepCreateActivity = 1, // create an activity
- kMultiStepPostActivity = 2, // after creating an activity, post it to the user
- kMultiStepCreateGroupActivity = 3, // create an activity
- kMultiStepPostGroupActivity = 4, // after creating an activity, post it to the user
- kMultiStepCleanup = 5 // the final step of all multi-step transactions
-};
-
-// UGMultiStepAction is used internally for client actions that
-// require multiple transactions with the service. It is simple data
-// storage, used by UGClient in abstracting out multi-step transactions
-@interface UGMultiStepAction : NSObject
-
-// the transaction ID that this multistep is associated
-// with. When a transaction of this ID is complete, this is the
-// UGMultiStepAction instance ot ask what to do next
-@property int transactionID;
-
-// the next action this transaction should take
-@property int nextAction;
-
-// data necessary for subsequent steps
-@property NSString *userID;
-@property NSString *groupID;
-@property NSDictionary *activity;
-
-// the transactionID that will be sent to the user.
-// This is distinct from normal transaction IDs,
-// which we use internally at each step.
-@property int outwardTransactionID;
-
-// YES if this action should be reported to the
-// caller .No if not.
-@property BOOL reportToClient;
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGMultiStepAction.m
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGMultiStepAction.m b/sdks/ios/UGAPI/UGMultiStepAction.m
deleted file mode 100755
index 6a1b7c7..0000000
--- a/sdks/ios/UGAPI/UGMultiStepAction.m
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "UGMultiStepAction.h"
-
-@implementation UGMultiStepAction
-
-@synthesize transactionID;
-@synthesize nextAction;
-@synthesize userID;
-@synthesize groupID;
-@synthesize activity;
-@synthesize outwardTransactionID;
-@synthesize reportToClient;
-
-
--(id)init
-{
- self = [super init];
- if ( self )
- {
- reportToClient = NO;
- }
- return self;
-}
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGQuery.h
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGQuery.h b/sdks/ios/UGAPI/UGQuery.h
deleted file mode 100755
index b77e0a4..0000000
--- a/sdks/ios/UGAPI/UGQuery.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-#import <CoreLocation/CoreLocation.h>
-
-enum
-{
- kUGQueryOperationEquals = 0,
- kUGQueryOperationLessThan = 1,
- kUGQueryOperationLessThanOrEqualTo = 2,
- kUGQueryOperationGreaterThan = 3,
- kUGQueryOperationGreaterThanOrEqualTo = 4
-};
-
-/***************************************************************
- QUERY MANAGEMENT:
-
- All query functions take one of these as an optional parameter
- (the client may send nil if desired). This will specify the
- limitations of the query.
-***************************************************************/
-
-@interface UGQuery : NSObject
-
-// url terms used in UG searches. Set as you like.
-// These are convenience methods. the same effect can be done
-// by calling addURLTerm
--(void)setConsumer: (NSString *)consumer;
--(void)setLastUUID: (NSString *)lastUUID;
--(void)setTime: (long)time;
--(void)setPrev: (int)prev;
--(void)setNext: (int)next;
--(void)setLimit: (int)limit;
--(void)setPos: (NSString *)pos;
--(void)setUpdate: (BOOL)update;
--(void)setSynchronized: (BOOL)synchronized;
-
-// a general function for adding additional URL terms.
-// Note that all of the set functions above turn around and
-// call this.
--(void)addURLTerm: (NSString *)urlTerm equals:(NSString *)equals;
-
-// ql operation requirements. For each of these, you provide the term, followed
-// by the operation (a kUGQueryOperationXXXX constant) followed by the value
-// in whatever form you have it (NSString, int, or float are supported)
-// Example: [foo addRequiredOperation: @"age" kUGQueryLessThan valueInt:27] would
-// add the term "age < 27" to the ql.
--(void)addRequiredOperation: (NSString *)term op:(int)op valueStr:(NSString *)valueStr;
--(void)addRequiredOperation: (NSString *)term op:(int)op valueInt:(int) valueInt;
-
-// adds a "contains" requirement to the query. This adds the requirement that a value
-// contain a given string. Example: [foo addRequiredContains:@"hobbies value:@"fishing"]
-// would add the term "hobbies contains 'fishing'" to the ql.
--(void)addRequiredContains: (NSString *)term value:(NSString *)value;
-
-// adds an "in" requirement to the query. This adds a requirement that a field
-// be within a certain range. Example [foo appendRequiredIn:@"age" low:16.0 high:22.0]
-// would add the term "age in 16.0,22.0" to the ql.
-// Note that the qualifier is inclusive, meaning it is true if low <= term <= high.
--(void)addRequiredIn:(NSString *)term low:(int)low high:(int)high;
-
-// adds a "within" requirement. This adds a constraint that the term be within a
-// certain distance of the sent-in x,y coordinates.
--(void)addRequiredWithin:(NSString *)term latitude:(float)latitude longitude:(float)longitude distance:(float)distance;
-
-// assembles a "within" requirement with a term name, CLLocation, and distance
--(void)addRequiredWithinLocation:(NSString *)term location:(CLLocation *)location distance:(float)distance;
-
-//-------------------- Oblique usage ----------------------------
-// adds a requirement to the query. The requirements will
-// *all* be sent when the query is adopted. This is an escalating
-// list as you add them. Requirements are in UG Querty language.
-// So something like "firstname='bob'". This is one of the few places
-// where the data you give will be sent to the server almost untouched.
-// So if you make a mistake in your query, you are likely to cause the whole
-// transaction to return an error.
-// NOTE: This is different thant URL terms. These are query terms sent along
-// to the *single* URL term "ql".
-// Note: This is an oblique-usage function. You will find all the ql operations
-// supported in the various addRequiredXXXX functions above. You would only use
-// this function if you already have ql strings prepared for some reason, or if
-// there are new ql format operations that are not supported by this API.
--(void)addRequirement: (NSString *)requirement;
-
-// returns the URL-ready string that detailes all specified requirements.
-// This is used internally by UGClient, you don't need to call it.
--(NSString *)getURLAppend;
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGQuery.m
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGQuery.m b/sdks/ios/UGAPI/UGQuery.m
deleted file mode 100755
index 740ec5c..0000000
--- a/sdks/ios/UGAPI/UGQuery.m
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "UGQuery.h"
-#import "UGHTTPManager.h"
-
-@implementation UGQuery
-{
- NSMutableArray *m_requirements;
- NSMutableString *m_urlTerms;
-}
-
--(id)init
-{
- self = [super init];
- if ( self )
- {
- m_requirements = [NSMutableArray new];
- m_urlTerms = [NSMutableString new];
- }
- return self;
-}
-
--(void)setConsumer: (NSString *)consumer
-{
- [self addURLTerm:@"consumer" equals:consumer];
-}
-
--(void)setLastUUID: (NSString *)lastUUID
-{
- [self addURLTerm:@"last" equals:lastUUID];
-}
-
--(void)setTime: (long)time
-{
- NSMutableString *str = [NSMutableString new];
- [str appendFormat:@"%ld", time];
- [self addURLTerm:@"time" equals:str];
-}
-
--(void)setPrev: (int)prev
-{
- NSMutableString *str = [NSMutableString new];
- [str appendFormat:@"%d", prev];
- [self addURLTerm:@"prev" equals:str];
-}
-
--(void)setNext: (int)next
-{
- NSMutableString *str = [NSMutableString new];
- [str appendFormat:@"%d", next];
- [self addURLTerm:@"next" equals:str];
-}
-
--(void)setLimit: (int)limit
-{
- NSMutableString *str = [NSMutableString new];
- [str appendFormat:@"%d", limit];
- [self addURLTerm:@"limit" equals:str];
-}
-
--(void)setPos: (NSString *)pos
-{
- [self addURLTerm:@"pos" equals:pos];
-}
-
--(void)setUpdate: (BOOL)update
-{
- if ( update )
- {
- [self addURLTerm:@"update" equals:@"true"];
- }
- else
- {
- [self addURLTerm:@"update" equals:@"false"];
- }
-}
-
--(void)setSynchronized: (BOOL)synchronized
-{
- if ( synchronized )
- {
- [self addURLTerm:@"synchronized" equals:@"true"];
- }
- else
- {
- [self addURLTerm:@"synchronized" equals:@"false"];
- }
-}
-
--(void)addURLTerm: (NSString *)urlTerm equals:(NSString *)equals
-{
- // ignore anything with a nil
- if ( !urlTerm ) return;
- if ( !equals ) return;
-
- // escape the strings
- NSString *escapedUrlTerm = [UGHTTPManager escapeSpecials:urlTerm];
- NSString *escapedEquals = [UGHTTPManager escapeSpecials:equals];
-
- // add it in
- if ( [m_urlTerms length] > 0 )
- {
- // we already have some terms. Append an & before continuing
- [m_urlTerms appendFormat:@"&"];
- }
- [m_urlTerms appendFormat:@"%@=%@", escapedUrlTerm, escapedEquals];
-}
-
--(void)addRequiredOperation: (NSString *)term op:(int)op valueStr:(NSString *)valueStr
-{
- // disregard invalid values
- if ( !term ) return;
- if ( !valueStr ) return;
-
- NSString *opStr = [self getOpStr: op];
- if ( !opStr ) return; // nil opStr means they sent in an invalid op code
-
- // assemble the requirement string
- NSMutableString *assembled = [NSMutableString new];
- [assembled appendFormat:@"%@ %@ '%@'", term, opStr, valueStr];
-
- // add it as a req
- [self addRequirement:assembled];
-}
-
--(void)addRequiredOperation: (NSString *)term op:(int)op valueInt:(int) valueInt
-{
- // disregard invalid values
- if ( !term ) return;
-
- NSString *opStr = [self getOpStr: op];
- if ( !opStr ) return; // nil opStr means they sent in an invalid op code
-
- // assemble the requirement string
- NSMutableString *assembled = [NSMutableString new];
- [assembled appendFormat:@"%@ %@ %d", term, opStr, valueInt];
-
- // add it as a req
- [self addRequirement:assembled];
-}
-
--(void)addRequiredContains: (NSString *)term value:(NSString *)value
-{
- // disregard invalid values
- if ( !term ) return;
- if ( !value ) return;
-
- // assemble the requirement string
- NSMutableString *assembled = [NSMutableString new];
- [assembled appendFormat:@"%@ contains '%@'", term, value];
-
- // add it as a req
- [self addRequirement:assembled];
-}
-
--(void)addRequiredIn:(NSString *)term low:(int)low high:(int)high
-{
- // disregard invalid values
- if ( !term ) return;
-
- // assemble the requirement string
- NSMutableString *assembled = [NSMutableString new];
- [assembled appendFormat:@"%@ in %d,%d", term, low, high];
-
- // add it as a req
- [self addRequirement:assembled];
-}
-
--(void)addRequiredWithin:(NSString *)term latitude:(float)latitude longitude:(float)longitude distance:(float)distance;
-{
- // disregard invalid values
- if ( !term ) return;
-
- // assemble the requirement string
- NSMutableString *assembled = [NSMutableString new];
- [assembled appendFormat:@"%@ within %f of %f,%f", term, distance, latitude, longitude];
-
- // add it as a req
- [self addRequirement:assembled];
-}
-
--(void)addRequiredWithinLocation:(NSString *)term location:(CLLocation *)location distance:(float)distance
-{
- [self addRequiredWithin:term latitude:location.coordinate.latitude longitude:location.coordinate.longitude distance:distance];
-}
-
--(void)addRequirement: (NSString *)requirement
-{
- // add the URL-ready requirement to our list
- [m_requirements addObject:requirement];
-}
-
--(NSString *)getURLAppend
-{
- // assemble a url append for all the requirements
- // prep a mutable string
- NSMutableString *ret = [NSMutableString new];
- [ret setString:@"?"];
-
- // true if we've put anything in the string yet.
- BOOL bHasContent = NO;
-
- // start with the ql term
- if ( [m_requirements count] > 0 )
- {
- // if we're here, there are queries
- // assemble a single string for the ql
- NSMutableString *ql = [NSMutableString new];
- for ( int i=0 ; i<[m_requirements count] ; i++ )
- {
- if ( i>0 )
- {
- // connect terms
- [ql appendFormat:@" and "];
- }
- [ql appendFormat:@"%@", [m_requirements objectAtIndex:i]];
- }
-
- // escape it
- NSString *escapedQL = [UGHTTPManager escapeSpecials:ql];
- [ret appendFormat:@"ql=%@", escapedQL];
- bHasContent = YES;
- }
-
- if ( [m_urlTerms length] > 0 )
- {
- if ( bHasContent )
- {
- [ret appendFormat:@"&%@", m_urlTerms];
- }
- else
- {
- [ret appendFormat:@"%@", m_urlTerms];
- }
- bHasContent = YES;
- }
-
- if ( !bHasContent )
- {
- // no content
- return @"";
- }
-
- // all prepared
- return ret;
-}
-
-// Internal function
- -(NSString *)getOpStr:(int)op
-{
- switch (op)
- {
- case kUGQueryOperationEquals: return @"=";
- case kUGQueryOperationGreaterThan: return @">";
- case kUGQueryOperationGreaterThanOrEqualTo: return @">=";
- case kUGQueryOperationLessThan: return @"<";
- case kUGQueryOperationLessThanOrEqualTo: return @"<=";
- }
- return nil;
-}
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGUser.h
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGUser.h b/sdks/ios/UGAPI/UGUser.h
deleted file mode 100755
index 58e3b99..0000000
--- a/sdks/ios/UGAPI/UGUser.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-@interface UGUser : NSObject
-
-@property NSString *username;
-@property NSString *email;
-@property NSString *uuid;
-@property NSString *picture;
-
-@end
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/ios/UGAPI/UGUser.m
----------------------------------------------------------------------
diff --git a/sdks/ios/UGAPI/UGUser.m b/sdks/ios/UGAPI/UGUser.m
deleted file mode 100755
index d683b6d..0000000
--- a/sdks/ios/UGAPI/UGUser.m
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "UGUser.h"
-
-@implementation UGUser
-
-@synthesize username;
-@synthesize email;
-@synthesize uuid;
-@synthesize picture;
-
-@end