Use a REST API: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|Go}}: Added second version which allows for creating events.) |
||
Line 21: | Line 21: | ||
=={{header|Go}}== |
=={{header|Go}}== |
||
===Using the standard library=== |
|||
{{incomplete|Go|This needs a way to submit events to Meetup.}} |
|||
<br> |
|||
Note that this version doesn't include code to submit events to Meetup. |
|||
<lang go>package main |
<lang go>package main |
||
Line 156: | Line 158: | ||
Description: <p><b>Beginners Lighting:</b> join us for this exciting workshop… |
Description: <p><b>Beginners Lighting:</b> join us for this exciting workshop… |
||
</pre> |
</pre> |
||
<br> |
|||
===Using a third party library=== |
|||
{{libheader|Meetup-client(for Go)}} |
|||
<br> |
|||
Note that this code is untested as you need a paid subscription to create events which I don't have. |
|||
<lang go>package main |
|||
import ( |
|||
"fmt" |
|||
"github.com/Guitarbum722/meetup-client" |
|||
"io/ioutil" |
|||
"log" |
|||
"net/url" |
|||
"strconv" |
|||
"strings" |
|||
"time" |
|||
) |
|||
var key string |
|||
func init() { |
|||
// Read an API key from the specified file. |
|||
const keyFile = "api_key.txt" |
|||
keydata, err := ioutil.ReadFile(keyFile) |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
key = strings.TrimSpace(string(keydata)) |
|||
} |
|||
func eventOptions(et map[string][]string, vals url.Values) { |
|||
for k, v := range et { |
|||
if len(v) < 1 { |
|||
break |
|||
} |
|||
switch k { |
|||
case meetup.GroupID: |
|||
vals.Add(meetup.GroupID, strings.Join(v, ",")) |
|||
case meetup.GroupURLName: |
|||
vals.Add(meetup.GroupURLName, strings.Join(v, ",")) |
|||
case meetup.EventName: |
|||
vals.Add(meetup.EventName, strings.Join(v, ",")) |
|||
case meetup.Description: |
|||
vals.Add(meetup.Description, strings.Join(v, ",")) |
|||
case meetup.EventTime: |
|||
vals.Add(meetup.EventTime, strings.Join(v, ",")) |
|||
default: |
|||
// empty |
|||
} |
|||
} |
|||
} |
|||
func check(err error) { |
|||
if err != nil { |
|||
log.Fatal(err) |
|||
} |
|||
} |
|||
func main() { |
|||
// create client |
|||
c := meetup.NewClient(&meetup.ClientOpts{APIKey: key}) |
|||
// get basic information for a particular group |
|||
const urlName = "Meetup-API-Testing" |
|||
groups, err := c.GroupByURLName([]string{urlName}) |
|||
check(err) |
|||
g := groups.Groups[0] |
|||
fmt.Printf("Basic information for the %q group:\n", g.URLName) |
|||
fmt.Printf(" ID : %d\n", g.ID) |
|||
fmt.Printf(" Member count : %d\n", g.MemberCount) |
|||
fmt.Printf(" Organizer : %s\n", g.Organizer.Name) |
|||
fmt.Println() |
|||
// get a list of upcoming events for this group |
|||
events, err := c.EventsByGroup(urlName, []string{meetup.EventUpcoming}, false) |
|||
check(err) |
|||
for _, event := range events.Events { |
|||
fmt.Printf("Upcoming events for the %q group\n", g.URLName) |
|||
fmt.Printf(" ID : %s\n", event.ID) |
|||
fmt.Printf(" Name : %s\n", event.Name) |
|||
fmt.Printf(" Link : %s\n", event.Link) |
|||
fmt.Printf(" Venue : %s\n", event.Venue.Name) |
|||
fmt.Println() |
|||
} |
|||
// create an event for this group |
|||
d := time.Date(2020, time.April, 1, 18, 0, 0, 0, time.UTC) |
|||
eventDate := strconv.FormatInt((d.UnixNano() / 1000000), 10) |
|||
event, err := c.CreateEvent(eventOptions, map[string][]string{ |
|||
meetup.GroupID: {strconv.Itoa(g.ID)}, |
|||
meetup.GroupURLName: {urlName}, |
|||
meetup.EventName: {"Test Meetup integration"}, |
|||
meetup.Description: {"This is an event test."}, |
|||
meetup.EventTime: {eventDate}, |
|||
}) |
|||
check(err) |
|||
fmt.Printf("The ID for the %q event is %s\n\n", event.Name, event.ID) |
|||
// delete the event just posted |
|||
err = c.DeleteEvent(event.ID) |
|||
check(err) |
|||
fmt.Printf("The %q event has been cancelled.\n", event.Name) |
|||
}</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |