chatContactListDidChange method firing every time chatDidLogin method sends presence timer - quickblox

UPDATE I ended up just adding a refresh button for the user to refresh the contactlist manually. I think if you guys want to get more small developers to use Quickblox for social apps like messaging and stuff you should add more documentation and examples for the Contact List. It's the core feature of any social app and yet you only devote a paragraph to it and a code snippet full of static data that cannot be applied to real-worlds apps.
For instance, one of your answers for the contact list says to do - (void)chatDidReceiveContactAddRequestFromUser:(NSUInteger)userID{
[[QBChat instance] confirmAddContactRequest:userID];
} to accept a friend request. That method makes it so that a user can't accept or deny a friend request but automatically accepts every friend request received. It should allow a user the option to decline or accept the request without having to build an additional list to keep track of requests you've accepted or denied.
in my chatContactListDidChange method I have
- (void)chatContactListDidChange:(QBContactList *)contactList{
[[NSNotificationCenter defaultCenter] postNotificationName:ContactListChanged object:nil];
NSLog(#"contact list changed");
NSLog(#"current contact list %#", [QBChat instance].contactList);
}
and in chatDidLogin
- (void)chatDidLogin{
// Start sending presences
[self.presenceTimer invalidate];
self.presenceTimer = [NSTimer scheduledTimerWithTimeInterval:5
target:[QBChat instance] selector:#selector(sendPresence)
userInfo:nil repeats:YES];
if(self.loginCompletionBlock != nil){
self.loginCompletionBlock();
self.loginCompletionBlock = nil;
}
}
Every 5 seconds the chatContactListDidChange method fires even though no users have changed their presence. Here is the log
2014-07-14 18:52:30.076 sample-chat[45514:3d07] -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
2014-07-14 18:52:30.124 sample-chat[45514:90b] contact list changed
2014-07-14 18:52:30.125 sample-chat[45514:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)
2014-07-14 18:52:35.075 sample-chat[45514:3d07] -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
2014-07-14 18:52:35.128 sample-chat[45514:90b] contact list changed
2014-07-14 18:52:35.128 sample-chat[45514:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)
2014-07-14 18:52:40.075 sample-chat[45514:401f] -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
2014-07-14 18:52:40.129 sample-chat[45514:90b] contact list changed
2014-07-14 18:52:40.129 sample-chat[45514:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)
2014-07-14 18:52:45.075 sample-chat[45514:401f] -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
2014-07-14 18:52:45.148 sample-chat[45514:90b] contact list changed
2014-07-14 18:52:45.148 sample-chat[45514:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)
I tried turning off the presence timer but then I get disconnect error QBChat/didDisconnect, error: Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo=0xd4b0e30 {NSLocalizedDescription=Socket closed by remote peer}
Also, when I first login as a user the chatContactListDidChange method fires 4 times right away, here is the log of that
2014-07-14 19:15:23.810 sample-chat[45629:3e03] -[QBChat xmppStream:didSendIQ:] -> IQ: <iq type="get" id="561006823"><query xmlns="jabber:iq:roster"/></iq>
2014-07-14 19:15:23.810 sample-chat[45629:3e03] -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
2014-07-14 19:15:23.810 sample-chat[45629:90b] waiting for approval = (
)
2014-07-14 19:15:23.811 sample-chat[45629:90b] contact list changed
2014-07-14 19:15:23.811 sample-chat[45629:3e03] -[QBChat xmppStream:didReceiveIQ:] -> <iq xmlns="jabber:client" to="1278228-11606#chat.quickblox.com/tigase-169625" type="result" id="561006823"><query xmlns="jabber:iq:roster"><item name="1290038-11606" subscription="none" jid="1290038-11606#chat.quickblox.com"/><item name="1286872-11606" ask="subscribe" subscription="none" jid="1286872-11606#chat.quickblox.com"/><item name="1287012-11606" ask="subscribe" subscription="none" jid="1287012-11606#chat.quickblox.com"/><item name="1287015-11606" ask="subscribe" subscription="none" jid="1287015-11606#chat.quickblox.com"/><item name="1289912-11606" ask="subscribe" subscription="none" jid="1289912-11606#chat.quickblox.com"/><item name="1289984-11606" ask="subscribe" subscription="none" jid="1289984-11606#chat.quickblox.com"/></query></iq>
2014-07-14 19:15:23.811 sample-chat[45629:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)
2014-07-14 19:15:23.947 sample-chat[45629:90b] waiting for approval = (
)
2014-07-14 19:15:23.946 sample-chat[45629:3e03] Request finished, response:
headers:{
"Access-Control-Allow-Origin" = "*";
"Cache-Control" = "max-age=0, private, must-revalidate";
Connection = "keep-alive";
"Content-Type" = "application/xml; charset=utf-8";
Date = "Tue, 15 Jul 2014 00:15:23 GMT";
Etag = "\"6b46ffce805a218f9a8eb3082dca64b7\"";
"QB-Token-ExpirationDate" = "2014-07-15 02:15:23 UTC";
"QuickBlox-REST-API-Version" = "0.1.1";
Server = "nginx/1.0.15";
Status = "201 Created";
"Transfer-Encoding" = Identity;
"X-Rack-Cache" = "invalidate, pass";
"X-Request-Id" = 7122bfedd350cab031cdaf1375b28e7f;
"X-Runtime" = "0.018427";
"X-UA-Compatible" = "IE=Edge,chrome=1";
}
body:
<?xml version="1.0" encoding="UTF-8"?>
<session>
<_id>53c4729b535c123d96004e43</_id>
<application-id type="integer">11606</application-id>
<created-at type="datetime">2014-07-15T00:15:23Z</created-at>
<device-id type="integer">0</device-id>
<nonce type="integer">453</nonce>
<token>60d472f2c86e587151bd5fa1c61db1924675fcf6</token>
<ts type="integer">1405383323</ts>
<updated-at type="datetime">2014-07-15T00:15:23Z</updated-at>
<user-id type="integer">1278228</user-id>
<id type="integer">24054</id>
</session>
error:
2014-07-14 19:15:23.947 sample-chat[45629:90b] contact list changed
2014-07-14 19:15:23.947 sample-chat[45629:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)
2014-07-14 19:15:23.948 sample-chat[45629:90b] waiting for approval = (
)
2014-07-14 19:15:23.948 sample-chat[45629:90b] contact list changed
2014-07-14 19:15:23.948 sample-chat[45629:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)
2014-07-14 19:15:23.949 sample-chat[45629:90b] waiting for approval = (
)
2014-07-14 19:15:23.949 sample-chat[45629:90b] contact list changed
2014-07-14 19:15:23.949 sample-chat[45629:90b] current contact list
[ContactList]
contacts: (
)
pendingApproval: (
" userId: 1287015, online: 0, subscriptionState: none",
" userId: 1289912, online: 0, subscriptionState: none",
" userId: 1289984, online: 0, subscriptionState: none",
" userId: 1287012, online: 0, subscriptionState: none",
" userId: 1286872, online: 0, subscriptionState: none"
)

Related

Nested Documents in FaunaDB

I am just starting Fauna and FQL. How do we add a nested document inside another document using the online shell?
This is what I have so far
users: [
{
userID: "from google",
userName: "from signup form",
userEmail: "from signup form form",
profileimgurl: "maybe from google",
accessCode: 12345,
role: "main or secondary. customer will automatically become main."
},
{
userID: "from google",
userName: "from signup form",
userEmail: "from signup form form",
profileimgurl: "maybe from google",
accessCode: 12345,
role: "main or secondary. customer will automatically become main."
}
]
Fauna stores data in schemaless Documents, so you can embed arrays or other objects within the Document's data. For example, from the shell:
Create(
Collection("users"),
{
data: {
name: "Paul",
email: "paul#paul.com
address: {
country: "United States",
},
tags: ["pinball", "camping"]
}
}
)
Depending on how you need to read and update your documents, it may be appropriate to save data in a separate collection and maintain relationships with References.
Create(
Collection("public_profiles"),
{
data: {
name: "Paul",
tags: ["pinball", "camping"]
}
}
)
{
ref: Ref(Collection("public_profiles"), "307924242117165124"),
ts: 1629918291110000,
data: { name: "Paul", tags: ["pinball", "camping"] }
}
Update(
Ref(Collection("users"), "307924248572638574"),
{
data: {
tags: null,
profile: Ref(Collection("public_profiles"), "307924242117165124")
}
}
)
The Docs have a Social Graph example that demonstrates how to create and query relationships.

Trying to structure a SQL or Knex query for social posts from groups where user is a member

I have 4 tables queried using a combination of raw sql, knex and objection.js queries. Users and Groups are associated by Memberships and Posts which belong to Groups
Primary/Foreign Keys
Users: id, has_many Groups via Memberships
Groups: id, has_many Users via Memberships
Memberships: id, groups_id, users_id
Posts: id, users_id, groups_id
I am attempting to return all of the Posts that Belong to all of the Groups that a User is a Member of.
The following query, returns the posts, but does not provide all of the fields I need:
SELECT users.username, users.avatar_url, posts.id, posts.body, posts.users_id, posts.groups_id FROM posts INNER JOIN memberships ON posts.groups_id = memberships.groups_id JOIN users on memberships.users_id = users.id WHERE memberships.users_id = ${userId}
Specifically, the query returns the avatar for the current_user with id: userId, instead of returning the user information related to the specific post.
Here is the response to the request:
Result {
command: 'SELECT',
rowCount: 9,
oid: null,
rows:
[ { username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 1,
body: 'user 1 comments to group 1',
users_id: 1,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 3,
body: 'user 1 comments to group 1 #2',
users_id: 1,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 4,
body: 'user 2 comments to group 1',
users_id: 2,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 6,
body: 'user 3 comments to group 1',
users_id: 3,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 10,
body: 'user 5 comments to group 1',
users_id: 5,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 12,
body: 'user 6 comments to group 1',
users_id: 6,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 16,
body: 'user 8 comments to group 1',
users_id: 8,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 18,
body: 'test\n',
users_id: 8,
groups_id: 1 },
{ username: 'usersix',
avatar_url: 'https://image.flaticon.com/icons/svg/145/145864.svg',
id: 19,
body: 'another test',
users_id: 8,
groups_id: 1 } ],
fields:
[ Field {
name: 'username',
tableID: 31280,
columnID: 2,
dataTypeID: 1043,
dataTypeSize: -1,
dataTypeModifier: 259,
format: 'text' },
So in the data above, this request is from usersix, who belongs only to group 1. As expected, all the posts have groups_id =1, however all of the avatar_urls are the same, as is username.
Lastly, here is some json outlining the relationship between posts and users:
{
"id": 1,
"body": "user 1 comments to group 1",
"users_id": 1,
"created_at": null,
"updated_at": null,
"groups_id": 1,
"user": {
"id": 1,
"username": "userone",
"email": "userone#gmail.com",
"password": "$2a$10$tiTQXusc4msyM0/73YfZAensmiCEI3FrTjP/JLS9nRctnut9x7od.",
"created_at": null,
"updated_at": null,
"avatar_url": "https://image.flaticon.com/icons/svg/145/145867.svg",
"bio": "Lorem ipsum dolor amet vexillologist bitters pickled 90's put a bird on it mlkshk street art squid lyft butcher prism. Kombucha tousled chicharrones keytar semiotics flexitarian, pinterest copper mug asymmetrical VHS. Chartreuse vaporware copper mug raclette, PBR&B pinterest keytar farm-to-table bicycle rights pitchfork poke kogi. Cornhole flexitarian deep v, post-ironic art party artisan edison bulb etsy. Schlitz VHS shabby chic lomo.",
"location": "New York, NY"
}
},
I am trying to figure out how to get the associated fields in the join table.
Your joins are the problem:
SELECT
users.username, users.avatar_url, posts.id, posts.body, posts.users_id, posts.groups_id
FROM
posts
INNER JOIN memberships ON posts.groups_id = memberships.groups_id
JOIN users ON memberships.users_id = users.id
WHERE memberships.users_id = ${userId}
By joining the users relation against the memberships, you essentially are selecting the current user - the same one that you filter for with the WHERE clause. Instead, you want to join the users against the posts by the authorship column:
SELECT
users.username, users.avatar_url, posts.id, posts.body, posts.users_id, posts.groups_id
FROM
posts
INNER JOIN memberships ON posts.groups_id = memberships.groups_id
JOIN users ON posts.users_id = users.id
-- ^^^^^
WHERE memberships.users_id = ${userId}

Rails 5, rails c data output display in an in a view

Something strange is happening in my views, in a rails 5 app. Everytime I display a view I get output from My console displaying in my index views
I have searched everything online and cannot find a solution to stop it from displaying...
index action in my controller:
def index
if params[:category].blank?
#books = Book.all.order("created_at DESC")
else
#category_id = Category.find_by(name: params[:category]).id
#books = Book.where(:category_id => #category_id).order("created_at DESC")
end
end
Whats appearing in my view
Jaws
Michael Collins
Messi
The Assination of Jesse James
Pocket Reference JavaScript
A Game of Thrones: The Illustrated Edition: A Song of Ice and Fire: Book 3
The Lion The Witch and The Wardrobe
The Rise of The Islamic State
1984
The Principles of Objected Oriented JavaScript
Dracula
No Country for Old Men
Game of Thrones: A Storm of Swords; Steel and Snow, Book 3, Part 1
[#<Book id: 19, title: "Jaws", description: "kdmfvkmvlsf", author: "Stephen King", created_at: "2018-07-22 22:14:54", updated_at: "2018-07-22 22:14:54", user_id: 1, category_id: 5>, #<Book id: 18, title: "Michael Collins ", description: " jnkefjn", author: "Tim Pat Coogan", created_at: "2018-07-22 22:09:34", updated_at: "2018-07-22 22:09:34", user_id: 1, category_id: 3>, #<Book id: 17, title: "Messi", description: "SDNFKJVVSFNVJKNVFJ", author: "Guillem Balague ", created_at: "2018-07-22 20:54:38", updated_at: "2018-07-22 20:54:38", user_id: 2, category_id: 3>, #<Book id: 16, title: "The Assination of Jesse James ", description: "jsdnfvjksnvjnfvfsnjvsn jdfnvjnsfvkjnvkjnfdj jefnvj...", author: "Jesse James", created_at: "2018-07-22 20:37:03", updated_at: "2018-07-22 20:37:03", user_id: 2, category_id: 4>, #<Book id: 15, title: "Pocket Reference JavaScript", description: "erfveafv", author: "fvsfv", created_at: "2018-07-22 20:29:01", updated_at: "2018-07-22 20:29:01", user_id: 2, category_id: 1>, #<Book id: 14, title: "A Game of Thrones: The Illustrated Edition: A Song...", description: "ADFVFV", author: "George R. R. Martin", created_at: "2018-07-22 17:06:24", updated_at: "2018-07-22 17:06:24", user_id: 2, category_id: 2>, #<Book id: 13, title: "The Lion The Witch and The Wardrobe", description: "jsfnvjfnv", author: "Someone", created_at: "2018-07-22 15:59:12", updated_at: "2018-07-22 15:59:12", user_id: 2, category_id: 2>, #<Book id: 12, title: "The Rise of The Islamic State ", description: "fdvmsdfkvmfmskdfvm sdfmvsfdmv", author: "Patrick Cockburn", created_at: "2018-07-22 15:56:06", updated_at: "2018-07-22 15:56:06", user_id: 2, category_id: 4>, #<Book id: 11, title: "1984", description: "JSDNFVJFNVSFNVSLKFJNSJVNJFNVVJFSNDJ", author: "George Orwell", created_at: "2018-07-22 15:22:05", updated_at: "2018-07-22 15:22:05", user_id: 2, category_id: 8>, #<Book id: 10, title: "The Principles of Objected Oriented JavaScript ", description: "Lorem Ipsum is simply dummy text of the printing a...", author: "Walter Isaacson", created_at: "2018-07-22 15:18:05", updated_at: "2018-07-22 15:18:05", user_id: 2, category_id: 1>, #<Book id: 9, title: "Dracula ", description: "Bram Stoker's Dracula is a 1992 American gothic ho...", author: "Bram Stroker", created_at: "2018-07-22 14:48:44", updated_at: "2018-07-22 14:48:44", user_id: 2, category_id: nil>, #<Book id: 8, title: "No Country for Old Men", description: "Cormac McCarthy was born in Rhode Island. He later...", author: "Cormac McCarthy", created_at: "2018-07-22 14:46:23", updated_at: "2018-07-22 14:46:23", user_id: 1, category_id: nil>, #<Book id: 7, title: "Game of Thrones: A Storm of Swords; Steel and Snow...", description: "Megalodon (Carcharocles megalodon), an extinct spe...", author: "George R. R. Martin", created_at: "2018-07-22 14:41:38", updated_at: "2018-07-22 14:41:38", user_id: 1, category_id: nil>]
You have something similar to this in your view:
<%= #books.each do |book| %>
remove the =
<% #books.each do |book| %>

strongloop loopback find users role using loaded operation hook

I have cloned a https://github.com/beeman/loopback-angular-admin and I have created a couple of new roles using the loopback explorer and I am trying to get all the roles of a particular user when he logs in by loaded operation hook defined here -
https://docs.strongloop.com/display/public/LB/Operation+hooks#Operationhooks-loaded
like this -
user.observe('loaded', function appendRole(ctx, next){
if(ctx.instance){
user.findOne({
where: {
id: ctx.instance.id
},
include: {
"relation":"roles"
}
})
}
next();
})
so how do I return roles of a particular user using operation hooks. I am able to get all the roles of a user using loopback explorer using this api call
http://localhost:80/api/users/567ce48d6503f9404b56bb3e/roles?access_token=gyPzW3rpr3uzve2bUHtZQWv8iV5PfZYW7QLicCs4GwIKTdNA33SeRAlgPIQef7AE
UPDATE :
So, I tried adding the following code to the user.js -
user.observe('loaded', function appendRole(ctx, next){
if(ctx.instance){
console.log(ctx.instance.roles);
}
next();
})
and I am getting the following output in the console -
{ [Function]
_receiver:
{ username: 'harshitladdha93#gmail.com',
password: '$2a$10$Bubhaq1LXFyCUn.W1/pEOewLSqspcP2GQlONwGH98V4HqCOAc9522',
email: 'harshitladdha93#gmail.com',
status: 'created',
created: Mon Jan 04 2016 22:53:53 GMT+0530 (IST),
firstName: 'Harshit',
lastName: 'Laddha',
gender: 'male',
birthday: '1993-07-30T18:30:00.000Z',
qualification: 'sa;',
experience: 'askjdl',
achievements: 'sakldj',
street: 'has',
locality: 'alskjd',
area: 'lkjd',
city: 'bangalore',
id: 568aaaa997ace4670b5d9ac2 },
_scope:
{ where: { principalId: 568aaaa997ace4670b5d9ac2 },
collect: 'role',
include: 'role' },
_targetClass: 'Role',
getAsync: [Function],
build: [Function: build],
create: [Function],
updateAll: [Function: updateAll],
destroyAll: [Function: destroyAll],
findById: [Function],
findOne: [Function: findOne],
count: [Function: count],
destroy: [Function],
updateById: [Function],
exists: [Function],
add: [Function],
remove: [Function] }
so how do I get the roles of user using loaded operation hook
Did you try ctx.instance.roles?
UPDATE: Ah crap, that's right, I guess you'll need to do a lookup, but you can't use a user.find() since it will trigger an infinite loop on the loaded observe. Try something like this:
user.observe('loaded', function getRoleMappings(ctx, next) {
var roleMapFilter = {
where: {principalId: ctx.instance.id},
include: ['role']
};
user.app.models.RoleMapping.find(roleMapFilter, function(err, roleMaps) {
if (err) {
console.log('roleMap', err);
next(err);
}
console.log("roleMaps ", roleMaps);
next();
});
});
console.log("roleMaps ", roleMaps); should output something like:
roleMaps [
{
id: 1,
principalType: 'USER',
principalId: '1',
roleId: 1,
role: {
id: 1,
name: 'admin',
description: null,
created: Thu Jun 25 2015 10:24:40 GMT-0700 (PDT),
modified: Thu Jun 25 2015 10:24:40 GMT-0700 (PDT)
}
},
{
id: 2,
principalType: 'USER',
principalId: '1',
roleId: 6,
role: {
id: 6,
name: 'sales',
description: null,
created: Thu Jun 25 2015 10:24:40 GMT-0700 (PDT),
modified: Thu Jun 25 2015 10:24:40 GMT-0700 (PDT)
}
}
]

Foursquare API Lists -> ListItems -> ?Venues?

Via the foursquare API and documentation, i'm trying to extract venues from lists.
I'm hitting getting a list response, which has listItems, which is suppose to be "count and items of list items on this list."
What the API responds with is just the count.
{
id: "510ae78ae4b0607cd8d8504f"
name: "Brunchn'"
description: ""
user: {
id: "157255"
firstName: "Jon"
lastName: "Doe"
gender: "male"
relationship: "self"
photo: {
prefix: "https://irs3.4sqi.net/img/user/"
suffix: "/POOIJDBXTTRPSB0.jpg"
}
}
editable: true
public: true
collaborative: false
url: "https://foursquare.com/jon_doe/list/brunch"
canonicalUrl: "https://foursquare.com/jon_doe/list/brunch"
createdAt: 1359669130
updatedAt: 1364583099
followers: {
count: 0
}
listItems: {
count: 3
}
}
from the documentation, if i get the item response, I can retrieve the venue, but there doesn't seem to be a connection, or i'm going at this from the wrong API call. Anyone have any suggestions?
The call is https://api.foursquare.com/v2/users/self/lists